minigui[基础篇][1]——第一个helloword程序

minigui[基础篇][1]——第一个helloword程序

1.源码

#include <stdio.h>  //c库函数
#include <minigui/common.h>  //minigui常用的宏和定义
#include <minigui/minigui.h> //minigui通用的函数和杂项的函数
#include <minigui/gdi.h> //绘图函数接口定义
#include <minigui/window.h> //窗口相关的宏 数据结构 数据类型 以及接口函数的说明

//消息过程处理函数
static int HelloWinProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
{
    HDC hdc;
    switch (message) {
        case MSG_PAINT:  //绘图消息   比如说ShowWindow这个函数调用时会这个消息
            hdc = BeginPaint (hWnd);//获取绘图上下文
            TextOut (hdc, 60, 60, "Hello world!");//将文本输出到屏幕上
            EndPaint (hWnd, hdc);//释放绘图上下文
            return 0;
        case MSG_CLOSE://关闭消息  像用户点击右上角图标后会发送该消息
            DestroyMainWindow (hWnd);//销毁窗口本身用户创建出来的内存等等
            PostQuitMessage (hWnd); //将MSG_QUIT消息投放到消息队列中
            return 0;
    }
    return DefaultMainWinProc (hWnd, message, wParam, lParam);//默认的消息处理函数
}

//像main一样的程序入口点
int MiniGUIMain (int argc, const char* argv[])
{
    MSG Msg;
    HWND hMainWnd;
    MAINWINCREATE CreateInfo;
    
    #ifdef _MGRM_PROCESSES  //进程模式下加入层的概念
    JoinLayer (NAME_DEF_LAYER , "helloworld" , 0 , 0);
    #endif
    
    CreateInfo.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION;//可见 有标题栏 有边框
    CreateInfo.dwExStyle = WS_EX_NONE; //无扩展风格
    CreateInfo.spCaption = "HelloWorld"; //标题栏文本
    CreateInfo.hMenu = 0; //无菜单
    CreateInfo.hCursor = GetSystemCursor (0); //系统默认光标
    CreateInfo.hIcon = 0; //无图标  像windows窗口左上角的那个小图标
    CreateInfo.MainWindowProc = HelloWinProc; //默认窗口处理函数
    CreateInfo.lx = 0; //左上x  left x
    CreateInfo.ty = 0; //左上y  top y
    CreateInfo.rx = 240;//右下x  right x
    CreateInfo.by = 180;//右下y bottom y  这四个值可表示一个矩形 左上坐标(0,0) w=240 h=180的矩形
    CreateInfo.iBkColor = COLOR_lightwhite; //背景颜色 白色
    CreateInfo.dwAddData = 0; //窗口数据 无
    CreateInfo.hHosting = HWND_DESKTOP; //托管窗口是桌面
    
    hMainWnd = CreateMainWindow (&CreateInfo); //创建一个窗口 用户程序资源+系统资源
    if (hMainWnd == HWND_INVALID)
        return -1;
    ShowWindow (hMainWnd, SW_SHOWNORMAL);//显示一个窗口
    
    //消息循环队列
    while (GetMessage (&Msg, hMainWnd)) {//从消息队列中获取消息
        TranslateMessage (&Msg); //将键盘消息转换为字符消息
        DispatchMessage (&Msg); //将消息发送给消息处理函数
    }
    
    MainWindowThreadCleanup (hMainWnd); //回收窗口的资源 像消息队列+系统资源等等
    return 0;
}
#ifndef _MGRM_PROCESSES
#include <minigui/dti.c>
#endif

2.流程框图

注:创建窗口并不意味着显示窗口 创建窗口只意味着在内存中存在 并没有在显示屏上显示
所以要显示屏幕 利用hdc在屏幕上显示出来

在这里插入图片描述

3.消息的类图

在这里插入图片描述

4.minigui的3种模式

MiniGUI-Threads 线程模式 ---可以在不同的线程中建立多个窗口,但所有的窗口在一个进程或者地址空间
在文件这种模式利用的宏:MiniGUI-Threads: _MGRM_THREADS
操作系统: uC/OS-II eCos VxWorks pSOS  Linux  uClinux
    
MiniGUI-Processes 进程模式 --- 每个程序是独立的进程,每个进程也可以建立多个窗口
宏:MiniGUI-Processes: _MGRM_PROCESSES 和 _LITE_VERSION
操作系统:嵌入式linux
    
MiniGUI-Standalone 独立模式 --- 既不需要多线程也不需要多进程的支持
MiniGUI-Standalone:_MGRM_STANDALONE 和(_LITE_VERSION 以及 _STAND_ALONE)

5.关于minigui学习

因为minigui资料少 但它是基于类win32API编程
所以可以到网上找一些相关资料 WIN32API 学习和minigui一些概念类似
同时推荐一本讲GUI框架的书
《精通嵌入式Linux编程 --- 构建自己的GUI环境》李玉东 李玉萍编著
目录第1章 在PC上安装双系统 1 1.1前期准备 1 1.2安装Fedora10过程详解 1 1.3安装Fedora10后的配置 9 1.3.1外观及Gnome桌面的使用 9 1.3.2网卡配置及连接IPV6网站 14 1.3.3升级及安装软件 17 1.3.4系统服务配置 18 1.3.5安装Linux下的虚拟机 19 1.4修复双系统启动 22 第2章 针对ARM目标板的交叉开发 24 2.1交叉编译环境 24 2.2交叉调试方法 25 2.3共享库相关 28 2.3.1基本的共享库使用知识点 28 2.3.2交叉编译的共享库 29 第3章 Linux下的串口使用 32 3.1 Linux下的串口设备 32 3.1.1串口简介 32 3.1.2串口与Linux终端设备、控制台 34 3.2 Linux下的“超级终端”工具 38 3.2.1 C-kermit的安装与使用 38 3.2.2简单的串口单双工通信实验 40 3.3串口编程总结 42 3.3.1相关数据结构 42 3.3.2相关函数 46 3.3.2串口编程实例 54 第4章 NFS交叉开发环境 59 4.1配置NFS服务 59 4.1.1设置共享目录 59 4.1.2启动和停止nfs 服务 59 4.2 NFS根文件系统启动 59 4.3 NFS交叉编译 60 第5章 创建根文件系统 62 5.1移植Busybox 62 5.2移植Glibc库 63 5.3完善根文件系统 63 5.4制作/烧写yaffs映像文件 66 第6章 MiniGUI移植与开发 67 6.1 MiniGUI在PC机上的开发环境的建立 67 6.1.1安装QVFB 67 6.1.2在PC上安装MiniGUI 68 6.2 MiniGUI在S3C2440上的开发环境的建立 71 6.2.1交叉编译相关的开源库 71 6.2.2针对本系统的MiniGUI输入引擎设计 73 6.2.3交叉编译并安装MiniGUI 74 6.2.4在mini2440开发板上运行MiniGUI示例程序 76 6.3 MiniGUI编程小结 78 6.3.1创建MiniGUI程序 78 6.3.2编译MiniGUI程序 81 6.3.3对话框程序 83 6.3.4自定义控件编写 88 6.3.5加入自己的线程 92 第7章 燃气监测系统的开发、调试过程 94 7.1项目简介 94 7.2开发设计 94 7.3调试过程 96 参考文献 100 附录 102 附录1电子科技大学清水河校区802.x上网认证脚本——作者lili(可以用来做学习Shell编程的实例哦) 102 附录2针对mini2440开发板的输入引擎文件mini2440.h和mini2440.c(原创) 108 附录3 VIM配置文件~/.vimrc内容 116
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值