Win32应用程序

本文详细介绍如何使用Win32 API从头开始创建一个简单的Windows应用程序。包括编写WinMain函数,设计并注册窗口类,创建窗口,显示及更新窗口,编写消息循环和窗口过程函数。此外,还提供了处理常见消息如WM_CHAR、WM_LBUTTONDOWN、WM_PAINT等的示例代码。
摘要由CSDN通过智能技术生成

创建一个Win32应用程序的步骤。
1.编写WinMain函数,可以在MSDN上查找并复制。
2.设计窗口类(WNDCLASS)
3.注册窗口类。
4.创建窗口.
5.显示并更新窗口。
6.编写消息循环.
7.编写窗口过程函数。
窗口过程函数的语法,可通过MSDN查看WNDCLASS的IpfnWndProc成员变量,在这个成员的解释中可查到。

#include <Windows.h>
#include <stdio.h>

LRESULT CALLBACK WinSunProc(  
	HWND hwnd,   
	UINT uMsg,  
	WPARAM wParam, 
	LPARAM lParam ); 

int WINAPI WinMain(  
	HINSTANCE hInstance,
	HINSTANCE hPrevInstance, 
	LPSTR  lpCmdLine, 
	int nShowCmd )
{
	//设计窗口类
	WNDCLASS windclass;
	windclass.cbClsExtra = 0;
	windclass.cbWndExtra = 0;
	windclass.hbrBackground	= (HBRUSH)GetStockObject(BLACK_BRUSH);
	windclass.hCursor = LoadCursor(NULL,IDC_CROSS);
	windclass.hIcon = LoadCursor(NULL,IDI_ERROR);
	windclass.hInstance = hInstance;
	windclass.lpfnWndProc = WinSunProc;
	windclass.lpszClassName = "tips";
	windclass.lpszMenuName = NULL;
	windclass.style =CS_HREDRAW | CS_VREDRAW;
	RegisterClass(&windclass);
	//创建窗口,定义一个变量来保存成功创建窗口返回的句柄
	HWND hwnd;
	hwnd = CreateWindow("tips","阿良小测",WS_OVERLAPPEDWINDOW,0,0,600,400,NULL,NULL,hInstance,NULL);
	//显示及刷新窗口
	ShowWindow(hwnd,SW_SHOWNORMAL);
	UpdateWindow(hwnd);
	//定义消息结构体,开始消息循环
	MSG msg;
	while(GetMessage(&msg,NULL,0,0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return 0;
}
//编写窗口过程函数
LRESULT CALLBACK WinSunProc(  
	HWND hwnd,   
	UINT uMsg,  
	WPARAM wParam, 
	LPARAM lParam )
{
	switch (uMsg)
	{
	case WM_CHAR:
		char szchar[20];
		sprintf_s(szchar,"char is %d",wParam);
		MessageBox(hwnd,szchar,"windows",0);
		break;
	case  WM_LBUTTONDOWN:
		MessageBox(hwnd,"mouse clicked","windows",0);
		HDC hdc;
		hdc=GetDC(hwnd);   //不能响应WM_PAINT消息时调用
		TextOut(hdc,0,50,"第一个窗口",strlen("第一个窗口"));
		ReleaseDC(hwnd,hdc);
		break;
	case WM_PAINT:
		HDC hDc;
		PAINTSTRUCT ps;
		hDc = BeginPaint(hwnd,&ps);  //BeginPaint智能在响应WM_PAINT消息时调用
		TextOut(hDc,0,0,"培训",strlen("培训"));
		EndPaint(hwnd,&ps);
		break;
	case WM_CLOSE:
		if (IDYES == MessageBox(hwnd,"是否结束?","亲,请留步",MB_YESNO))
		{
			DestroyWindow(hwnd);
		}
		break;
	case WM_DESTROY:
		PostQuitMessage(0);
		break;
	default:
		return DefWindowProc(hwnd,uMsg,wParam,lParam);
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值