[cpp] view plain copy print?
/*以下为典型Windows窗口应用程序框架*/
// Win32 大多数API,包含在windows.h头文件中
#include <windows.h>
// 窗口函数声明
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
// 应用程序入口函数,参数由系统传入
int WINAPI WinMain(
HINSTANCE hInstance, // 程序实例句柄(线索)
HINSTANCE hPrevInstance, // 为保持与Win16兼容的句柄
LPSTR lpCmdLine, // 命令行参数
int nCmdShow // 初始化窗口显示方式
)
{
LPCTSTR lpszProviderClass = __TEXT("MyWndClass");
WNDCLASS WndClass; // 窗口类,可为WNDCLASS
MSG Msg; // Windows 消息
HWND hWnd; // 窗口句柄
// 窗口类的定义
WndClass.style = CS_HREDRAW|CS_VREDRAW; // 窗口类型
WndClass.lpfnWndProc = (WNDPROC)WndProc; // 指定窗口处理函数
WndClass.cbClsExtra = NULL; // 窗口类无扩展
WndClass.cbWndExtra = NULL; // 窗口实例无扩展
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 = lpszProviderClass; // 窗口类名
// 注册窗口类
if(!RegisterClass(&WndClass))
{
MessageBeep(0); // 如注册失败则发出警告
return FALSE;
}
// 创建窗口
hWnd = CreateWindow(
lpszProviderClass, // 注册的窗口类名
__TEXT("Hello Windows!"), // 窗口标题名
WS_OVERLAPPEDWINDOW, // 窗口的风格
CW_USEDEFAULT, // 窗口左上角的X坐标,取默认值
CW_USEDEFAULT, // 窗口左上角的Y坐标,取默认值
CW_USEDEFAULT, // 窗口右下角的X坐标,取默认值
CW_USEDEFAULT, // 窗口右下角的Y坐标,取默认值
NULL, // 此窗口无父窗口
NULL, // 菜单句柄(此处无)
hInstance, // 程序实例句柄
NULL // 指向一个传递给窗口的指针型参数,此处设置为空
);
if(!hWnd) // 创建窗口失败,返回FALSE
{
return FALSE;
}
ShowWindow(hWnd, nCmdShow); // 显示窗口
UpdateWindow(hWnd); // 刷新窗口
// 消息循环
while(GetMessage(&Msg, NULL, 0, 0))
{
TranslateMessage(&Msg); // 翻译消息
DispatchMessage(&Msg); // 将消息传递给处理函数
}
return Msg.wParam; // 返回消息的附加参数
}
// 消息处理函数,每当有与本窗口相关的用户交互时,系统调用此回调函数进行处理
LRESULT CALLBACK WndProc(
HWND hWnd, // 窗口句柄
UINT nMessage, // 接受到的待处理的消息ID
WPARAM wParam, // 消息附参数
LPARAM lParam // 消息附参数
)
{
switch(nMessage)
{
// 处理用户感兴趣的消息
// 响应WM_CREATE消息
case WM_CREATE:
MessageBox(hWnd, __TEXT("收到WM_CREATE消息!"), __TEXT("通知"), MB_OK);
break;
// 响应WM_LBUTTONDOWN消息
case WM_LBUTTONDOWN:
MessageBox(hWnd, __TEXT("收到WM_LBUTTONDOWN消息!"), __TEXT("通知"), MB_OK);
break;
// 响应WM_CHAR消息
case WM_CHAR:
TCHAR buffer[30];
wsprintf(buffer, __TEXT("你刚才按下了%c键!"), wParam);
MessageBox(hWnd, buffer, __TEXT("通知"), MB_OK);
break;
// 响应WM_DESTROY消息
case WM_DESTROY:
PostQuitMessage(0); // 发出WM_QUIT消息退出
break;
// 调用系统默认处理函数DefWindowProc()
default:
return DefWindowProc(hWnd,nMessage,wParam,lParam);
}
return FALSE; // 用户处理后返回,将控制权交由系统。
}
最简单的windows 程序
最新推荐文章于 2023-06-03 13:11:06 发布