#include "stdafx.h"
2
HINSTANCE g_hInst=NULL;
3
//窗口处理函数
LRESULT CALLBACK WndProc(HWND hWnd,//窗口句柄
UINT nMsg,//窗口消息Id
WPARAM wParam,//消息传来的两个参数
LPARAM lParam)
{
switch(nMsg) //消息退出的命令
{
case WM_DESTROY:
PostQuitMessage(0); //使窗口退出
return 0;
}
//返回缺省的窗口处理函数
return DefWindowProc(hWnd,nMsg,wParam,lParam);
}
4
//注册窗口-首先使用WNDCLASSEX定义窗口类的各项参数
BOOL RegisterWnd(LPSTR pszClassName)
{
WNDCLASSEX wce ={0};
wce.cbSize =sizeof(wce);
wce.cbClsExtra =0;//窗口类的附加参数
wce.cbWndExtra =0;//窗口的附加参数
wce.hbrBackground =HBRUSH(COLOR_WINDOW);//窗口的背景画刷
wce.hCursor =NULL;//窗口的光标
wce.hIcon =NULL;//窗口的图标
wce.hIconSm =NULL;//窗口的小图标
wce.hInstance =g_hInst;//应用程序的实例句柄
wce.lpfnWndProc =WndProc;//窗口处理函数指针
wce.lpszClassName =pszClassName;//窗口类的名称
wce.lpszMenuName =NULL;//菜单名称
wce.style =CS_HREDRAW|CS_VREDRAW;//窗口风格
//注册窗口用RegisterClassEx,返回用ATOM
ATOM nAtom=RegisterClassEx(&wce);
if(0==nAtom)
{
return FALSE;//窗口注册没有成功
}
return TRUE;
}
5创建窗口
HWND CreateWnd(LPSTR pszClassName)
{
HWND hWnd=CreateWindowEx(0,//窗口的扩展风格
pszClassName,//窗口类的名称
"MyWnd",//窗口的标题
WS_OVERLAPPEDWINDOW,//窗口的堆叠风格
CW_USEDEFAULT,//窗口的坐标和长宽
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,//窗口的父窗口
NULL,//窗口的菜单
g_hInst,//应用程序句柄
NULL);//窗口创建时的附加参数
return hWnd;
}
6窗口的显示
void DisplayWnd(HWND hWnd)
{
ShowWindow(hWnd,SW_SHOW);//显示窗口
UpdateWindow(hWnd);//刷新窗口界面
}
7窗口的消息循环
void Message()
{
MSG msg={0};
while (GetMessage(&msg,NULL,0,0))//获取消息
{
TranslateMessage(&msg);//翻译消息
DispatchMessage(&msg);//调用窗口处理函数处理消息
}
}
1 新建时自动生成
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
将程序依次执行
g_hInst=hInstance;
RegisterWnd("MYWND");//注册窗口
HWND hWnd=CreateWnd("MYWND");//创建窗口
DisplayWnd(hWnd);//显示窗口
Message( );//执行消息循环
return 0;
}
创建一个win32窗口程序
最新推荐文章于 2024-04-21 16:52:54 发布