您的位置:首页 > 其它

创建一个win32窗口程序

2016-06-16 21:23 477 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: