//WinMain 程序
#include <windows.h>
#include <stdio.h>
/**********************************************
* 窗口过程函数的声明
* WinSunProc 是函数名 可以随便起 但要有意义
**********************************************/
LRESULT CALLBACK WinSunProc(
HWND hwnd, // 窗口句柄
UINT uMsg, // 消息代码
WPARAM wParam, // 消息代码的两个附加参数
LPARAM lparam
);
/***********************************************
WinMain 函数 主函数、入口函数
LP long point 长指针
窗口的创建过程:
1.设计一个窗口类
2.注册窗口类
3.创建窗口
4.显示及更新窗口
***********************************************/
int WINAPI WinMain(
HINSTANCE hInstance, // 当前运行的实例句柄
HINSTANCE hPrevInstance, // 当前实例的前一个实例句柄
LPSTR lpCmdLine, // 以空终止的字符串
int nCmdShow // 窗口显示 最大/小化 隐藏
)
{
// 设计一个窗口类
WNDCLASS wndcls; // WNDCLASS 是一个结构体 包含窗口的各项特征
wndcls.cbClsExtra = 0;
wndcls.cbWndExtra = 0;
wndcls.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); // 背景画刷句柄
wndcls.hCursor = LoadCursor(NULL , IDC_CROSS); // 光标句柄
wndcls.hIcon = LoadIcon(NULL , IDI_ERROR); // 图标句柄
wndcls.hInstance = hInstance; // 实例句柄
wndcls.lpfnWndProc = WinSunProc; // 指针函数 指向窗口过程函数
wndcls.lpszClassName = "xiaobei2017"; // 窗口类的名字
wndcls.lpszMenuName = NULL; // 菜单资源的名字
wndcls.style = CS_HREDRAW | CS_VREDRAW; // style指的窗口的样式
// 注册窗口类
RegisterClass(&wndcls);
// 创建窗口
/* CreateWindow函数用来创建窗口
* 第一个参数是窗口类的名字 跟上面要对应
* 第二个参数是窗口的名字
* 第三个参数是窗口的类型
* 第四五个参数是窗口左上角的坐标
* 第六七个参数是窗口的长和宽
* 第八个是副窗口句柄 只有一个窗口就设置成NULL
* 第九个是菜单句柄 没有菜单就设置成NULL
* 第十个是实例句柄 hInstance
* 第十一个参数暂时用不上 后面再介绍
*/
HWND hwnd;
hwnd = CreateWindow("xiaobei2017","翼佳奕",
WS_OVERLAPPEDWINDOW,200,200,600,400,NULL,NULL,hInstance,NULL);
// 显示及刷新窗口
/* ShowWindow函数是用来显示窗口
* 第一个参数是窗口句柄
* 第二个参数是窗口的显示状态SW_SHOWNORMAL是激活窗口并显示
*/
ShowWindow(hwnd , SW_SHOWNORMAL);
UpdateWindow (hwnd); // 更新窗口 参数是窗口句柄 (可有可无)
// 定义消息结构体 ,开始消息循环
// 消息循环就是不断地从消息队列中取出信息并响应
/* GetMessage函数就是从消息队列中取出信息
* 第一个参数是指向消息结构体
* 第二个参数指定接收哪个窗口的消息 通常默认为NULL
* 第三四个参数是获取消息的最小值和最大值 通常为0 接收所有消息
*/
// TranslateMessage 函数是将虚拟键消息转换为字符消息
// DispatchMessage 是将消息回传给操作系统
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
/**********************************************
* 窗口过程函数
* WinSunProc 是函数名 可以随便起 但要有意义
**********************************************/
LRESULT CALLBACK WinSunProc(
HWND hwnd, // 窗口句柄
UINT uMsg, // 消息代码
WPARAM wParam, // 消息代码的两个附加参数
LPARAM lparam
)
{
switch(uMsg)
{
case WM_CHAR: // WM_CHAR
char szChar[20];
sprintf(szChar,"输入的字符是%d",wParam);
MessageBox(hwnd,szChar,"char",0);
break;
/* MessageBox 函数是用来弹出消息框
* 第一个参数是当前窗口的窗口句柄
* 第二个参数是消息显示的文本
* 第三个参数是消息框的标题
* 第四个参数是消息框的类型 0代表MB_OK 就是按键
*/
case WM_LBUTTONDOWN://鼠标左键按下的标志
MessageBox(hwnd,"mouse clicked","message",0);
HDC hdc;
hdc = GetDC(hwnd);
TextOut(hdc,0,30,"科技大学",strlen("科技大学"));
ReleaseDC(hwnd,hdc);
break;
case WM_PAINT: //窗口重绘
HDC hDc;
PAINTSTRUCT ps;
hDc = BeginPaint(hwnd,&ps);
TextOut(hDc,0,0,"机械工程学院",strlen("机械工程学院"));
EndPaint(hwnd,&ps);
break;
case WM_CLOSE: // 窗口关闭
if (IDYES == MessageBox(hwnd,"是否真的结束?","message",MB_YESNO))
{
DestroyWindow(hwnd); // 销毁一个窗口
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lparam);
}
return 0;
}
通过WinMain函数创建窗口
最新推荐文章于 2022-06-30 11:56:34 发布