Windows程序设计学习(2)

本文介绍了一个Windows程序的基本开发流程,包括窗口类的定义、窗口过程函数的实现、窗口的创建与显示,以及消息队列的处理。通过具体的代码示例,深入浅出地解释了如何构建简单的Windows应用程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个Windows程序的开发步骤

#include <windows.h>
//1.窗口类需要一个窗口过程,所以先声明一个窗口过程函数
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain( __in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in LPSTR lpCmdLine, __in int nShowCmd )
{
	static TCHAR app_name[] = TEXT("HelloWin");
	
	//2.注册一个窗口类
	WNDCLASS wndclass =
		{
			CS_HREDRAW | CS_VREDRAW,
			WndProc,
			0,
			0,
			hInstance,
			LoadIcon(nullptr, IDI_APPLICATION),
			LoadCursor(nullptr, IDC_ARROW),
			(HBRUSH)GetStockObject(WHITE_BRUSH),
			nullptr,
			app_name
		};
	if(!RegisterClass(&wndclass))
	{
		return 0;
	}

	//3.创建窗口并显示
	HWND hwnd = CreateWindow(app_name, TEXT("The First Window"),
							 WS_OVERLAPPEDWINDOW,
							 CW_USEDEFAULT,
							 CW_USEDEFAULT,
							 CW_USEDEFAULT,
							 CW_USEDEFAULT,
							 nullptr,
							 nullptr,
							 hInstance,
							 nullptr);
	ShowWindow(hwnd, nShowCmd);
	UpdateWindow(hwnd);

	//4.循环消息队列
	MSG msg; //消息结构
	while(GetMessage(&msg, nullptr, 0, 0))
	{
		TranslateMessage(&msg);//转换某些键盘消息
		DispatchMessage(&msg); //将消息发送给窗口过程
	}

	return msg.wParam;

}

//5.窗口过程
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	HDC hdc;
	PAINTSTRUCT ps;//绘图结构
	RECT rect;
	switch(message)
	{
	case WM_CREATE:
		//PlaySound(TEXT("hellowin.wav"), nullptr, SND_FILENAME|SND_ASYNC);
		return 0;
	case WM_PAINT:
		{
			hdc = BeginPaint(hwnd, &ps);
			GetClientRect(hwnd, &rect);
			DrawText(hdc, TEXT("Hello, Windows7!"), -1, &rect, DT_CENTER | DT_SINGLELINE | DT_VCENTER);
			EndPaint(hwnd, &ps);
			return 0;
		}
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}

	return DefWindowProc(hwnd, message, wParam, lParam);
}

 

转载于:https://www.cnblogs.com/neking/archive/2012/05/25/2518734.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值