MiniGUI源码分析:MiniGUIMain中有…

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更效! 阅读详情
我们知道,一般C语言的入口都是main,那么MiniGUIMain函数怎么成为入口呢?

在MiniGUI源码include/minigui.h中,定义了宏

  1. #define MiniGUIMain  
  2. MiniGUIAppMain (int args, const char* argv[]);  
  3. int main_entry (int args, const char* argv[])  
  4.  
  5.     int iRet 0;  
  6.     if (InitGUI (args, argv) != 0)  
  7.         return 1;  
  8.      
  9.     iRet MiniGUIAppMain (args, argv);  
  10.     TerminateGUI (iRet);  
  11.     return iRet;  
  12.  
  13. int MiniGUIAppMain  

其中main_entry,在linux 直接被定义为main, 但是,当_USE_MINIGUIENTRY被定义后,它被定义为minigui_entry:
  1. #ifdef _USE_MINIGUIENTRY  
  2.   #define main_entry minigui_entry  
  3.   int minigui_entry (int args, const char* arg[]);  
  4. #else  
  5.   #define main_entry main  
  6. #endif  

定义minigui_entry可以用在一些RTOS系统上,如vxworks上。因为它们的入口不是从main开始的。


上面我们的程序,就被展开。可以看到,其中最最要的是InitGUI和TerminateGUI两个函数。


InitGUI函数时主要的初始化函数,我们详细分析下该函数。

InitGUI就定义在minigui.h中,它的原型是:

  1. MG_EXPORT int GUIAPI InitGUI (int, const char **);  

InitGUI的实现,有多个版本,在线程版中,是在src/kernal/init.c中实现的。我们重点考察这一部分:(删除了一些不重要的部分)
  1. int GUIAPI InitGUI (int args, const char *agr[])  
  2.  
  3.     int step 0;  
  4. .......  
  5.      if (!mg_InitFixStr ()) //初始化字符串管理内存。MiniGUI在内部实现一个字符串的内存管理器,可以加快分配速度,减少内存碎片  
  6.         fprintf (stderr, "KERNEL>InitGUI: Init Fixed String module failure!\n");  
  7.         return step;  
  8.      
  9.       
  10.     step++;  
  11.       
  12.     if (!mg_InitMisc ()) //初始化杂项,主要是加载MiniGUI.cfg文件,后面的很多操作,都依赖于MiniGUI.cfg中的配置  
  13.         fprintf (stderr, "KERNEL>InitGUI: Initialization of misc things failure!\n");  
  14.         return step;  
  15.      
  16.   
  17.     step++;  
  18.     switch (mg_InitGAL ()) 
MiniGUI源码分析--hellowworld(1) :MiniGUIMain中有什么奥秘 上一篇: MiniGUI源码分析-- 开始篇 接下来,通过剖析MiniGUI的最简单的例程,来详细说明MiniGUI程序是如何创建和运行的。 这个例程,可以从很多地方得到,凡是接触过MiniGUI的朋友,首先接触的便是这个例子,为了方便大家阅读,贴在下面 /* ** $Id: helloworld.c,v 1.38 2007-10-25 07:56:45 weiym Exp $ 阅读详情

相关推荐

掌握Minigui1.0源码:嵌入式GUI设计与应用

本文还有配套的精品资源,点击获取 简介:Minigui1.0是一个为嵌入式系统设计的轻量级GUI库,旨在为资源受限的设备提供图形操作能力。本源码包为开发者提供了创建交互式嵌入式界面的基础框架,支持多种操作系统平台。文章将详细讨论Minigui1.0的设计目标、主要组件、源码结构以及开发流程,介绍如何通过环境配置、源码编译和应用编写来创建和运行GUI程序。同时,本文还涉及了M...

weixin_30661119的博客 1804

MiniGUI 基于源码的详细文档

MiniGUI 基于源码的详细文档,具有搜索功能,可查看函数的用法及预定义的个宏,与MiniGUi的头文件一样详细,强大的是具有搜索分类功能,解压后用浏览器双击打开index.html即可。

Minigui开源GUI库源码解析及应用

Minigui 是一个专门针对嵌入式系统设计的小型图形用户界面库,具备轻量级和可移植的特点。在这一章节中,我们将简要介绍 Minigui 的基本概念,并深入探讨其开源特性,为读者提供对 Minigui 全面的初步认识。字体样式的自定义与优化是为了满足特定应用需求,对字体进行调整的过程。通过调整字体的权重、宽度、倾斜程度和样式(如斜体、粗体),开发者可以创建出适应不同视觉风格的字体变体。例如,为了适应屏幕较小的嵌入式设备,可以通过优化算法来减小字体文件的大小。

weixin_32661831的博客 1301

minigui源码学习

前言: 个人习惯学习源码先从编译结构了解代码模块,所以先从编译结构开始了解。 如果编译角度搞不定,就代码开始运行时,各个模块初始化的角度开始了解。 学习源码——编译角度 建立编译平台 使用公司提供的统一编译平台,10.1.74.178 下载源码 git clone https://github.com/VincentWei/minigui.gitminigui 编译 minig...

C_Creator的博客 1182

MiniGUI源码走读

作者:Hily 原始链接:http://hily.me/blog/2007/05/minigui-code-reading/版权声明:可以转载,转载时务必以超链接形式标明文章原始出处和作者信息及版权声明注:这里是针对以下配置的MiniGUI v1.3.3进行解读:使用thread模式资源内置(Resource Incore)使用旧版本GAL使用native gal引擎

idoit0204的专栏 966

Minigui程序入口

Minigui程序入口: int MiniGUIMain(int argc, const char* argv[]) MiniGUIMain的宏定义为: #define MiniGUIMain \ MiniGUIAppMain (int args, const char* argv[]); \ int main_entry (int args, const char* argv[]) \ { \ int iRet = 0; \ if (InitGUI (args, argv) != 0)

Bingo_Nong的博客 494

MiniGui开发:ubuntu-14.04环境移植MiniGui

开发项目在嵌入式平台上使用MiniGui作为用户界面开发工具,在工作之余准备在ubuntu14.04上搭建一个测试环境,这样代码测试起来比较方便。前前后后搞了好多天,遇到了很多麻烦,但是最后还是跑通了。作为一个之前对minigui完全不懂的小白来说,真的需要好好摸索。总结一下:minigui真的很坑!如果不是项目必须的东西,我建议读者,能不用就不用。

Charles的博客 4392

MiniGUI源码分析——MiniGUIMain的奥秘

接下来,通过剖析MiniGUI的最简单的例程,来详细说明MiniGUI程序是如何创建和运行的。 这个例程,可以从很多地方得到,凡是接触过MiniGUI的朋友,首先接触的便是这个例子,为了方便大家阅读,贴在下面 /* ** $Id: helloworld.c,v 1.38 2007-10-25 07:56:45 weiym Exp $ ** ** Listing 2.1 ** **

曾经沧海 3518

MiniGUI源码分析--hellowworld(2):主窗口诞生的秘密

上一篇:MiniGUI源码分析--hellowworld(1) :MiniGUIMain中有什么奥秘 上一篇讲到MiniGUI程序的启动过程。当MiniGUI完成了初始化之后,就可以创建一个主窗口。(主窗口是唯一可以作为根窗口的窗口对象。这可能是MiniGUI在当初设计时为了方便而设立的。但是个人认为,这实在是一个蹩脚的设计。应该将主窗口与控件的接口完全统一了,就像windows A

doon的专栏 5302

minigui安装及问题总结

minigui完整安装(x86版本) ubuntu下编译,安装路径:/home/colin/minigui/lib_x86/ 1).zlib-1.2.2.tar.gz ./configure --prefix=/home/colin/minigui/lib_x86/ make make install 2).jpegsrc.v7.tar.gz ./configure --p

my328865033的专栏 7448

miniGUI源码分析:初始化

miniGUI是一个面向嵌入式系统的轻量级图形用户界面支持系统,其轻量小巧,占用资源少是主要优势。但由于没有更新,目前使用的仍是08年发布的版本,随着用户对操作界面的美观度及视觉效果的要求越来越,设计的很多界面效果无法实现,因此在开发很多需求的过程中,需要先开发底层控件,扩展现有功能,使开发过程变得较为复杂。学习使用miniGUI有一年多的时间,现对部分内容做下总结。

secretii的博客 540

minigui使用入口函数附带影子函数完成初始化

#ifdef _USE_MINIGUIENTRY  #define main_entry minigui_entry  int minigui_entry (int args, const char* arg[]);#else  #define main_entry main#endif/** * /def MiniGUIMain * /brief The main entry of a MiniGUI application. * * This function should be defined by

Foru 1440

MiniGui 多窗口程序(一)

/*MINIGUi   sample mitwindows*/   /*gcc -o metext metext.c   -lminigui -lpthread -lpng -ljpeg   -lmgext*/   #include   #include   #include   #include   #include   #include   #include

