Window SDK编程中,如何样建立多个窗口,并独立处理每个窗口上的消息
Window SDK编程中,怎么样建立多个窗口,并独立处理每个窗口上的消息。
大家说怎么样做呢?请帮我修改代码。
我想建立多个窗口。然后可以调出来用。每个窗口上的控件都独立每个窗口上的消息。大家说怎么样做呢?
#include <windows.h>
LRESULT CALLBACK WinSunProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
WNDCLASS wndclass;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hbrBackground=(HBRUSH)GetStockObject(SYSTEM_FONT);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hIcon=NULL;
wndclass.hInstance=hInstance;
wndclass.lpfnWndProc=WinSunProc;
wndclass.lpszClassName= "Windows ";
wndclass.lpszMenuName=NULL;
wndclass.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wndclass);
HWND hwnd;
hwnd=CreateWindow( "Windows ", "WindowsApp ",WS_OVERLAPPEDWINDOW,
0,0,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WinSunProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch(uMsg)
{
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}
------解决方案--------------------
不好意思,漏了一点,类名需要改动
wndclass.lpszClassName= "Windows2 ";
wndclass.lpfnWndProc=WinOtherProc;
RegisterClass(&wndclass);
hwnd=CreateWindow( "Windows2 ", "Second Window ",WS_OVERLAPPEDWINDOW,
0,0,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
大家说怎么样做呢?请帮我修改代码。
我想建立多个窗口。然后可以调出来用。每个窗口上的控件都独立每个窗口上的消息。大家说怎么样做呢?
#include <windows.h>
LRESULT CALLBACK WinSunProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
WNDCLASS wndclass;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hbrBackground=(HBRUSH)GetStockObject(SYSTEM_FONT);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hIcon=NULL;
wndclass.hInstance=hInstance;
wndclass.lpfnWndProc=WinSunProc;
wndclass.lpszClassName= "Windows ";
wndclass.lpszMenuName=NULL;
wndclass.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wndclass);
HWND hwnd;
hwnd=CreateWindow( "Windows ", "WindowsApp ",WS_OVERLAPPEDWINDOW,
0,0,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WinSunProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch(uMsg)
{
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}
------解决方案--------------------
不好意思,漏了一点,类名需要改动
wndclass.lpszClassName= "Windows2 ";
wndclass.lpfnWndProc=WinOtherProc;
RegisterClass(&wndclass);
hwnd=CreateWindow( "Windows2 ", "Second Window ",WS_OVERLAPPEDWINDOW,
0,0,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);