Bonjour.
Dans mon WndProc, je ne comprend pas tout.
J'ai mis des commentaires et je souhaiterai savoir s'ils sont mauvais.
Aussi, mettre un break pour le "case WM_SYSCOMMAND", donc avant le default
ne me ferme pas ma fenêtre.
Pourquoi ?
Je voudrai savoir : WM_SYSCOMMAND reçoit quelque chose à la fermeture de ma
fenêtre ?
Si WndProc renvoie 0 (zéro), ça veut bien dire qu'on ignore l'évènement ?
Et DefWindowProc gère tout ce qu'on lui envoie *par défaut* quand on ne
souhaite pas le gérer ? Donc indispensable dans un programme quel qu'il soit
non ?
Un petit cours ou un lien me ferait le plus grand bien, merci :)
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg) // On regarde le message qui arrive.
{
case WM_KEYDOWN: // Touche appuyée.
switch(wParam)
{
case VK_ESCAPE:
PostQuitMessage(0); // Destruction de la fenêtre.
break;
};
break;
case WM_SIZE: // Redimensionnement de la fenêtre.
Resize(LOWORD(lParam),HIWORD(lParam));
break;
case WM_CLOSE: // Fermeture de la fenêtre.
PostQuitMessage(0);
break;
case WM_SYSCOMMAND : // Commande système.
switch (wParam)
{
case SC_SCREENSAVE: // Economiseur d'écran qui essaye de
démarrer.
return 0; // On gère cet évènement et on ne fait rien.
case SC_MONITORPOWER: // Moniteur qui rentre en mode veille.
return 0; // On gère cet évènement et on ne fait rien.
}
default: // Tous les messages non gérés...
return DefWindowProc(hWnd, uMsg, wParam, lParam); // ...on les envoie à
la fonction de gestion par défaut.
break;
}
return 0; // On renvoie 0.
}
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Vincent Burel
"Frédéri MIAILLE" wrote in message news:bmv53b$3ru$
Bonjour. Dans mon WndProc, je ne comprend pas tout. J'ai mis des commentaires et je souhaiterai savoir s'ils sont mauvais. Aussi, mettre un break pour le "case WM_SYSCOMMAND", donc avant le default ne me ferme pas ma fenêtre. Pourquoi ? Je voudrai savoir : WM_SYSCOMMAND reçoit quelque chose à la fermeture de
ma
fenêtre ? Si WndProc renvoie 0 (zéro), ça veut bien dire qu'on ignore l'évènement ?
ca dépend , regardez les doc sur les messages.
Et DefWindowProc gère tout ce qu'on lui envoie *par défaut* quand on ne souhaite pas le gérer ? Donc indispensable dans un programme quel qu'il
soit
non ?
indispensable dans un windows (créée avec CreateWindow) oui !
{ switch (uMsg) // On regarde le message qui arrive. { case WM_KEYDOWN: // Touche appuyée. switch(wParam) { case VK_ESCAPE: PostQuitMessage(0); // Destruction de la fenêtre.
non, il faut passer par WM_CLOSE ou WM_DESTROY
case WM_CLOSE: // Fermeture de la fenêtre. PostQuitMessage(0);
non, il faut appeler DestroyWindow ou passer par WM_DESTROY
ci dessous la callback minimale standart :
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) // On regarde le message qui arrive. { case WM_CREATE: return 0; case WM_CLOSE: case WM_DESTROY: PostQuitMessage(0) return 0; }
"Frédéri MIAILLE" <bobrangernospam@wanadoo.fr> wrote in message
news:bmv53b$3ru$1@news-reader2.wanadoo.fr...
Bonjour.
Dans mon WndProc, je ne comprend pas tout.
J'ai mis des commentaires et je souhaiterai savoir s'ils sont mauvais.
Aussi, mettre un break pour le "case WM_SYSCOMMAND", donc avant le default
ne me ferme pas ma fenêtre.
Pourquoi ?
Je voudrai savoir : WM_SYSCOMMAND reçoit quelque chose à la fermeture de
ma
fenêtre ?
Si WndProc renvoie 0 (zéro), ça veut bien dire qu'on ignore l'évènement ?
ca dépend , regardez les doc sur les messages.
Et DefWindowProc gère tout ce qu'on lui envoie *par défaut* quand on ne
souhaite pas le gérer ? Donc indispensable dans un programme quel qu'il
soit
non ?
indispensable dans un windows (créée avec CreateWindow) oui !
{
switch (uMsg) // On regarde le message qui arrive.
{
case WM_KEYDOWN: // Touche appuyée.
switch(wParam)
{
case VK_ESCAPE:
PostQuitMessage(0); // Destruction de la fenêtre.
non, il faut passer par WM_CLOSE ou WM_DESTROY
case WM_CLOSE: // Fermeture de la fenêtre.
PostQuitMessage(0);
non, il faut appeler DestroyWindow ou passer par WM_DESTROY
ci dessous la callback minimale standart :
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg) // On regarde le message qui arrive.
{
case WM_CREATE:
return 0;
case WM_CLOSE:
case WM_DESTROY:
PostQuitMessage(0)
return 0;
}
"Frédéri MIAILLE" wrote in message news:bmv53b$3ru$
Bonjour. Dans mon WndProc, je ne comprend pas tout. J'ai mis des commentaires et je souhaiterai savoir s'ils sont mauvais. Aussi, mettre un break pour le "case WM_SYSCOMMAND", donc avant le default ne me ferme pas ma fenêtre. Pourquoi ? Je voudrai savoir : WM_SYSCOMMAND reçoit quelque chose à la fermeture de
ma
fenêtre ? Si WndProc renvoie 0 (zéro), ça veut bien dire qu'on ignore l'évènement ?
ca dépend , regardez les doc sur les messages.
Et DefWindowProc gère tout ce qu'on lui envoie *par défaut* quand on ne souhaite pas le gérer ? Donc indispensable dans un programme quel qu'il
soit
non ?
indispensable dans un windows (créée avec CreateWindow) oui !
{ switch (uMsg) // On regarde le message qui arrive. { case WM_KEYDOWN: // Touche appuyée. switch(wParam) { case VK_ESCAPE: PostQuitMessage(0); // Destruction de la fenêtre.
non, il faut passer par WM_CLOSE ou WM_DESTROY
case WM_CLOSE: // Fermeture de la fenêtre. PostQuitMessage(0);
non, il faut appeler DestroyWindow ou passer par WM_DESTROY
ci dessous la callback minimale standart :
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) // On regarde le message qui arrive. { case WM_CREATE: return 0; case WM_CLOSE: case WM_DESTROY: PostQuitMessage(0) return 0; }
Et on ne teste pas "switch (wParam)" mais "switch(wParam & 0xFFF0)"
Et DefWindowProc gère tout ce qu'on lui envoie *par défaut* quand on ne souhaite pas le gérer ? Donc indispensable dans un programme quel qu'il soit non ?
Oui, elle appelle la WindowProc() que Windows a défini lors du RegisterClass()
Et les valeurs de retour dépendent des messages (cf doc)
(& WM_KEYDOWN ne se fait pas comme a dit Vincent) (& WM_CLOSE set à intercepter ou non la fermeture)
Frédéri MIAILLE wrote:
>Je voudrai savoir : WM_SYSCOMMAND reçoit quelque chose à la fermeture de
ma fenêtre ?
Ben oui, SC_CLOSE (et SPY++ ?) et il faut gérer tous les autres SC_*,
donc on fait généralement ds le WM_SYSCOMMAND :
Et on ne teste pas "switch (wParam)" mais "switch(wParam & 0xFFF0)"
Et DefWindowProc gère tout ce qu'on lui envoie *par défaut* quand on ne
souhaite pas le gérer ? Donc indispensable dans un programme quel qu'il soit
non ?
Oui, elle appelle la WindowProc() que Windows a défini lors du
RegisterClass()
Et les valeurs de retour dépendent des messages (cf doc)
(& WM_KEYDOWN ne se fait pas comme a dit Vincent)
(& WM_CLOSE set à intercepter ou non la fermeture)
Et on ne teste pas "switch (wParam)" mais "switch(wParam & 0xFFF0)"
Et DefWindowProc gère tout ce qu'on lui envoie *par défaut* quand on ne souhaite pas le gérer ? Donc indispensable dans un programme quel qu'il soit non ?
Oui, elle appelle la WindowProc() que Windows a défini lors du RegisterClass()
Et les valeurs de retour dépendent des messages (cf doc)
(& WM_KEYDOWN ne se fait pas comme a dit Vincent) (& WM_CLOSE set à intercepter ou non la fermeture)