//Windows窗口头文件 #include <windows.h> //窗口宽度 #define WINDOW_WIDTH 800 //窗口高度
#define WINDOW_HEIGHT 600 //窗口标题 #define WINDOW_TITLE L"【游戏开发】自定义游戏窗口" //窗口过程函数
LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam
); //主函数 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR
lpCmdLine, int nShowCmd) { //定义窗口类 WNDCLASSEX wndClass = { 0 }; //结构体的字节数大小
wndClass.cbSize = sizeof( WNDCLASSEX ) ; //窗口的样式 wndClass.style = CS_HREDRAW |
CS_VREDRAW; //指向窗口过程函数的指针 wndClass.lpfnWndProc = WndProc; //窗口类的附加内存,取0
wndClass.cbClsExtra = 0; //窗口的附加内存,依然取0 wndClass.cbWndExtra = 0; //窗口过程的程序的实例句柄
wndClass.hInstance = hInstance; //ico图标
wndClass.hIcon=(HICON)::LoadImage(NULL,L"天龙八部图标.ico",IMAGE_ICON,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE);
//光标句柄 wndClass.hCursor = LoadCursor( NULL, IDC_ARROW ); //画刷句柄
wndClass.hbrBackground=(HBRUSH)CreateSolidBrush(RGB(255,255,255)); //指定菜单资源的名字
wndClass.lpszMenuName = NULL; //指定窗口类的名字 wndClass.lpszClassName = L"TWJDWQ";
//注册窗口类 if( !RegisterClassEx( &wndClass ) ) return -1; //创建窗口 HWND hwnd =
CreateWindow( L"TWJDWQ",WINDOW_TITLE, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,
CW_USEDEFAULT, WINDOW_WIDTH, WINDOW_HEIGHT, NULL, NULL, hInstance, NULL );
//窗口显示的位置 MoveWindow(hwnd,250,80,WINDOW_WIDTH,WINDOW_HEIGHT,true); //显示窗口
ShowWindow( hwnd, nShowCmd ); //更新窗口 UpdateWindow(hwnd); //定义并初始化msg MSG msg =
{ 0 }; //消息循环 while( msg.message != WM_QUIT ) { //查看并派发消息 if( PeekMessage(
&msg, 0, 0, 0, PM_REMOVE ) ) { //将虚拟键消息转换为字符消息 TranslateMessage( &msg );
//捕捉消息给窗口 DispatchMessage( &msg ); } } //注销窗口类 UnregisterClass(L"TWJDWQ",
wndClass.hInstance); return 0; } //处理窗口消息 LRESULT CALLBACK WndProc( HWND hwnd,
UINT message, WPARAM wParam, LPARAM lParam ) { switch( message ) { //绘制 case
WM_PAINT: ValidateRect(hwnd, NULL); break; //按键 case WM_KEYDOWN:
//按键为ESC,销毁窗口,并发送一条WM_DESTROY消息 if (wParam == VK_ESCAPE) DestroyWindow(hwnd);
break; //销毁 case WM_DESTROY: //请求终止,并发送一条WM_DESTROY消息 PostQuitMessage( 0 );
break; //缺省 default: return DefWindowProc( hwnd, message, wParam, lParam ); }
return 0; }


 

WNDCLASSEX结构体:

第一个参数:结构体的字节大小。

第二个参数:窗口的样式。



第三个参数:指向窗口过程函数的指针。

第四个参数:窗口类附加内存。

第五个参数:窗口的附加内存。

第六个参数:当前窗口的实例句柄。

第七个参数:图标。

第八个参数:光标。

第九个参数:背景画刷。

第十个参数:指定菜单资源,如下拉菜单编辑、保存、载入等。

第十一个参数:窗口类的名字。

第十二个参数:窗口类的小图标,任务栏右下角托盘中应用程序显示的小图标。忽略不写。

 

CreateWindow函数:

第一个参数:窗口类的名称。

第二个参数:窗口的名称。

第三个参数:窗口样式。WS_OVERLAPPEDWINDOW代表的窗口类型:有标题栏、系统菜单、可调的边框以及最大化、最小化的窗口样式。



第四个参数:窗口的水平位置。

第五个参数:窗口的竖直位置。

第六个参数:窗口宽度。

第七个参数:窗口高度。

第八个参数:被创建窗口的父窗口句柄。

第九个参数:窗口菜单资源句柄。

第十个参数:窗口所属的应用程序实例的句柄。

第十一个参数:在MFC程序中创建多文档界面时会用到。

 

MoveWindow函数:

第一个参数:窗口句柄。

第二个参数:水平位置。

第三个参数:竖直位置。

第四个参数:窗口宽度。

第五个参数:窗口高度。

第六个参数:在消息处理函数中收到WM_PAINT消息时是否重绘。

 

ShowWindow函数:

第一个参数:窗口句柄。

第二个参数:窗口的显示状态。