#include <windows.h>
#include <tchar.h>
//消息处理函数
LRESULT CALLBACK WndProc(HWND hWnd, UINT msgId, WPARAM wParam, LPARAM IParam)
{
switch (msgId)
{
case WM_CLOSE:
case WM_DESTROY:
{
//当用户关闭窗口,窗口销毁,程序需结束,发退出消息,以退出消息循环
PostQuitMessage(0);
}
break;
default:
//其他消息交给由系统提供的缺省处理函数
return DefWindowProc(hWnd, msgId, wParam, IParam);
}
return 0;
}
///应用程序主函数
//CALLBACK等价于 __stdcall 标准调用
int CALLBACK WinMain(HINSTANCE hInstance, //应用程序实例的句柄
HINSTANCE hPrevInstance, //前一个实例的句柄谁创建了或调用了exe
LPSTR lpCmdLine, //命令行参数
int nShowCmd) //窗口显示隐藏的命令
{
//1 定制"窗口类"结构
WNDCLASS wndclass;
memset(&wndclass, 0, sizeof(wndclass));
//wndclass.cbSize = sizeof(wndclass);
wndclass.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC | CS_DBLCLKS;
wndclass.lpfnWndProc = WndProc;//关联消息处理函数,告诉操作系统,如果有事件发生调用这个函数
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;//实例句柄
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);//图标
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);//光标样式
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//画刷
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = _T("lesson01");//窗口类的名称,操作系统根据类的名称做映射
//2 将这个窗体注册(告诉)到操作系统
RegisterClass(&wndclass);
//3 创建窗口
HWND hWnd = CreateWindowEx(
0 //窗口的扩展风格
, _T("lesson01") //窗口类的名称,必须和上面的lpszClassName一致
,_T("lesson标题") //窗口的标题
,WS_OVERLAPPEDWINDOW //窗口的风格
,100 //屏幕位置
,100
,400 //宽高
,320
,0 //系统菜单
,0 //父窗口
,hInstance
,0 //用户数据
);
//4 更新显示
if (hWnd)
{
UpdateWindow(hWnd);
ShowWindow(hWnd,SW_SHOW);
}
MSG msg = { 0 };
//消息循环
while (WM_QUIT != msg.message)
{
//如果没有消息,这里会阻塞
//返回值为false,就是点了关闭按钮
//第一个参数用来接收message结构的,第二个参数是 窗口
//第三个和第四个是要过滤消息的范围,都为0 就是接收所有的消息,不为0就是接收范围内的消息
if (GetMessage(&msg, 0, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return 0;
}
C++ WinMain创建一个空白窗体
猜你喜欢
转载自blog.csdn.net/m0_37981386/article/details/86585717
今日推荐
周排行