lbaihao的专栏 1867

MiniGUI 特性说明

MiniGUI特性说明书 本文档说明MiniGUI所支持的功能特性。 一、概述 MiniGUI是Linux控制台上运行的,基于SVGALib和LinuxThread库的多窗口图形用户界面支持系统。MiniGUI采用了类Win32的API接口,实现了简化的类Windows 98风格的图形用户界面。 图形用户界面在许多情况下都优于字符界面,其最大的优点是使应用...

武溪嵌人 1722

MiniGUI.cfg各部分介绍

注意:在使⽤用内建式资源(incore resources)时,MiniGUI不不需要MiniGUI.cfg配置⽂文件,相应的配置选项在src/sysres/mgetc.c⽂文件中指定 1. MiniGUI.cfg的作用 MiniGUI的运行配置文件是配置引擎,图,字体等资源 2.Minigui的内容格式 主要分为四个部分 注释 # 段 [ ] 键 键值 举例如下: [system] .# ...

白鱼儿的博客 1264

在Tina平台 KERNEL>InitGUI: Initialization of LF Manager failure!

在Tina平台 编译完MiniGUI后 运行的时候报这个错。 KERNEL>InitGUI: Initialization of LF Manager failure! 解决方法: 在MiniGUI.cfg文件中的修改resinfo 选项,上面问题是由于资源路径导致的初始化渲染器失败,也算是个低级的错误。再次Mark一下,这个让我纠结好长时间的问题。希望给初学者能提供一点帮助。 ...

hehuoren1的专栏 1001

不得不说,minigui真的很坑

开发项目在嵌入式平台上使用MiniGui作为用户界面开发工具,在工作之余准备在ubuntu14.04上搭建一个测试环境,这样代码测试起来比较方便。 前前后后搞了好多天,遇到了很多麻烦,但是最后还是跑通了。作为一个之前对minigui完全不懂的小白来说,真的需要好好摸索。 总结一下:minigui真的很坑!如果不是项目必须的东西,我建议读者,能不用就不用。 问题: min

猫哥 的沉淀、积累、总结。天天学习,好好向上...c/c++,嵌入式 linux,Android,HarmonyOS,AIOT) 1万+

minigui源码分析(一)

转载:https://blog.csdn.net/doon/article/details/7063159 背后的故事 从接触MiniGUI到现在已经5年了,在飞漫也工作了4年多。由于种种原因,加上android的冲击,minigui越来越式微。让人感觉很痛心。 如今赋闲在家,无所事事,正好利用年末和春节这段时间,把这几年来对minigui所做、所想、所悟分享出来,一来,对以往的工作做个总结; 二来趁minigui即将开源之际,对minigui推波助澜;三来,希望把这款优秀的开源软件介绍给大家,希望

TJH_I_CAN的博客 900

miniGui移植二

miniGui相关的库拷贝的开发板上,然后运行自己编写的helloworld

698
上一篇: MiniGUI 消息类型分类
下一篇: GDB调试技巧:调试复杂的宏定义
lq.kr
博客等级 码龄14年 9粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值