Ik wil 3 Windows maken in een Windows Application,
ik krijg 3 schermen na voren alleen het probleem is dat het 3x het zelfde scherm is.
Ik heb zo een WNDCLASS gemaakt,
Zelf denk ik dat hier het probleem licht:
wc.lpszClassName = "base3";
Als ik voor allen 3 de schermen een anderen naam daar neer zet, dan lukt het window maken niet. Als ik dus base1 - 2 - 3 gebruik dan failt het maken van de windows.
Zo ziet een Create window er uit:
Je kan hier zien dat ik 3x verschilende namen gebruik, want zo denk ik dat ik het moet doen, maar ik krijg een error hier door. Zelfde class namen gebruiken krijg ik 3x het zelfde scherm.
Dus:
ghMainWnd geeft 0 terug als je 2 of meer verschilende lpszClassName hebt.
Ik heb geprobeerd om allen dingen van allen Windows apart te groeperen onder elkaar, alleen dit wil niet helpen
Dit is nog een WinProc:
Zou iemand me hier mee kunnen helpen? Ik heb nog geen oplossing op google kunnen vinden.
ik krijg 3 schermen na voren alleen het probleem is dat het 3x het zelfde scherm is.
edit:
Dit heb ik voor elkaar gekregen door 3x het zelfde lpszClassName te gebruiken, ik probeerde om deze 3x verschillend te maken alleen dan krijg ik een error.
Dit heb ik voor elkaar gekregen door 3x het zelfde lpszClassName te gebruiken, ik probeerde om deze 3x verschillend te maken alleen dan krijg ik een error.
Ik heb zo een WNDCLASS gemaakt,
code:
1
2
3
4
5
6
7
8
9
10
11
| WNDCLASS wc3; wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc3; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = ghAppInst3; wc.hIcon = ::LoadIcon(0, IDI_APPLICATION); wc.hCursor = ::LoadCursor(0, IDC_ARROW); wc.hbrBackground = (HBRUSH)::GetStockObject(WHITE_BRUSH); wc.lpszMenuName = 0; wc.lpszClassName = "base3"; |
Zelf denk ik dat hier het probleem licht:
wc.lpszClassName = "base3";
Als ik voor allen 3 de schermen een anderen naam daar neer zet, dan lukt het window maken niet. Als ik dus base1 - 2 - 3 gebruik dan failt het maken van de windows.
Zo ziet een Create window er uit:
code:
1
2
3
4
5
| ghMainWnd = ::CreateWindow("base", "window base", ( WS_OVERLAPPEDWINDOW | WS_HSCROLL | WS_CAPTION | WS_VSCROLL ), 0, 0, 500, 500, 0, 0, ghAppInst, 0); if(ghMainWnd == 0) { ::MessageBox(0, "CreateWindow - Failed", 0, 0); return false; } |
code:
1
2
3
4
5
| ghMainWnd2 = ::CreateWindow("base2", "window base", ( WS_OVERLAPPEDWINDOW | WS_HSCROLL | WS_CAPTION | WS_VSCROLL ), 0, 0, 500, 500, 0, 0, ghAppInst2, 0); if(ghMainWnd2 == 0) { ::MessageBox(0, "CreateWindow - Failed", 0, 0); return false; } |
Je kan hier zien dat ik 3x verschilende namen gebruik, want zo denk ik dat ik het moet doen, maar ik krijg een error hier door. Zelfde class namen gebruiken krijg ik 3x het zelfde scherm.
Dus:
ghMainWnd geeft 0 terug als je 2 of meer verschilende lpszClassName hebt.
Ik heb geprobeerd om allen dingen van allen Windows apart te groeperen onder elkaar, alleen dit wil niet helpen
Dit is nog een WinProc:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| LRESULT CALLBACK WndProc2(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch( msg ) { // Handle left mouse button click message. case WM_LBUTTONDOWN: MessageBox(0, "Window 2", "Msg", MB_OK); return 0; // Handle key down message. case WM_KEYDOWN: if( wParam == VK_ESCAPE ) if(MessageBox(0,"Weet u zeker dat u wilt stoppen?","Quite",MB_YESNO) == IDYES) { DestroyWindow(ghMainWnd2); } if ( wParam == VK_NUMPAD1) MessageBox(0,"1","Numpad", MB_OK); return 0; // Handle destroy window message. case WM_DESTROY: PostQuitMessage(0); return 0; } // Forward any other messages we didn't handle to the // default window procedure. return DefWindowProc(hWnd, msg, wParam, lParam); } |
Zou iemand me hier mee kunnen helpen? Ik heb nog geen oplossing op google kunnen vinden.
[ Voor 3% gewijzigd door lauwsa op 09-12-2010 14:08 ]