您的位置:首页 > 其它

[WinAPI] API 4 [注册][创建][消息][第一个框架类窗口]

2014-03-06 01:55 218 查看
[b]首先注册了窗口类,然后创建了一个窗口,创建窗口时指定的窗口的属性和窗口消息的处理函数。[/b][b]函数消息的处理函数大多调用系统默认函数来处理。[/b]

#include<windows.h>

/*全局变量*/
HINSTANCE hinst;

/*函数声明*/
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int);
LRESULT CALLBACK MainWndProc(HWND,UINT,WPARAM,LPARAM);

/*显示一个窗口*/
int WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
WNDCLASSEX wcx;//窗口类
HWND hwnd;//窗口句柄
MSG msg;//消息
BOOL fGotMessage;//是否获取消息
hinst=hInstance;//应用程序实例句柄,保存为全局变量
//填充窗口的数据结构
wcx.cbSize=sizeof(wcx);//结构体的大小
wcx.style=CS_HREDRAW | CS_VREDRAW;//样式:大小改变时重绘界面
wcx.lpfnWndProc=MainWndProc;//消息处理函数
wcx.cbClsExtra=0;//不使用类内存
wcx.cbWndExtra=0;//不使用窗口内存
wcx.hInstance=hInstance;//所属应用程序的实例句柄
wcx.hIcon=LoadIcon(NULL,IDI_APPLICATION);//图标:默认
wcx.hCursor=LoadCursor(NULL,IDC_ARROW);//光标:默认
wcx.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//背景:白色
wcx.lpszMenuName=NULL;//菜单:不使用
wcx.lpszClassName="MainWClass";//窗口类名
wcx.hIconSm=(HICON)LoadImage(hInstance,
MAKEINTRESOURCE(5),
IMAGE_ICON,
GetSystemMetrics(SM_CXSMICON),
GetSystemMetrics(SM_CYSMICON),
LR_DEFAULTCOLOR);

//注册窗口类
if(!RegisterClassEx(&wcx))
{
MessageBox(NULL,TEXT("注册窗口失败"),NULL,MB_OK);
return 1;
}

//创建窗口
hwnd=CreateWindow(
"MainWClass",//window name
"CH 2-3",//window title
WS_OVERLAPPEDWINDOW,//窗口样式
CW_USEDEFAULT,//水平位置X:默认
CW_USEDEFAULT,//水平位置Y:默认
CW_USEDEFAULT,//width:默认
CW_USEDEFAULT,//high:默认
(HWND)NULL,//父窗口:无
(HMENU)NULL,//菜单:使用窗口类的菜单
hInstance,//应用程序实例句柄
(LPVOID)NULL);//窗口创建时数据:无

if(!hwnd)
{
MessageBox(NULL,TEXT("创建窗口失败"),NULL,MB_OK);
return 1;
}
//显示窗口
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
//消息循环
while((fGotMessage=GetMessage(&msg,(HWND)NULL,0,0))!=0 && fGotMessage!=-1)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
/*MainWndProc****************************
*消息处理函数
*对所有消息采取默认处理函数
*****************************************/
LRESULT CALLBACK MainWndProc(HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch(uMsg)
{
case WM_DESTROY:
ExitThread(0);
return 0;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: