API Win32, fonction RegisterClass & RegisterClassEx
cs_bouba
Messages postés518Date d'inscriptiondimanche 2 décembre 2001StatutMembreDernière intervention10 novembre 2007
-
8 févr. 2003 à 15:59
cs_bouba
Messages postés518Date d'inscriptiondimanche 2 décembre 2001StatutMembreDernière intervention10 novembre 2007
-
9 févr. 2003 à 12:31
Bonjour, je débute en programmation Windows, je désire créer deux fenêtres, une étendue et une normal. Mais je renconre une erreur après avoir appelé la deuxième fonction RegisterClass ou RegisterClassEx. Voici mon code ce sera plus explicite.
int APIENTRY WinMain(HINSTANCE InstanceCourante, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
WNDCLASS wnd;
WNDCLASSEX wndEx;
MSG msg;
HWND FenetreText,FenetreParent;
if(!RegisterClassEx(&wndEx))
{
MessageBoxEx(NULL,"Error Registering wndEx Class!","Error",MB_OK|MB_ICONERROR,0x040c);
return false;
}
//Voila, ici ce message d'erreur s'affiche, je ne comprends vraiment pas pourquoi !
Ce problème se pose aussi si j'inverse l'ordre des définitions des structures wndEx et wnd ainsi que les appels de RegisterClassEx et RegisterClass dans ce cas c'est wnd qui pose un problème.
Voila, merci de m'expliquer pourquoi j'ai une telle erreur a l'execution du prog et comment éviter ceci ?
Bouba
cs_Kaid
Messages postés949Date d'inscriptionmardi 2 octobre 2001StatutMembreDernière intervention 8 juillet 20061 8 févr. 2003 à 17:40
Salut,
Pour commencer, la méthode RegisterClass() est une fonction obsolète, dépréciée par la fonction RegisterClassEx(). Donc pas la peine d'utiliser les deux fonctions, seule RegisterClassEx() suffit.
Ensuite, si l'enregistrement de ta deuxième classe ne fonctionne pas, c'est parce que tu donnes le même nom ("Texteditor") aux deux classes, nom qui doit être unique.
Mais je vois pas bien ce que tu veux faire, pourquoi deux fenêtres aux caractèristiques identiques ?
cs_vieuxLion
Messages postés455Date d'inscriptionsamedi 26 octobre 2002StatutMembreDernière intervention 6 avril 20048 8 févr. 2003 à 17:45
Normalement on utilise RegisterClass(Ex) une seule fois par application.
Tu dois confondre Classe de Fenêtre (une struct) et Fenêtre
il est recommandé d'enregistrer une Classe de fenêtre pour que l'OS associe les messages concernant ta fenêtre à la WindowProcedure déclarée dans la WndClass
Il est possible alors de créer plusieurs fenêtres de la même classe
En tous cas, n'enregistre JAMAIS dans Windows deux classes ayant le même nom (ex : TextEditor)
TextEditorEx ?