MiniGUI 自定义控件教程1

MiniGUI编程速查表 前言 自己学习MiniGui也快一年了,粗浅的学习了一下,本文是根据《MINIGUI-PROG-GUIDE-V3.0-C》中的内容整理而来,根据自己的理解做了一些分类,大部分都是一些函数的说明,方便自己以后学习MiniGui时查阅。现在分享出来,供大家一起学习。当然在学习的过程中也遇到过一些坑,像自定义控件,主窗口透明背景,窗口弹出动画啊,控件动画等等,有时间也会分享出来。 1 窗口的创... 阅读详情

前言:

MiniGUI 采用的机制是与win32十分类似的消息机制,基本上与win32的sdk一致。win32上经典的Framework MFC 采用的是C++,面向对象的方法,自定控件可以直接使用继承的方式,十分方便。MiniGUI 使用的是c语音,重所周知这是一个面向过程的语言。但是其实它也可以使用类似c++的面向对象的思想(详细的可以看一本叫做 《Object-Oriented Programming with ANSI-C》的书,具体的就不在这里研究了)。MiniGUI 本身自带的控件就是用c语言来模仿一些面向对象思想来实现的。

飞漫的编程指南上也提到了自定控件的方法。但是与其它的章节比起来篇幅太小了 -_-||。网上这方面的资料更是少得可怜,在csdn和pudn上我可以随便搜到MFC、VB、Dephi等自定义控件的例子,但是MiniGUI基本上就没看到。想当初自己研究,很费劲,走了不少弯路。现在总结了一些心得,希望开发定义控件的弟兄们少走些弯路。

一、自定控件的方法

MiniGUI  原有的控件用一个叫做 WNDCLASS 的来表示。从名字就可以看出了,飞漫把这玩意当类来对待了。不过c++(面向对象的语言相对来说本人对c++比较熟悉,就拿这个举例子了)里的自定义控件可都是子类化某个原有的控件类,然后写好类之后,实例化得到控件对象就可以使用了。

飞漫的编程指南里说到了3种方法:

1、对已经建立的控件实例进行子类化,子类化的结果只会影响这一个控件实例。 2、是对某个控件类进行子类化,将影响其后创建的所有该控件类的控件实例。 3、是在某个控件类的基础上新注册一个子类化的控件类,不会影响原有控件类。在 Windows 中,这种技术又称为超类化。

恕本人水平及理解能力有限,我目前只理解和使用了第1和第3种方法,第2种我愣是没明白怎么回事 -_-||。要是哪位兄弟理解了的,望留言或发email告诉我 ^_^。 那现在我就说说我理解了的这2种方法吧。

1、对已建立的控件进(实例)行子类化 MiniGUI 的控件就是一类特殊的子窗口,所以它们也有自己的过程处理函数 typedef int (* WNDPROC) (HWND, int, WPARAM, LPARAM) 。这种方式的实现其实就是替换掉已经创建了的控件原来的过程出来函数。这个函数其实是每个控件结构体变量里一个函数指针所指向的。通过函数指针指向不同的处理函数就能实现控件的不同功能已经不同的属性。再配合上每个控件的实例数据(后面再说这个东东),是不是有点像面向对象的感觉了呢 ^_^。

这种方法只会对你替换了过程处理函数的控件实例才生效。个人感觉比较适用的情况是:一个工程里,有好几个界面用到了同一个控件或者一个界面用到了好几个控件;但是这些控件都是和本工程关系比较紧密的,其他工程基本上用不到的。例如:一个项目里需要画N个直方图,这些直方图只是数据不一样而已,绘图方法基本一致;但是别的工程基本上用不到这个东西。其实这个用一个函数来实现也可以,让其传入绘图dc和相应的区域坐标就可以了。不过我感觉用函数这种方法没有封装成控件来得方便。1:函数使用的绘图相关的变量是和父窗口相关的,用起来不怎么方便。2:提供给工程里别的模块使用话,在MiniGUI这种gui编程中,封装成控件,使用消息机制更符合MiniGUI的编程方式。哎~~总之大家自己可以感受封装成控件的好处的,我表达能力有限,好像没怎么说清楚 -_-||。

