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

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

被折叠的 条评论
为什么被折叠?



