win32 multiple winndows

i am trying to create a program for multiple windows. Here is my 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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#include<Windows.h>
// Store handles to the main window and application instance globally.
HWND ghFirstWnd =0;
HWND ghSecondWnd=0;
HWND ghThirdWnd=0;
HINSTANCE ghAppInst=0;
//========================================================================================
// WINDOW 1
// Step 1: Define and implement the window procedure.
LRESULT CALLBACK
WndProc1(HWND hWnd,UINT msg,WPARAM wParam, LPARAM lParam)
{
	switch(msg)
	{
	// Handle left mouse button click message.
	case WM_LBUTTONDOWN:
		MessageBox(0,L"first window ",L"MSG",MB_OK);
		return 0;
	// Handle key down message.
	case WM_KEYDOWN:
		if(wParam==VK_ESCAPE)
			if(MessageBox(hWnd,L"sure ??",L"confirmation",MB_YESNO)==IDYES)
				DestroyWindow(ghFirstWnd);
		return 0;
	// Handle destroy window message.
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return DefWindowProc(hWnd,msg,wParam,lParam);
}
//========================================================================================
// WINDOW 2
//========================================================================================
LRESULT CALLBACK
WndProc2(HWND hWnd,UINT msg, WPARAM wParam,LPARAM lParam)
{
	switch(msg)
	{
	case WM_LBUTTONDOWN:
		MessageBox(0,L"second window",L"msg",MB_OK);
		return 0;
	}
	return DefWindowProc(hWnd,msg,wParam,lParam);
}
//========================================================================================
// WINDOW 3
//========================================================================================
LRESULT CALLBACK
WndProc3(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
	switch(msg)
	{
	case WM_LBUTTONDOWN:
		MessageBox(0,L"third window",L"msg",MB_OK);
		return 0;
	}
	return DefWindowProc(hWnd,msg,wParam,lParam);
}
// WinMain: Entry point for windows application.
int WINAPI
WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR cmdLine,int showCmd)
{
	// Save handle to application instance.
	ghAppInst=hInstance;
	// Step 2: Fill out a WNDCLASS instance.
	WNDCLASS wc1;
	wc1.style   =CS_HREDRAW|CS_VREDRAW;
	wc1.lpfnWndProc =WndProc1;
	wc1.cbClsExtra=0;
	wc1.cbWndExtra=0;
	wc1.hInstance=ghAppInst;
	wc1.hIcon=::LoadIcon(0,IDI_APPLICATION);
	wc1.hCursor=::LoadCursor(0,IDC_ARROW);
	wc1.hbrBackground=(HBRUSH)::GetStockObject(WHITE_BRUSH);
	wc1.lpszMenuName=0;
	wc1.lpszClassName=L"first class";
	// Window 2
	WNDCLASS wc2;
	wc2.style=CS_HREDRAW|CS_VREDRAW;
	wc2.lpfnWndProc=WndProc2;
	wc2.cbClsExtra=0;
	wc2.cbWndExtra=0;
	wc2.hInstance=ghAppInst;
	wc2.hIcon=::LoadIcon(0,IDI_APPLICATION);
	wc2.hCursor=::LoadCursor(0,IDC_ARROW);
	wc2.hbrBackground=(HBRUSH)::GetStockObject(WHITE_BRUSH);
	wc2.lpszMenuName=0;
	wc2.lpszClassName=L"second class";
	// Window 3
	WNDCLASS wc3;
	wc3.style=CS_HREDRAW|CS_VREDRAW;
	wc3.lpfnWndProc=WndProc3;
	wc3.cbClsExtra=0;
	wc3.cbWndExtra=0;
	wc3.hInstance=ghAppInst;
	wc3.hIcon=::LoadIcon(0,IDI_APPLICATION);
	wc3.hCursor=::LoadCursor(0,IDC_ARROW);
	wc3.hbrBackground=(HBRUSH)::GetStockObject(WHITE_BRUSH);
	wc3.lpszMenuName=0;
	wc3.lpszClassName=L"third class";
	// Step 3: Register with WNDCLASS instance with windows.
	RegisterClass(&wc1);
	RegisterClass(&wc2);
	RegisterClass(&wc3);
	// Step 4: Create the window, and save the handle in global window handle variable ghMainWnd.
	ghFirstWnd=::CreateWindow(L"MyWndClassName",L"MyWindow1",WS_OVERLAPPEDWINDOW,0,0,50,50,0,0,ghAppInst,0);
	ghSecondWnd=::CreateWindow(L"MyWndClassName",L"MyWindow2",WS_OVERLAPPEDWINDOW,50,0,50,50,0,0,ghAppInst,0);
	ghThirdWnd=::CreateWindow(L"MyWndClassName",L"MyWindow3",WS_OVERLAPPEDWINDOW,100,0,50,50,0,0,ghAppInst,0);
	if(ghFirstWnd==0)
	{
		::MessageBox(0,L"create window1-failed",0,0);
		return false;
	}
	if(ghSecondWnd==0)
	{
		::MessageBox(0,L"create window2 failed",0,0);
		return false;
	}
	if(ghThirdWnd==0)
	{
		::MessageBox(0,L"create window3 failed",0,0);
		return false;
	}
	// Step 5: Show and update the window.
	ShowWindow(ghFirstWnd,showCmd);
	UpdateWindow(ghFirstWnd);
	ShowWindow(ghSecondWnd,showCmd);
	UpdateWindow(ghSecondWnd);
	ShowWindow(ghThirdWnd,showCmd);
	UpdateWindow(ghThirdWnd);
	// Step 6: Enter the message loop and don't quit until a WM_QUIT message is received.
	MSG msg;
	ZeroMemory(&msg,sizeof(MSG));
	while(GetMessage(&msg,0,0,0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	// Return exit code back to operating system.
	return(int)msg.wParam;
}

problem is when i try to execute the code it just say create window1- failed!!
ok i figured it out. changed MyWndClassName in CreateWindow to "first class" "second class" and "third class".
Topic archived. No new replies allowed.