Child - Fenster
-
Kann mir einer erklären, wieso dass das Childfenster nicht angezeigt wird ???
#include <windows.h> const char pAppName[] = "Research"; // Die beiden Window - Prozeduren long __stdcall WndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam); long __stdcall RectProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam); int __stdcall WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR lpCmdLine,int nShowCmd){ MSG msg; // Das Hauptfenster WNDCLASSEX wc = {0}; wc.cbSize = sizeof(WNDCLASSEX); wc.lpszClassName = pAppName; wc.hInstance = hInst; wc.style = CS_HREDRAW|CS_VREDRAW|CS_OWNDC; wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); wc.lpfnWndProc = &WndProc; RegisterClassEx(&wc); HWND hWnd = CreateWindowEx(0,pAppName,pAppName,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,800,600,0,0,hInst,0); // Das Cildfenster, welches ein Rechteck zeichen sollte WNDCLASSEX rc = {0}; wc.cbSize = sizeof(WNDCLASSEX); wc.lpszClassName = "Rect"; wc.hInstance = hInst; wc.style = CS_HREDRAW|CS_VREDRAW|CS_OWNDC; wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wc.lpfnWndProc = &RectProc; RegisterClassEx(&rc); HWND hRectWnd = CreateWindowEx(0,"Rect","Rect",WS_CHILD,0,0,100,100,hWnd,0,hInst,0); // Beide Fenster anzeigen ShowWindow(hWnd,nShowCmd); UpdateWindow(hWnd); ShowWindow(hRectWnd,SW_SHOW); UpdateWindow(hRectWnd); // Die Nachrichtenschleife while(GetMessage(&msg,0,0,0)){ TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } long __stdcall WndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam){ switch(uMsg){ case WM_PAINT: ValidateRect(hWnd,0); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; default: return DefWindowProc(hWnd,uMsg,wParam,lParam); } } long __stdcall RectProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam){ static PAINTSTRUCT ps; switch(uMsg){ case WM_PAINT: BeginPaint(hWnd,&ps); Rectangle(ps.hdc,0,0,50,50); EndPaint(hWnd,&ps); return 0; default: return DefWindowProc(hWnd,uMsg,wParam,lParam); } }
Ich habe da auch noch ein zwei andere Fragen, denn das eine oder andere kommt mir schon noch etwas komisch vor !
1. Muss ich "wc" bzw. "rc" nicht irgendwo unregistrieren, wenn das Fenster nicht mehr benötigt wird ???
2. Wie kann ich das Childfenster zerstören, PostQuitMessage(0) ist wohl keine so gute Idee, möglicherweise PostMessage(hRectWnd,WM_QUIT,0,0) ?
Ich danke euch schon im voraus !
Gruss Ishildur
-
WENN DU DAS FENSTER ERST ZWISCHEN DIE TITTEN EINER GEILEN HURE STECKST, DANN GEHTS!!!
-
SORRY WAR NICHT SO GEMEINT!!!
-
[cpp]
wc.lpfnWndProc = &RectProc;
RegisterClassEx(&rc);[/cpp]Gesehen?
1. Muss ich "wc" bzw. "rc" nicht irgendwo unregistrieren, wenn das Fenster nicht mehr benötigt wird ???
Nein, mußt Du nicht. Wichtig ist das dann, wenn Du Klassen in Dlls registrierst und diese vorzeitig entlädst (die Dlls).
2. Wie kann ich das Childfenster zerstören, PostQuitMessage(0) ist wohl keine so gute Idee, möglicherweise PostMessage(hRectWnd,WM_QUIT,0,0) ?
DestroyWindow(hWndRect);
-
Aua !!! Ich Idiot !!!
Ich habe in der zweiten WNDCLASSEX überall wc anstatt rc geschrieben !!! So, mit rc funktionierts nun einwandfrei !!!Danke vielmal, hei WinApi macht ja Laune !!!