Cacher une fenêtre lorsqu'elle s'affiche

Signaler
Messages postés
283
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
4 juillet 2007
-
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
Est-ce normal que ceci :

BOOL CALLBACK MainProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
switch(message) {
case WM_INITDIALOG:{
ShowWindow(hWnd, SW_HIDE);
etc...


ne marche pas ?

Là j'ai un peu modifié le script, normalement la fenêtre devrait se cacher que dans certains cas et puis je souhaiterais récupérer des messages de sockets (donc je ne peux pas différer l'ouverture de la fenêtre)

CyberP,
Celui qui dit que toute question a une réponse

11 réponses

Messages postés
283
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
4 juillet 2007
2
J'ai oublié de préciser, ce n'est pas une erreur de synthaxe mais c'est bien la fenêtre qui ne se cache pas

J'arrive bien à la cacher de la même façon quand on clique sur un bouton mais pas dans le INITDIALOG (et si je met un messagebox la ligne en dessous le messagebox s'affiche)

CyberP,
Celui qui dit que toute question a une réponse
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
#define PERSO_HIDE (WM_USER+1)

switch(message) {
case WM_INITDIALOG:
....
....
// EN DERNIER
PostMessage(hWnd, PERSO_HIDE, 0, 0);
return 1;
case PERSO_HIDE:
ShowWindow(hWnd, SW_HIDE);
return 0;
case ....:

Essaie cela, tu diras si ne va pas auquel cas je testerai.

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
bah non ton truc ne marche pas, c'est bizarre...
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
on peut mettre le ShowWindow dans WM_CTLCOLORDLG et la ca marche
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
ah bon, je vais donc tester, A++

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
OHE du bateau, je viens de perdre 5 minutes pour rien a faire un prog qui tourne exact comme prevu.
Pas une ligne a modifier a ce que j'avais mis. Je precise que ma dlgbox a bien le style visible de mis et j'ai du fermer avec taskmanager car est devenue illico invisible.

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
forcément, moi le style visible était false (c'est le style par défaut)
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
Faut toujours mettre a TRUE !!!
Laisse les defauts a ceux qui en ont...

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
D'accord. Cependant il y a un truc que ne comprends pas dans ta méthode: tu mets un PostMessage; qu'est ce qui assure que le message PERSO_HIDE n'est pas traité avant qu'on ait fini WM_INITDIALOG (même si c'est la dernière instruction)?
Messages postés
283
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
4 juillet 2007
2
Merci, la méthode de brunews fonctionne chez moi (même si ça fait un petit flash dû à la lenteur de mon pc)

CyberP,
Celui qui dit que toute question a une réponse
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
vecchio56> PostMessage est async, ne fait qu'empiler 4 params et retourne illico sans attendre le traitement. Comme c'est dans le meme thread, tu es assure de finir ce que tu as en cours avant de traiter le prochain message de la pile.

ciao...
BruNews, Admin CS, MVP Visual C++