不过这样弄有点点代价。就是MiniGUI的控件都有自己的数据结构变量,会稍微占有一些额外的资源,不过都能跑GUI的设备了,这些应该问题不大啦。

2、对控件类进行子类化 这种方法与上一种相比,应该算是更接近C++的自定义控件的方法。上一种是针对原有控件实例的,而这种是针对控件类了。是改动整了类,正如飞漫编程指南上写的,这种方法能影响到每一个创建的控件实例。 这种方法要是向MiniGUI 注册自己的类,然后自己设计控件数据(不是指GUI系统的调用的控件窗口数据(这些例如客户区、私有DC、托管窗口之类的),而是指保存控件某些行为的数据(例如ctrl_button里的BUTTONDATA这一些的数据))和过程处理函数。

这种方法我个人认为比较适用用于像扩展按钮(Button)、编辑框(Edit)、进度条(ProgressBar)之类的通用性比较强的控件。例如你觉得MiniGUI原来的Button不怎么好看,就可以自己弄一个,然后你写的所有工程都可以用你写的好看的Button来装饰了。

这里先介绍些理论的东西,之后再结合实际来讲解具体的方法。

参考资料:飞漫MiniGUI编程指南2.0.4


原始出处:飞漫wiki (原作者就是我)

MiniGui开发问题锦集 前言 本文记录了我学习MiniGui开发过程中遇到的一些有意思问题与解决方法,会随着我学习的深入慢慢的更新下去。文章中窗口指的是通过CreateMainWindow创建的窗口,控件是指CreateWindow或CreateWindowEx创建的控件。 1 创建透明背景窗口 方法一:窗口创建时,在界面的窗口过程函数里添加MSG_ERASEBKGND监听,什么也不画就是透明背景,这种方法有... 阅读详情

相关推荐

minigui 控件程序

minigui控件程序,通过控件来实现图片的切换。

miniGUI编译详细过程以及示例

miniGUIminiGUI下载编译过程 由于最近项目遇到GUI开发,需要用到miniGUI来完成。为什么不用QT?我也一直在疑惑。可能因为跑不动吧。不管了,下面是整个miniGUI编译成功的过程。 miniGUI下载 首先,miniGUI下载的话,去官网相当麻烦,因为官网将先下载一个minigui的核心库,然后是让你运行sh脚本让你去下载的,git最近一直被墙,实在无奈。所以我千辛万苦找到了所有的依赖库和文件,方便直接编译。 资源就在我的csdn资源里面,自己跳转下载哦,因为是放到板子跑,用的是miniG

lobmo的博客 2224

minigui自定义控件1

minigui自定义控件教程代码。一个简单的minigui自定义控件的例子。

创建MiniGUI自定义控件

创建MiniGUI自定义控件 include <STDIO.H>     #include <MINIGUI common.h>   #include <MINIGUI minigui.h>   #include <MINIGUI gdi.h>   #include <MINIGUI window.h>   #include <MINIGUI control.h>   #include <STRING.H>     #define _FLAT_WINDOW_STYLE       /************

hollyhock13的专栏 4174

MiniGUI学习的十几个经典例子,非常适合初学者

十几个MiniGUI学习的经典例子,都已经在FrameBuffer上面编译,运行通过,对于初学者是很好的资料!!

minigui自定义控件2

minigui自定义控件教程的代码。minigui一些简单的自定义控件例子。

minigui[基础篇][5]—— 控件与控件类

minigui手册阅读

qq_43601873的博客 1035

minigui综合示例代码

Minigui 的综合示例代码mde包,给大家分享一下

在miniGUI中增加自定义控件

