windows程序设计(11)初探控件

本文介绍了控件的基本概念,强调控件本质上是窗口,并探讨了如何自定义控件。主要内容包括创建并注册窗口、处理点击事件以及利用Windows系统提供的功能。文中还通过示例程序解释了不同类型的按钮及其消息处理,如BS_OWNERDRAW和WM_COMMAND消息,以及如何通过SetWindowText和ShowWindow等函数改变控件状态。
摘要由CSDN通过智能技术生成

什么是控件呢?简单的说,控件的其实就是一个个窗口(如果不是窗口,怎么能或得鼠标点击或者空格键的消息呢)。所以理论上,我们也可以不使用windows自带的控件,而自己动手写一个当做控件用的窗口。那么我们大概需要做一下几件事情:

1.创建并注册这个窗口。

2.通过前面的雷区翻盖程序,我们可以想到:控件每次点击不同的相应,应该是就是贴图的效果,所以对于每次点击窗口,需要贴图。

3.建立一个数据结构,记录控件是否被选中。

而windos系统,自动帮我们完成了后两件事情,当我们使用控件时,只需要注册窗口就行了。
让我们先看一段程序:

#include <windows.h>

struct
{	     
	int	iStyle ;

	TCHAR *	    szText ;
}

button[] =

{

	BS_PUSHBUTTON,			TEXT ("下压按钮"),

	BS_DEFPUSHBUTTON,		TEXT ("默认下压按钮"),
	//该复选框需要程序员给它发出消息才能被选中
	BS_CHECKBOX,			TEXT ("复选框"),
	//自动复选框
	BS_AUTOCHECKBOX,		TEXT ("自动复选框"),

	BS_RADIOBUTTON,			TEXT ("单选按钮"),

	BS_3STATE,				TEXT ("3状态复选框"),

	BS_AUTO3STATE,			TEXT ("自动3状态复选框"),
							
	//既不处理鼠标键盘输入,也不向父窗口发送WM_COMMAND消息,用来包含其他控制按钮
	BS_GROUPBOX,			TEXT ("分组框"),

	BS_AUTORADIOBUTTON,		TEXT ("自动单选按钮"),
	//自绘按钮
	BS_OWNERDRAW,			TEXT ("OWNERDRAW")

} ;

//总控件数
#define NUM (sizeof button / sizeof button[0])

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)
{

	static TCHAR szAppName[] = TEXT ("BtnLook") ;

	HWND			hwnd ;

	MSG				msg ;

	WNDCLASS		wndclass ;

   

	wndclass.style				= CS_HREDRAW | CS_VREDRAW ;

	wndclass.lpfnWndProc		= WndProc ;

	wndclass.cbClsExtra			= 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值