MiniGUI 自定义控件教程4

接着上次的教程继续。上次介绍了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()来注销控件类,传入的参数是之类注册的控件类名字(字符串)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值