本文转载于:http://www.minigui.org/cgi-bin/lb5000/topic.cgi?forum=25&topic=1514 本人初学MiniGUI,现将在miniGUI中增加自定义控件的学习心得整理出来。目的是抛砖引玉,共同提高。以增加一个Chart控件为例(目前我试验的此控件实际是一个复制的static控件). 一、命名规则:1. 预定义宏_CTRL_CHAR

杨哈哈的专栏 1345

嵌入式图形界面MiniGUI的示例程序9例

嵌入式图形界面MiniGUI的示例程序9例,很适合嵌入式MiniGui开发学习入门!!

苍穹外卖项目面试总结话术

美食速递这个项目最初是我参与制作的大创项目,是一款为中南学生提供校园外卖送至宿舍服务的软件,包含系统管理后台和小程序端两部分。其中系统管理后台主要提供给食堂内部员工使用,可以对食堂各个窗口、员工、订单、菜品等进行维护管理;小程序端可以在线浏览菜品、添加购物车、下单等,由学生兼职做跑腿送餐上门服务。这是个前后端分离的项目,我主要是负责后端的用户登录、员工管理,菜品管理,订单管理模块的编码实现。

qq_45195447的博客 1万+

MiniGUI 自定义控件教程2

控件功能确认 咋接着上次的教程继续。这次我们依托一个例子来说明如何使用MiniGUI中的第一种方法(也就是子类化已经创建的控件实例)。假设我们的例子是:某个学校的某个年级的某些班在某个时间搞了某次考试 -_-|| 。考试过后经老师研究决定把考试成绩按班为单位分成3个分数段:差、中等、好。现在咱们就要用MiniGUI来整一个统计图来直观的显示这个3个分数段的学生比例。但是有几个班就有几个统计图

mingming_killer的专栏 1878

PaddleOCR转ONNX模型实战:5分钟搞定中文OCR推理部署(附完整代码)

本文详细介绍了将PaddleOCR模型转换为ONNX格式并进行高效推理部署的完整实战方案。通过Paddle2ONNX工具实现模型转换,利用ONNX Runtime构建跨平台推理引擎,涵盖环境配置、模型优化、批量处理及多平台部署等关键步骤,显著提升中文OCR在边缘设备上的推理性能。

weixin_29051811的博客 616

MiniGUI 自定义控件教程3

接着上次的教程继续。之前介绍了子类化已有的控件实例的方法,现在介绍子类化类和完全自己重新开始写控件类的方法。这个2种区别就是:子类化类,其实就是OOP里的继承,继承一个已有的控件类,在其基础上作扩展。完全自己重新开始写控件类是我自己的叫法,可以理解为MFC(我个人对MFC相对来说熟悉些,就拿这个做类比了)里的继承自CObject。 这次先介绍完全自己重新开始写控件类的方法。这里我以我自己写的一个M

mingming_killer的专栏 3948

带有验证码的爆破(包含Burp suite工具爆破)

关于含有验证码爆破的一些总结!

weixin_43960066的博客 8692

FOFA奇技淫巧:从搜索语法到实战场景的深度挖掘

本文深入探讨了FOFA搜索语法在网络空间测绘中的高效应用,从基础语法到实战场景的深度挖掘。通过渗透测试、威胁狩猎、资产发现等实际案例,展示了如何利用FOFA精准定位目标系统、识别蜜罐、追踪威胁,并提供了合规使用指南和性能优化技巧,助力安全工作者提升效率。

weixin_32428571的博客 235

MiniGUI 自定义控件教程5

接着上次的教程继续。上次以ButtonEx控件的开发为例介绍了如果自己完全重新开始写控件,这次我以一个扩展单行编辑框控件为例介绍如何在原有控件的基础上扩展自定义功能(继承原有控件功能)。 一、功能确定 MiniGUI原来的单行编辑框控件CTRL_SLEdit除了具有编辑框的基本编辑功能外,就提供了一个限制输入字符长度的功能。没有类似MFC中CEdit限制输入类型,字符还是数

mingming_killer的专栏 1357

免费搞定DWG转DXF:ODA File Converter保姆级配置指南(附常见报错解决)

