Bonjour a tous!
Je cherche à ajouter un bouton de controle à une boite de dialogue seulement si l'operateur appuie sur la touche "Ctrl" et je n'y arrive pas. Je cherche depuis un moment et j'ai rien trouver de valable.
Merci de vos reponses.
Version imprimable
Bonjour a tous!
Je cherche à ajouter un bouton de controle à une boite de dialogue seulement si l'operateur appuie sur la touche "Ctrl" et je n'y arrive pas. Je cherche depuis un moment et j'ai rien trouver de valable.
Merci de vos reponses.
Tu n'arrive pas à ajouter le contrôle ou tu n'arrives pas à détecter si la touche Ctrl est enfoncée ?
En fait j'aurais voulu savoir comment on peut rajouter a l'ouverture de ma boite de dialogue un bouton de controle seulement si ma touche Ctrl est enfoncée. Par contre si ma touche n'est pas enfoncée je ne dois pas visualilser ce bouton. Je pense que c'est dans le "initdialog()" que je dois le realiser mais je sais pas comment.Citation:
Envoyé par Médinoc
En MFC, je ne peux pas vraiment te dire.
En Win32, on crée le bouton avec CreateWindow() dans le traitement du message WM_INITDIALOG.
Sinon, il y a plus simple : Toujours créer le bouton, mais ne le rendre visible que si la touche Ctrl est pressée. Très facile.
PS: Pour savoir si une touche est actuellement enfoncée ou non, j'utilise GetAsyncKeyState().
"Sinon, il y a plus simple : Toujours créer le bouton, mais ne le rendre visible que si la touche Ctrl est pressée. Très facile."
C'est justement ca que j'aimerais bien faire mais je ne sais pas.
Tu le crées en invisible (dans ses propriétés si tu utilises l'éditeur de boîtes de dialogue) et tu fais ceci:
Code:
1
2
3
4
5 case WM_INITDIALOG: if(GetAsyncKeyState(VK_CONTROL) & 0x8000) { ShowWindow(GetDlgItem(hWnd, IDC_MONBOUTON), SW_SHOW); }
Code:
1
2
3
4
5
6
7
8
9
10 //[redéfinition (déclarée virtuelle dans CDialog)] BOOL CMaDialog::OnInitDialog() { if(::GetAsyncKeyState(VK_CONTROL) & 0x8000) { //En supposant que le bouton soit lié à m_monBouton // en tant que contrôle m_monBouton.ShowWindow(SW_SHOW); } }
Merci beaucoup!! C'était la fonction ShowWindow qu'il me manquait.
A bientot!