windows api
用windows API实现一个自定义窗口也需要这么一大堆最基本的程序框架:
#include <windows.h>
static LPCTSTR lpszAPPName = "windows API 窗口示例";//窗口名称
HBRUSH hBlueBrush, hRedBrush;//画刷句柄
//响应消息的回调函数
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
//程序的入口
int APIENTRY WinMain(Hinstance hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
MSG msg;//消息结构
WNDCLASS wc;//窗口类型结构
HWND hWnd;//窗口句柄
//创建蓝色和红色画刷用以填充操作
hBlueBrush = CreateSolidBrush(RGB(0, 0, 255));
hRedBrush = CreateSolidBrush(RGB(255, 0, 0));
//定义窗口类型
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = (WNDPROC)WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = NULL;
wc.hCursor = LoadCursor(NULL, IDC_HAND);
//使用蓝色画刷填充窗口背景
wc.hbrBackground = hBlueBrush;
wc.lpszMenuName = NULL;
wc.lpszClassName = lpszAppName;
//注册该窗口类型
if (RegisterClass(&wc) == 0)
return false;
//创建应用程序主窗口
hWnd = createwindow(
lpszAppName,
lpszAppName,
WS_overlapPEDWINDOW,
100, 100,
550, 550,
NULL,
NULL,
hInstance,
NULL
);
//如果窗口创建失败,退出程序
if (hWnd == NULL)
return false;
//显示窗口
ShowWindow(hWnd, SW_SHOW);
UpdateWindow(hWnd);
//启动消息循环,直到窗口被关闭
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
//分发消息至相应的窗口的消息处理回调函数
DispatchMessage(&msg);
}
//程序结束前释放GDI资源
DeleteObject(hBlueBrush);
DeleteObject(hRedBrush);
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
switch (message) {
//程序结束
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_PAINT: {
PAINTstruct ps;
HBRUSH hOldBrush;
//开始绘图
BeginPaint(hWnd, &ps);
//选用红色刷为当前画刷
hOldBrush = HBRUSH(SelectObject(ps.hdc, hRedBrush));
//绘制一个矩形,用当前的红色画刷填充背景
Rectangle(ps.hdc, 100, 100, 300, 300);
//恢复以前的画刷状态
SelectObject(ps.hdc, hOldBrush);
//结束绘制
EndPaint(hWnd, &ps);
}
break;
default://将未处理的消息交与Windows默认的处理函数处理
return(DefWindowProc(hWnd, message, wParam, lParam));
}
return(0L);
}
相关阅读
直接运行 Ctrl Shift R 清空缓存同时刷新浏览器页面 Win + 放大镜放大 Win - 放大镜缩小 Win 方向键 调整当前窗口到对应方向
个人独立博客程序有很多,这里只介绍WordPress、Typecho、Zblog等PHP博客程序。 一、WordPress 程序的功能全,插件多,主题
近日,小云商户小程序开发平台V2.0版、小云商户电商版小程序开发平台V2.0版上线,新版本增加礼品卡功能、移动管理和第三方托管等服务
【转】15款最佳的MySQL管理工具和应用程序@TOC工欲善其事,必先利其器。几乎每个开发人员都有最钟爱的 MySQL 管理工具,它帮助开发人
RoseHA for Windows配合Oracle11g安装后简单测试
1、安装好后,软件界面显示两台服务器ZR-PC和ZR-PC1的状态(ZR-PC为主控制机器)2、右击ZR-PC1,点击带入,启动ZR-PC1上的Oracle监听程序