本文详细介绍了如何使用ODA File Converter免费工具实现DWG到DXF的格式转换,包括环境配置、命令行参数解析、编程集成方案及常见问题解决。特别针对网络访问异常、参数配置等实际痛点提供应对策略,帮助用户高效完成工程设计文件的格式转换。

weixin_29291185的博客 5996

MiniGUI 自定义控件教程7

接着上次的教程继续。这次给大家介绍的是界面美观的进度条控件。它功能上和MiniGUI原有的进度条控件(CTRL_PROGRESSBAR)是一样的(其实进度条也就是那些功能,哪还能整出别点什么花样哦)。 一、功能确定 1:要具有MiniGUI原有进度条控件的所有功能,像设置范围,设置步进值,设置当前位置等;垂直、水平风格;还有一些通知码。因为本控件的主要目的是美观,但是这要保

mingming_killer的专栏 1818

正点原子stm32f103RChal库制作数字秒表:如用keil5和正点原子STM32F1开发板实现?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!    📌 特别说明: 文中部分技术问题来源于真实生产环境及网络公开案例,均经过精挑细选与系统化整理,并结合多位一线资深架构师和工程师多年实战经验沉淀,提

**My Coding Family** 1264

【模型实战】MiMo-VL-7B讲解与实战

维度成绩MMMU70.6(图像理解最难测试之一)VideoMME70.8(视频理解标杆)59.4(超越78B参数模型)56.1(超过专用GUI模型)Elo评分开源VLM排名第一(7B~72B)社区热度过去一个月下载超1,600次(RL+SFT)📌一句话概括MiMo-VL 是目前性能最强、推理最稳、体验最佳、生态最全的7B级开源视觉语言模型。

m0_47867638的博客 1197

MiniGUI 自定义控件教程4

接着上次的教程继续。上次介绍了ButtonEx控件的设计,这次介绍ButtonEx的具体实现。这里我不打算说C语言的语法和简单的MiniGUI API调用,我就只说一些需要注意的问题。因为我认为这些才是大家真正需要了解的。 注册类 不管你是自己完全重新开始写控件类,还是继承现有的控件类。自己的控件类被外部程序使用前就必需要注册(通常是应用程序初始化的时候)。我目前还没深

mingming_killer的专栏 2952

YOLOv11改进 - C3k2融合 | C3k2融合细节增强卷积DEConv(Detail-Enhanced Convolution)提升细微特征提取能力

本文介绍了细节增强卷积(DEConv)技术在YOLOv11中的结合应用。DEConv由标准卷积层和多种差异卷积层并行组成,通过计算像素差异和卷积操作增强特征提取能力,还采用重参数化技术简化模型结构。其优势在于能更好捕捉高频信息、保持参数数量不变且降低推理计算成本。我们将DEConv集成进YOLOv11,替换部分模块。

魔改工程师的博客 862

MiniGUI 自定义控件教程6

接着上次的教程继续。之前就已经介绍完MiniGUI 2.0以前本人掌握的自定义控件的方法了(3.0的好像不太一样了呢,目前本人还没研究过)。恩,让我们来回顾下先: 1、对已经创建了的控件实例进行子类化。 2、对某个控件的子类进行子类化;这个又可以分为针对某个已有的控件(继承父类,类似之前的SLEditEx),重新自己写(继承自最顶层的DefaultControl,类似之前的Button

mingming_killer的专栏 1178

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

MiniGUI编程指南

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 ...

xixihaha331的博客 3982

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Rockchip MiniGUI Desktop开发指南

MiniGUI是一款面向嵌入式系统的高级窗口系统和图形用户界面支持系统,目前我们在MiniGUI的基础上编写了MiniGUI Desktop,用以实现音频播放、视频播放、图片浏览等功能,支持按键或触屏控制,便于二次开发。

1353

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

上一篇: How VSync works, and why people loathe it
下一篇: MiniGUI 自定义控件教程2
mingming_killer
博客等级 码龄19年 18粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值