begin process at 2008 09 05 12:08:05
1 237 194 membres
151 nouveaux aujourd'hui
14 312 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : problème fenêtre cliente [ Archives / API ] (raoulman)

problème fenêtre cliente le 09/12/2004 03:33:51

raoulman
Bonjour,

J'ai un petit souci avec une fenêtre cliente et WM_PAINT, je m'explique.

Aujourd'hui, j'ai une fenêtre qui contient une fenêtre cliente dedans. Si je réduis la fenêtre mère et que je l'agrandis, je retrouve bien ma fenêtre fille.
Maintenant, si je mets un WM_PAINT, même sans code puisque je voudrais dessiner dans la fenêtre fille, que je réduis puis agrandis ma fenêtre mère, ma fenêtre fille a disparu! C'est pas sympa!

J'ai un UpdateWindow, j'ai essayé un RedrawWindow, un InvalidateRect, mais ça marche pas, sûrement que je les ai pas mis ou il fallait. Quelqu'un pourraît-il m'aider ? Voilà le code

#include <windows.h>

HWND case1;

LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

char szClassName[ ] = "WindowsApp";
char szClassName2[ ] = "Classe_case1";

int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)

{
HWND hwnd;
MSG messages;
WNDCLASSEX wincl;
WNDCLASSEX classe_case1;

wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure;
wincl.style = CS_DBLCLKS;
wincl.cbSize = sizeof (WNDCLASSEX);

wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL;
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

/* classe_case1 */

classe_case1.hInstance = hThisInstance;
classe_case1.lpszClassName = szClassName2;
classe_case1.lpfnWndProc = WindowProcedure;
classe_case1.style = CS_DBLCLKS;
classe_case1.cbSize = sizeof (WNDCLASSEX);

classe_case1.hIcon = LoadIcon (NULL, IDI_APPLICATION);
classe_case1.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
classe_case1.hCursor = LoadCursor (NULL, IDC_ARROW);
classe_case1.lpszMenuName = NULL;
classe_case1.cbClsExtra = 0;
classe_case1.cbWndExtra = 0;
classe_case1.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);

if (!RegisterClassEx (&wincl) || !RegisterClassEx (&classe_case1))
return 0;

hwnd = CreateWindowEx (0, szClassName, "test", WS_SYSMENU | WS_MINIMIZEBOX, 250, 150, 240, 260, HWND_DESKTOP, NULL, hThisInstance, NULL);

case1 = CreateWindowEx (WS_EX_CLIENTEDGE, zClassName2, NULL, WS_VISIBLE|WS_CHILD, 10, 10, 70, 70, hwnd, NULL, hThisInstance, NULL);

ShowWindow (hwnd, nFunsterStil);

UpdateWindow (hwnd);

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

return messages.wParam;
}

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{

switch (message)
{

case WM_DESTROY:

PostQuitMessage (0);

break;

case WM_CREATE :
break;

case WM_PAINT :
break;

default:
return DefWindowProc (hwnd, message, wParam, lParam);
}

return 0;
}

Re : problème fenêtre cliente le 09/12/2004 06:35:23

AlexMAN
Membre Club
Crée ta fenetre fille avec le style WS_EX_TOPMOST, et elle sera tjrs devant ta fenetre parent, comme ca, pas de pb ;)

++


+2(p - n)

Re : problème fenêtre cliente le 09/12/2004 08:52:25

ymca2003
Déjà évite de mettre la même WndProc pour la fenêtre mère et la fenêtre fille (cela t'évitera des problèmes inutiles). Ensuite, si tu traite le message WM_PAINT, il faut soit appeler ValidateRect soit faire BeginPainet et EndPaint dans le case WM_PAINT (sinon le message sera constament envoyé).

Re : problème fenêtre cliente le 09/12/2004 15:50:48

raoulman
WS_EX_TOPMOST ne fonctionne pas, ma fenêtre fille disparaît toujours.

Merci ymca2003, t'as trouvé mon problème! J'ai suivi ton conseil et j'ai crée une WndProc pour ma fenêtre fille, maintenant, je n'ai plus de problèmes lors de la réduction / agrandissement ou superpositions de fenêtres.

Pour BegainPaint et EndPaint, je les avais enlevés pour essayer de trouver ce qui empêchait l'affichage de la fenêtre cliente

Merci à tous les deux



Classé sous : wincl, classe, fenêtre, hwnd, case1

Participer à cet échange

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
SITE MARCHAND LOCATION...
Budget : 3 000€
SITE MARCHAND POUR HOTEL
Budget : 4 000€

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Boutique

Boutique de goodies CodeS-SourceS