必威体育Betway必威体育官网
当前位置:首页 > IT技术

Windows API编程——最简单的窗口程序框架示例

时间:2019-08-27 01:13:19来源:IT技术作者:seo实验室小编阅读:86次「手机版」
 

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);
}

相关阅读

windows常用快捷键

直接运行 Ctrl Shift R 清空缓存同时刷新浏览器页面 Win + 放大镜放大 Win - 放大镜缩小 Win 方向键 调整当前窗口到对应方向

个人搭建独立博客,哪个程序比较好用

  个人独立博客程序有很多,这里只介绍WordPress、Typecho、Zblog等PHP博客程序。 一、WordPress     程序的功能全,插件多,主题

小云小程序三大新功能:礼品卡、移动管理和托管

近日,小云商户小程序开发平台V2.0版、小云商户电商版小程序开发平台V2.0版上线,新版本增加礼品卡功能、移动管理和第三方托管等服务

15款最佳的MySQL管理工具和应用程序

【转】15款最佳的MySQL管理工具和应用程序@TOC工欲善其事,必先利其器。几乎每个开发人员都有最钟爱的 MySQL 管理工具,它帮助开发人

RoseHA for Windows配合Oracle11g安装后简单测试

1、安装好后,软件界面显示两台服务器ZR-PC和ZR-PC1的状态(ZR-PC为主控制机器)2、右击ZR-PC1,点击带入,启动ZR-PC1上的Oracle监听程序

分享到:

栏目导航

推荐阅读

热门阅读