实现一个windows窗口程序(win32程序)

实现过程

  1. 设计窗口
  2. 注册窗口
  3. 创建窗口
  4. 显示和更新窗口
  5. 通过循环取消息
  6. 处理消息(窗口过程)
#include <windows.h>
//底层实现窗口头文件

LRESULT CALLBACK WindowsProc1(
	HWND    hWnd,
	UINT    Msg,
	WPARAM  wParam,
	LPARAM  lParam
) {
	switch (Msg)
	{
	case WM_CLOSE:
	{
		DestroyWindow(hWnd);
		break;
	}
	case WM_DESTROY:
		PostQuitMessage(0);
		break;
	case WM_LBUTTONDOWN:
	{
		int x = LOWORD(lParam);
		int y = HIWORD(lParam);
		char buf[1024];
		wsprintf(buf,TEXT("坐标X=%d,坐标Y=%d"), x, y);
		MessageBox(hWnd, buf, TEXT("鼠标左键按下"), 0x00000000L);
		break;
	}
	case WM_PAINT:
	{
		PAINTSTRUCT ps;
		HDC hdc = BeginPaint(hWnd, &ps);
		TextOut(hdc, 300, 300, TEXT("HELLO"), strlen("HELLO"));
		EndPaint(hdc, &ps);
		break;
	}
	}
	return DefWindowProc(hWnd, Msg, wParam, lParam);
};


//程序入口函数
int WINAPI WinMain( 
	HINSTANCE hInstance, //应用程序实例句柄
	HINSTANCE hPrevInstance,//上一个应用程序句柄,参数一般为NULL
	LPSTR lpCmdLine,//char *argv[]
	int nShowCmd) //显示命令
{
	//1设计窗口
	//2注册窗口
	//3创建窗口
	//4显示和更新窗口
	//5通过循环取消息
	//6处理消息(窗口过程)

	//1设计窗口
	WNDCLASS wc;
	wc.cbClsExtra		= 0;//类的额外的内存
	wc.cbWndExtra		= 0;
	wc.hbrBackground	= (HBRUSH) GetStockObject(WHITE_BRUSH);
	wc.hCursor			= LoadCursor(NULL, IDC_HAND);
	wc.hIcon			= LoadIcon(NULL, IDI_ERROR);
	wc.hInstance		= hInstance;//应用程序实例句柄

	wc.lpfnWndProc		= WindowsProc1;//回调函数 窗口过程

	wc.lpszClassName = TEXT("WIN98");
	wc.lpszMenuName = NULL;
	wc.style = 0;
	//2注册窗口
	RegisterClass(&wc);
	//3创建窗口
	HWND hwnd= CreateWindow(wc.lpszClassName, TEXT("WINDOWS"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
	//4显示和更新窗口
	ShowWindow(hwnd, SW_SHOWNORMAL);
	UpdateWindow(hwnd);
	//5通过循环取消息
	MSG msg;
	while (1)
	{
		if (GetMessage(&msg, NULL, 0, 0)==FALSE)
		{
			break;
		}
		//翻译消息
		TranslateMessage(&msg);
		//分发消息
		DispatchMessage(&msg);
	}

	//6处理消息(窗口过程)


	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值