IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

[Listbox] Plus de selection possible en plein �cran


Sujet :

MFC

  1. #1
    Membre chevronn�
    Inscrit en
    F�vrier 2008
    Messages
    413
    D�tails du profil
    Informations personnelles :
    �ge : 45

    Informations forums :
    Inscription : F�vrier 2008
    Messages : 413
    Par d�faut [Listbox] Plus de selection possible en plein �cran
    Bonjour,

    j'ai �crit la semaine derni�re car j'avais des probl�mes pour afficher une property page (d'une property sheet) en plein �cran. Depuis j'ai trouv� la solution...et d�couvert un nouveau probl�me:

    Ma property page contient diff�rents contr�les: checkboxes, radio-buttons, buttons, et une Listbox. Tous continuent � fonctionner normalement quand je suis en plein �cran...sauf la Listbox: il est toujours possible d'utiliser les fl�ches � droite pour faire d�filer la liste, mais impossible de s�lectionner quoi que ce soit. Les clics de souris ne sont pas enregistr�s, de m�me que les touches haut et bas du clavier, c'est comme si le contr�le �tait d�sactiv� (sauf que, comme dit, les fl�ches pour d�rouler la liste fonctionnent toujours, elles).

    J'ai essay� d'activer expicitement ce contr�le apr�s le passage en plein-�cran, mais ca ne change rien.

    J'ai aussi essay� de changer entre top, topmost et notopmost comme parametre pour ma property page en plein ecran, mais pareil, ca ne change rien.

    Pour info je mets le code que j'utilise pour passer en plein ecran:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    if(!m_fullscreen)
    {
    	m_fullscreen = true;
     
    	// 1. Replace current parent by the desktop window
    	// --------------------------------------------------------------
    	m_parentSave = this->GetParent();
    	this->SetParent(GetDesktopWindow());
     
    	// 2. Retrieve desktop "work area" (everything above the taskbar)
    	// --------------------------------------------------------------
    	CRect desktopRect;
    	SystemParametersInfo(SPI_GETWORKAREA,NULL,&desktopRect,NULL);
     
    	// 3. Maximize our dialog
    	// --------------------------------------------------------------
    	this->SetWindowPos(&wndTop, desktopRect.left, desktopRect.top,
    	                            desktopRect.right, desktopRect.bottom, 
    					SWP_SHOWWINDOW);
    	}
    Voil�, vous l'aurez compris je ne sais plus trop o� chercher donc vos id�es seront plus que bienvenues.

    Merci d'avance!

  2. #2
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 504
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 504
    Par d�faut
    Je pense que le probl�me vient de votre modification du parent de la fen�tre.

    La gestion d'un grand nombre d'�v�nement sur les contr�les est propag�e � la fen�tre parente qui, dans le cas des MFC g�n�re des �v�nements de notifications et de commandes.

    En modifiant le parent de votre property page, vous avez cass� le lien avec les routines dans les fen�tres parents.

    Si vous g�n�rez un CDC � partir du bureau, pourquoi changer de parent ?

  3. #3
    Membre chevronn�
    Inscrit en
    F�vrier 2008
    Messages
    413
    D�tails du profil
    Informations personnelles :
    �ge : 45

    Informations forums :
    Inscription : F�vrier 2008
    Messages : 413
    Par d�faut
    Bonjour bacelar, et merci pour votre r�ponse!

    Je pensais aussi que c'�tait forc�ment li� au changement de parent, mais sans vraiment comprendre pourquoi...votre r�ponse apporte les pr�cisions qui me manquaient!

    Si vous g�n�rez un CDC � partir du bureau, pourquoi changer de parent ?
    Euh je ne suis pas s�r de vous suivre. Je ne g�n�re pas de nouveau CDC, je change juste de parent pour �viter que ma fen�tre soit clipp�e quand je veux la faire passer en plein �cran.

    Je vais voir si il y a moyen de passer en plein �cran sans changer de parent, peut �tre en changeant temporairement le type de ma fen�tre de "child" � "popup"... Je ne sais pas je ne suis pas vraiment un expert en MFC, mais j'ai r�cup�r� un vieux projet � mettre � jour alors faut bien s'y mettre

    En tout cas si qq'un sait comment faire du plein �cran sans changer de parent, votre avis est le bienvenu!

  4. #4
    Membre chevronn�
    Inscrit en
    F�vrier 2008
    Messages
    413
    D�tails du profil
    Informations personnelles :
    �ge : 45

    Informations forums :
    Inscription : F�vrier 2008
    Messages : 413
    Par d�faut
    OK, cette fois c'est bon!

    vous m'aviez mis sur la piste bacelar, la doc msdn a fait le reste!

    Tir� de: http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx

    For compatibility reasons, SetParent does not modify the WS_CHILD or WS_POPUP window styles of the window whose parent is being changed. Therefore, if hWndNewParent is NULL, you should also clear the WS_CHILD bit and set the WS_POPUP style after calling SetParent. Conversely, if hWndNewParent is not NULL and the window was previously a child of the desktop, you should clear the WS_POPUP style and set the WS_CHILD style before calling SetParent.
    Du coup, j'utilise NULL � la place du desktop, et je change mon style en popup pour que les messages ne soient pas envoy�s au parent, comme ca:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    this->SetParent(NULL);
    this->ModifyStyle(WS_CHILD, WS_POPUP);
    ...et ca marche, enfin!

    Encore merci pour votre aide bacelar!

  5. #5
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 504
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 504
    Par d�faut
    Essayez de mettre vos contr�les dans une Vue, elle d�rive de CCmdTarget et pourra donc g�n�rer les WM_COMMAND et les router vers les autres objets de l'application.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. plein �cran plus disponible
    Par Infophile dans le forum Gnome
    R�ponses: 0
    Dernier message: 08/10/2010, 14h12
  2. Est-il toujours possible de basculer la console en plein �cran ?
    Par Alcat�z dans le forum Windows Vista
    R�ponses: 4
    Dernier message: 13/05/2007, 09h12
  3. Plein �cran IE6 personnalis� en JS: possible?
    Par PedroBD dans le forum G�n�ral JavaScript
    R�ponses: 9
    Dernier message: 28/08/2006, 14h06
  4. R�ponses: 4
    Dernier message: 28/05/2006, 18h01
  5. R�ponses: 17
    Dernier message: 17/10/2002, 20h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo