MiniGUI 自定义控件教程4

本文档是MiniGUI自定义控件教程的第四部分,主要讲解ButtonEx控件的具体实现。内容包括注册类、类变量、继承父类、功能实现和界面表现的实现。文中详细阐述了在MiniGUI中创建自定义控件需要注意的问题,如控件注册、类变量保存、消息处理、功能实现(如键盘输入、控件风格、通知码发送等)以及界面表现(如背景图片和图标图片的使用)。此外,还提到了图片格式和色深的知识,以及如何处理不同状态下的控件效果。

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

接着上次的教程继续。上次介绍了ButtonEx控件的设计,这次介绍ButtonEx的具体实现。这里我不打算说C语言的语法和简单的MiniGUI API调用,我就只说一些需要注意的问题。因为我认为这些才是大家真正需要了解的。

注册类

不管你是自己完全重新开始写控件类,还是继承现有的控件类。自己的控件类被外部程序使用前就必需要注册(通常是应用程序初始化的时候)。我目前还没深入看MiniGUI内部创建控件的过程。但是只有注册了的控件类,才能被CreateWindow()创建(自己外部写的控件只能通过CreateWindow来创建,能使用对话框模板的控件数据来创建):

BOOL RegisterButtonExControl (void)
{
        WNDCLASS BEXClass;
        
        … …
        
        // 填写控件类信息
        BEXClass.spClassName 	= CTRL_BUTTONEX;
        BEXClass.dwStyle		= WS_NONE;
        BEXClass.dwExStyle	= WS_EX_NONE;
        BEXClass.iBkColor		= PIXEL_lightwhite;
        BEXClass.hCursor     	= GetSystemCursor (IDC_HAND_POINT);
        BEXClass.WinProc 		= ButtonExProc;
        BEXClass.dwAddData 	= (DWORD)pCData;
        
        … …
        
        // 注册ButtonEx 类
        return RegisterWindowClass (&BEXClass);
        
}


还记得在教程2里提到的获取控件类信息的函数GetWindowClassInfo()吗。那里获取的信息正是你这里注册的信息。注意这里要把WNDCLASS的所有变量都填满,不然当应用程序程序使用你的控件时程序会出错的。填满好信息后,调用RegisterWindowClass()注册控件类。在控件使用前要进行注册,当控件使用完后(通常是应用程序退出前),就要注销之前注册的控件:

BOOL UnregisterButtonExControl (void)
{
        … …
        
        // 卸载ButtonEx 类
        return UnregisterWindowClass (CTRL_BUTTONEX);
}


调用UnregisterWindowClass()来注销控件类,传入的参数是之类注册的控件类名字(字符串)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值