#include <windows.h>
//窗口处理函数
//CALLBACK 调用约定
LRESULT CALLBACK WindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
//窗口程序的入口函数WinMain
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPSTR lpCmdLine, int nCmdshow)
{
//int n = MessageBox(NULL,L"Hello World",L"第一个窗口程序",MB_OK|MB_ICONERROR);
//API:应用程序编程接口 Application Interface
//windows api 函数
//SDK 软件开发包 Software Development Kit
//包含API函数库,帮助手册,辅助工具,使用文档
//什么是窗口,包含标题栏,菜单栏,系统菜单,最小化框,最大化框,滚动
//句柄
//窗口句柄,图标句柄,光标句柄,进程句柄,线程句柄
//typedef struct tagWNDCLASSW {
// UINT style;
// WNDPROC lpfnWndProc;
// int cbClsExtra;
// int cbWndExtra;
// HINSTANCE hInstance;
// HICON hIcon;
// HCURSOR hCursor;
// HBRUSH hbrBackground;
// LPCWSTR lpszMenuName;
// LPCWSTR lpszClassName;
//} WNDCLASSW, *PWNDCLASSW, NEAR *NPWNDCLASSW, FAR *LPWNDCLASSW;
//1.设计窗口类
wchar_t szAppClassName[255] = L"我的第一个窗口程序";
wchar_t szWindowsName[255] = L"我是大帅比";
WNDCLASS wc;
wc.style = CS_HREDRAW|CS_VREDRAW; //窗口类的风格
wc.lpfnWndProc = WindowProc; //窗口处理函数
wc.cbClsExtra = 0; //窗口类的额外扩展空间(字节)
wc.cbWndExtra = 0; //窗口的额外拓展空间大小(字节)
wc.hInstance = hInstance; //当前应用程序实例句柄
wc.hIcon = NULL; //窗口图标句柄 NULL无图标
wc.hCursor = NULL; //光标句柄
wc.hbrBackground = CreateSolidBrush(RGB(255,255,255)); //背景画刷
wc.lpszMenuName = NULL; //
wc.lpszClassName = szAppClassName; //窗口类型名
//2.注册窗口类
if (0 == RegisterClass(&wc))
{
MessageBox(NULL,L"注册失败!",L"温馨提示",MB_OK);
}
//3.创建窗口
HWND mywindow = CreateWindow(
szAppClassName, //窗口类型名
szWindowsName, //窗口的标题
WS_CAPTION | WS_SYSMENU | WS_MAXIMIZEBOX|WS_MINIMIZE, //窗口的风格
200, //窗口的x坐标
200, //窗口的y坐标
800, //窗口的宽
600, //窗口的高
NULL, //父窗口句柄
NULL, //菜单的句柄
hInstance, //应用程序实例句柄
NULL //创建的返回值
);
if (mywindow == NULL)
{
MessageBox(NULL, L"窗口创建失败!", L"温馨提示", MB_OK);
}
//4.显示窗口
ShowWindow(mywindow,SW_SHOW);
//5.更新窗口
UpdateWindow(mywindow);
//6.消息循环
// typedef struct tagMSG {
// HWND hwnd;
// UINT message;
// WPARAM wParam;
// LPARAM lParam;
// DWORD time;
// POINT pt;
//#ifdef _MAC
// DWORD lPrivate;
//#endif
// } MSG, *PMSG, NEAR *NPMSG, FAR *LPMSG;
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
//将虚拟键消息转为字符消息
TranslateMessage(&msg);
//将消息分发给窗口处理函数
DispatchMessage(&msg);
}
//msg.hwnd = mywindow; //消息发给哪一个窗口句柄
//msg.message = ; //消息编号
//msg.wParam = ; //附加信息
//msg.lParam = ; //附加信息
//msg.time = ; //消息投放到队列里面的时间
//msg.pt = ; //消息放入消息时鼠标的位置
}
//hwnd:窗口句柄,uMsg:消息编号 wParam:窗口附加信息 lParam: 窗口附加信息
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
return DefWindowProc(hwnd,uMsg,wParam,lParam);//操作系统默认处理消息的函数
}
Windows编程
最新推荐文章于 2024-01-22 10:11:08 发布