Affichage avec API Windows

PunkDude424 Messages postés 117 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 24 avril 2006 - 6 déc. 2004 à 01:02
PunkDude424 Messages postés 117 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 24 avril 2006 - 7 déc. 2004 à 19:20
Bon j'ai un problème avec l'affichage à l'aide de L'api win32

Je suis débutant en la matière et j'ai le problème suivant.

J'ai une application client serveur....

voici le main de l'application....je cherche a créé une fenetre dans le main...et jai une class clientDlg qui hérite de client et je voudrais quelle crée une fenetre child quelle va mettre dans le fenetre principal

voici le code
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT("ClientServeurMail");
HWND hwnd;
MSG msg;
WNDCLASS wndclass ;
instance = hInstance;

wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;

if (!RegisterClass (&wndclass))
{
MessageBox (NULL, TEXT ("Ce programme nécessite Windows NT !"),
szAppName, MB_ICONERROR) ;
return 0 ;
}

hwnd = CreateWindow (szAppName, // nom de la classe
TEXT ("Client Mail"), // titre de la fenêtre
WS_OVERLAPPEDWINDOW, // style de la fenêtre
CW_USEDEFAULT, // position initiale en x
CW_USEDEFAULT, // position initiale en y
M_WNDWIDTH, // largeur initiale
M_WNDHEIGHT, // hauteur initiale
NULL, // handle de la fenêtre mère
NULL, // handle du menu de la fenêtre
hInstance, // handle de l'instance
NULL) ; // paramètres de création

ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;

while(GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}

return msg.wParam;
}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_CREATE :
{
clientDlg = new CClientPopDlg(hwnd, M_WNDWIDTH/2, M_WNDHEIGHT, 0, 0, instance);
return 0 ;
}
case WM_DESTROY :
{
PostQuitMessage(0) ;
return 0 ;
}
case WM_SETFONT:
return 0;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}

et voici le constructeur de ClientDlg

CClientPopDlg::CClientPopDlg(HWND hwndParent, int width, int height, int posX, int posY, HINSTANCE hInstance)
: CClientPop("pop.videotron.ca", "vlgplffe", "verbatim")
{
hwndP = hwndParent;
WNDCLASS wndclass ;
TCHAR szAppName[] = TEXT("CLIENTDLG");

wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;

if(!RegisterClass(&wndclass))
return;

hwnd = CreateWindow (szAppName, // nom de la classe
"", // titre de la fenêtre
WS_CHILD, // style de la fenêtre
posX, // position initiale en x
posY, // position initiale en y
width, // largeur initiale
height, // hauteur initiale
hwndP, // handle de la fenêtre mère
(HMENU)ID_EDITBOX, // handle du menu de la fenêtre
hInstance, // handle de l'instance
NULL) ; // paramètres de création

ShowWindow (hwnd, SW_SHOW) ;
UpdateWindow (hwnd) ;
}

Je souhaiterais que mon application crée une fenetre et que clientDlg soit un editbox pour pouvoir écrire certaine information que la classe client retourne.....mais je voudrais avoir une WindowProc pour le main et un windowproc pour clientdlg.....je ne veux pas tout traiter dans le main.....quelquun peut maider?? je suis completement melé!!

Merci!!!!

5 réponses

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
6 déc. 2004 à 11:14
Salut,
Pour ajouter un editbox à ta fenêtre tu n'as pas besoin de tout cela. Il suffit de créer un EDIT avec la fonction CreateWindow pendant le traitement du message WM_CREATE:
HWND hEdit;
hEdit=CreateWindow(EDIT,0,WS_CHILD | WS_VISIBLE ,posx,posy,largeur,hauteur,hwndParent,0,0,0);

hwndParent est le HWND de la fenêtre mère
Tu manipuleras cet editbox grâce à son HWND hEdit. Pour le multiligne tu ajoutes le style ES_MULTILINE, pour la touche ENTREE tu ajoutes ES_WANTRETURN. J'espère que cela correspond à ce que tu cherches.
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
6 déc. 2004 à 11:36
Pourquoi tu ne veux pas tout mettre dans WindowProc? C'est plutôt pratique.
0
PunkDude424 Messages postés 117 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 24 avril 2006
6 déc. 2004 à 18:29
Ben comme tu me le ditje sais que sa fonctionne mnais justement tout est dans le windowproc du main...et je ne veux pas cela pcq sa deviens trop chargé....avoir un windowproc avec plein de switch et de if ....j'aimerais mieux séparé le traitement.....
0
PunkDude424 Messages postés 117 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 24 avril 2006
6 déc. 2004 à 18:58
...pour pouvoir avoir un code plus réutilisable et pouvoir ajouter "clientDlg" dans nimporte quelle application sans tout recoder opur le traitement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PunkDude424 Messages postés 117 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 24 avril 2006
7 déc. 2004 à 19:20
personne peut maider ????
0
Rejoignez-nous