#include "stdafx.h"
#include <windows.h>
#include <tchar.h>
//回调函数
LRESULT CALLBACK windowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {
switch (msg)
{
case WM_SIZE:
break;
case WM_CLOSE:
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
break;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
// 当前实例的指针(句柄) 上一个实例的指针(句柄) 命令行(给这个exe传递的信息) 是否显示窗口
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
//1 注册窗口类
::WNDCLASSEXA winClass;
winClass.lpszClassName ="Raster" ;//*
winClass.cbSize = sizeof(::WNDCLASSEX);
winClass.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC | CS_DBLCLKS;
winClass.lpfnWndProc = windowProc;//*回到函数的指针
winClass.hInstance = hInstance;
winClass.hIcon = 0;
winClass.hIconSm = 0;
winClass.hCursor = LoadCursor(NULL, IDC_ARROW);
winClass.hbrBackground=(HBRUSH)(BLACK_BRUSH);
winClass.lpszMenuName = NULL;
winClass.cbClsExtra = 0;
winClass.cbWndExtra = 0;
RegisterClassExA(&winClass);
//2 创建窗口
//返回的窗口句柄
HWND hWnd = CreateWindowExA(
NULL,
"Raster",//更具注册的名称找到注册窗口类的数据
"Raster",//窗口的标题
WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,//窗口的风格
0,//位置
0,
480,//宽高
320,
0,//菜单
0,//父窗口
hInstance,//句柄
0//用户自定义的变量
);
UpdateWindow(hWnd);//更新窗口
ShowWindow(hWnd, SW_SHOW);//显示窗口
//window 消息循环
MSG msg = { 0 };
while (true)
{
if (msg.message == WM_DESTROY
|| msg.message == WM_CLOSE
|| msg.message == WM_QUIT)
{
break;
}
//从队列中查看是否有消息 消息在window中为数字 这是是设置消息的最大值,最小值,全是0,默认是所有
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
TranslateMessage(&msg);//解释消息
DispatchMessage((&msg));//分发消息
}
}
return 0;
}
如果这个异常提示:LNK2019 无法解析的外部符号 _main,该符号在函数 "int __cdecl invoke_main(void)"...
打开项目属性,找到C/C++ -->预处理器 -->预处理器定义 添加_WINDOWS
打开项目属性,找到连接器 -->系统 -->子系统 选择窗口(/SUBSYSTEM:WINDOWS)