Windows程序设计15:Win32窗口控件的创建与响应


前言

Windows程序设计15:Win32窗口控件的创建与响应。


一、控件的窗口类注册

1.说明

使用CreateWindow来创建窗口的时候要进行窗口类的注册。但是如果创建的是系统预定义的一些控件的时候,就不需要自己注册窗口类了,系统已经帮我们注册好了。例如:按钮为WC_BUTTON,编辑框为WC_EDIT,静态文本框为WC_STATIC等等。使用时要包含头文件:#include<commctrl.h>

控件的创建时机:控件最起码要等到父窗口创建完成之后才能在父窗口上创建各个子控件,因此在下面两个地方创建控件比较合适。
1.在WinMain函数中进行创建,即调用完CreateWindow函数创建父窗口之后,立即调用CreateWindow创建主窗口上面的子控件。
2.在调用CreateWindow创建主窗口返回之前,窗口函数会收到WM_CREATE消息。此时我们响应他的号召,继续创建各个子控件。!!!!!这种方法是常规的正常做法,后续也使用这种方法,建议大家使用这种做法。如下图所示
在这里插入图片描述
在回调函数的switch结构中判断消息号进行创建子控件。

2.使用示例

在父窗口上建立一个按钮窗口,代码如下

#include<windows.h>
#include<tchar.h>
# include<commctrl.h>

static TCHAR szWindowClass[] = _T("WindowClass");
static TCHAR szTitle[] = _T("窗口程序示例");

//第五步:窗口函数中处理窗口消息
//hwnd为窗口句柄;uMsg为消息号;wParam
LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
   
	PAINTSTRUCT ps;
	HDC hdc;
	TCHAR greeting[] = _T("各位晚上好");

	switch (uMsg)
	{
   
	case WM_CREATE:
	{
   
		INT IDC_BUTTON_1 = 200; // 定义该按钮的ID
		HWND hButtonWnd = CreateWindow(WC_BUTTON, _T("按钮示例"), WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE, 100, 100, 100, 50, hWnd, (HMENU)IDC_BUTTON_1, NULL, NULL); //创建 子控件
		break;
	}
	case WM_PAINT:
		hdc = BeginPaint(hWnd, &ps);
		TextOut(hdc, 5, 5, greeting, _tcslen(greeting));
		EndPaint(hWnd, &ps);
		break;
	case WM_DESTROY:
		PostQuitMessage(0);
		break;
	default:
		return DefWindowProc(hWnd, uMsg, wParam, lParam);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能与优化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值