共2条
1/1 1 跳转至页
GUI GUI源代码若干问题,有兴趣的可看看
问
这两天将ucgui的源代码看了个大概,主要是基于演示例程看的,感觉和vc有
点类似。
碰到一些问题,还请各位朋友指点。
1.看到一个这样的语句,以前写C代码时没有遇到过,不知道是什么意思
typedef void GUI_DISPCHAR(U16 c);
按理说typedef应该是用于定义类型的啊,这里怎么用来修饰函数,还有它这
样修饰表示什么意思呢???
2.#pragma warning( disable : 4244 )表示什么意思???
在VC中见过,不过忘了其含义了,呵呵
3.GUI_LOCK()、GUI_UNLOCK()是在使用操作系统时才起作用的,不过不明白
它们的含义是什么?它们分别调用了GUI_X_Lock和GUI_X_UNLock,不过我没有
找到GUI_X_Lock和GUI_X_UnLock两函数的实现。它们是不是在引入os后,要
自己定义编写。它们的作用是用于开关中断呢还是给任务上锁开锁(即相当于
ucos中是否允许进行任务调度)???
4.core\GUI_SetDefault.c中,GL_SetDefault(void)函数调用
GUI_SetTextAlign(0);这里0表示什么意思???
这样设置文字对齐方式为...??? 还有GUI_SetTextMode(0);和
GUI_SetDrawMode(0);分别表示什么意思???
从源码看,是分别设置GUI_Context结构变量中的TextAlign、TextMode、
DrawMode都为0。不明白的是,这些变量为0
表示什么意思???
5.不明白ucgui中为什么把默认背景色设置为黑色,而且很多演示程序如消息
框、表盘演示程序中,都将桌面背景设置为黑色WM_SetDesktopColor
(GUI_BLACK);这样,屏幕一片黑,看不太清楚,有什么好处???
6.uc/gui好像不能在消息框标题栏上显示汉字。例如:
GUI_MessageBox("Message1", "文本", 0);
标题栏上并没有显示"文本"两字,尽管之前我已经设置字体
7.窗口回调函数是什么时候被调用的?由哪个函数调用??
对消息响应执行流程不是很清楚,如有一个消息框,上面有一个ok按键,请
问整个执行过程是怎样???怎么响应按键输入???
8.core\GUICore.c:
GUI_SelectLCD()在支持存储器设备情况下,才被编译,不过不明白这个函数
有什么作用???和存储器设备有什么关系???
9.对于16级灰度模式,查找表寄存器没有意义,因为可能使用的16级灰度都要
被使用,这时颜色是不是不可调,例如0000对应16级灰度中的哪个级别是否可
由用户选择???
对于4级灰度模式,是可以通过BLUELUT选择颜色位对应颜色级别,如00对
应哪个级别可由BLUELUT[3:0]选择?那么工作在16级灰度模式,是不是不可以
???
10.rNCACHBE0=(((Non_Cache_End)>>12)<<16)|((Non_Cache_Start)>>12);/*
定义不可缓冲区域 */
编译时总是出现溢出警告,怎么改???
11..guitime.c文件中:
void GUI_Delay(int Period){
int EndTime = GUI_GetTime()+Period;
int tRem; /* remaining Time */
while (tRem = EndTime- GUI_GetTime(), tRem>0) {
GUI_Exec();/* 屏幕刷新 */
GUI_X_Delay((tRem >5) ? 5 : tRem);/* 这句什么意思??? */
}
}
12.WM_InvalidateWindow(WM__FirstWin);函数的作用是什么???是重绘窗口
吗???
13.WM_INIT_DIALOG消息是什么时候发送到目标窗口???
14. LISTBOX_SetBackColor(hListBox, 0, GUI_BLUE);
LISTBOX_SetBackColor(hListBox, 1, GUI_LIGHTBLUE);
LISTBOX_SetTextColor(hListBox, 0, GUI_WHITE);
LISTBOX_SetTextColor(hListBox, 1, GUI_BLACK);
BUTTON_SetBitmapEx(hButton, 0, &bm_1bpp_0, 2, 4);
BUTTON_SetBitmapEx(hButton, 1, &bm_1bpp_1, 2, 4);
上述语句中,0和1有什么区别???
问题比较多,比较细,有兴趣的朋友可以看看,当然,能帮忙解惑就更欢迎
谢谢 答 1: re自己顶
呵呵 答 2: re:1.就是定义数据类型
GUI_DISPCHAR* fp; 相当于 void (*pf)(U16 c);
2.禁止代码为4244的警告 (与编译器有关)
3.是在使用操作系统时才起作用。
GUI_X_Lock和GUI_X_UnLock 根据相应的操作系统自己编写。
4.GUI_SetTextAlign(0);
gui.h由它的定义 #define GUI_TA_LEFT (0<<0)
应写成 GUI_SetTextAlign(GUI_TA_LEFT);
5.你喜欢就行。
6.
7.
8.内存设备一般是和LCD兼容的内存块,目的是为了减少LCD重画是所产生的闪烁感。最好产考一下 Windows API 的
CreateCompatible(),SelectObject() 以及其基础。
9.如果工作在16级灰度模式,当然4级没问题。(其它不懂)
10.不清楚,我没出现过。
11.相当于:
if(tRem > 5)
GUI_X_Delay(5);
else
GUI_X_Delay(tRem);
12.是
13.
14.产考它的使用手册
0 Sets the color for unselected elements.
1 Sets the color for the selected element.
答 3: 谢谢
非常感谢PandaFeng兄的详细回答,看来你对ucgui很熟悉啊
上面的问题大部分解决了,还有一些问题如下:
3.使用操作系统如ucosii时,GUI_X_Lock和GUI_X_UnLock由我们自己编写,一般完成什么操作?我觉得可能是开关中断或者是给调试器上锁开锁.你做过将ucosii和ucgui结合起来使用吗?你在这两个函数里做什么操作?
问题6你碰到过没有?
问题10你的语句也是这样吗?你也是使用ads1.2吗?
11.我知道 GUI_X_Delay((tRem >5) ? 5 : tRem);的语法意思,我是不清楚为什么这样设置?为什么tRem>5时延时GUI_X_Delay(5)?
另外,不明白GUI_Delay()延时的单位是什么?是ms还是秒或者是不是ucosii中的tick?
我的qq:87856183,如果不闲麻烦的话,可以在网上聊聊,呵呵
谢谢
答 4: re:几个月前我也用ucGUI,现该为了miniGUI。
操作系统也是ucosii,为了应用程序还把ucUGI改了很多,不过现在基本都
忘光了~~。
当时GUI_X_Lock 是用SEM,出了些问题,具体忘了,跟lock嵌套有关。
不过如果你的其它的任务不涉及GUI的相关操作,可以不用管它。
miniGUI更接近Windows 结构,写起应用来比较舒服。
问题6:
如果用英文可以吗?
问题10:
我一直用IAR,没出现过你所说的。
11:
目的就是为了限制每次延时的时间,让GUI_Exec()做它的工作,
如,重画其它窗口,处理鼠标,手写输入等。
GUI_Delay()延时当然选择 tick 比较方便。
别见笑,我没QQ~_~
答 5: 谢谢to PandaFeng:
谢谢,明白了。
看手册,GUI_Delay()延时时间单位是ms,不过应该可以自己改为和tick一致。
我也想用minigui,可是那是要买的,我还在学校,导师也不太愿意出这笔钱,所以就用ucgui了。
感觉ucgui也和VC类似,你说"为了应用程序还把ucUGI改了很多",为什么呢?能否举个例子吗?
有机会我还是想改用miniGUI,顺便问你一下:如果有VC编程的基础,学miniGUI能很快上手吗?
还有,ucgui好像不能方便地更改汉字大小,如果要改,可能得改字模。miniGUI能否比较方便的更改字体,比如调用一个函数即可,然后miniGUI能不能设置宋体、楷体等啊?
另外,方便留一个联系方式给我吗,比如email什么的,呵呵
我留一个email吧:chenye_cau@163.com
谢谢了 答 6: re:ucGUI 和 miniGUI 已经没得比了!
改ucGUI方面,如鼠标设置热点,增加右键菜单等。
miniGUI 支持TrueType font.
有API的编程经验,都很快上手。
这两天将ucgui的源代码看了个大概,主要是基于演示例程看的,感觉和vc有
点类似。
碰到一些问题,还请各位朋友指点。
1.看到一个这样的语句,以前写C代码时没有遇到过,不知道是什么意思
typedef void GUI_DISPCHAR(U16 c);
按理说typedef应该是用于定义类型的啊,这里怎么用来修饰函数,还有它这
样修饰表示什么意思呢???
2.#pragma warning( disable : 4244 )表示什么意思???
在VC中见过,不过忘了其含义了,呵呵
3.GUI_LOCK()、GUI_UNLOCK()是在使用操作系统时才起作用的,不过不明白
它们的含义是什么?它们分别调用了GUI_X_Lock和GUI_X_UNLock,不过我没有
找到GUI_X_Lock和GUI_X_UnLock两函数的实现。它们是不是在引入os后,要
自己定义编写。它们的作用是用于开关中断呢还是给任务上锁开锁(即相当于
ucos中是否允许进行任务调度)???
4.core\GUI_SetDefault.c中,GL_SetDefault(void)函数调用
GUI_SetTextAlign(0);这里0表示什么意思???
这样设置文字对齐方式为...??? 还有GUI_SetTextMode(0);和
GUI_SetDrawMode(0);分别表示什么意思???
从源码看,是分别设置GUI_Context结构变量中的TextAlign、TextMode、
DrawMode都为0。不明白的是,这些变量为0
表示什么意思???
5.不明白ucgui中为什么把默认背景色设置为黑色,而且很多演示程序如消息
框、表盘演示程序中,都将桌面背景设置为黑色WM_SetDesktopColor
(GUI_BLACK);这样,屏幕一片黑,看不太清楚,有什么好处???
6.uc/gui好像不能在消息框标题栏上显示汉字。例如:
GUI_MessageBox("Message1", "文本", 0);
标题栏上并没有显示"文本"两字,尽管之前我已经设置字体
7.窗口回调函数是什么时候被调用的?由哪个函数调用??
对消息响应执行流程不是很清楚,如有一个消息框,上面有一个ok按键,请
问整个执行过程是怎样???怎么响应按键输入???
8.core\GUICore.c:
GUI_SelectLCD()在支持存储器设备情况下,才被编译,不过不明白这个函数
有什么作用???和存储器设备有什么关系???
9.对于16级灰度模式,查找表寄存器没有意义,因为可能使用的16级灰度都要
被使用,这时颜色是不是不可调,例如0000对应16级灰度中的哪个级别是否可
由用户选择???
对于4级灰度模式,是可以通过BLUELUT选择颜色位对应颜色级别,如00对
应哪个级别可由BLUELUT[3:0]选择?那么工作在16级灰度模式,是不是不可以
???
10.rNCACHBE0=(((Non_Cache_End)>>12)<<16)|((Non_Cache_Start)>>12);/*
定义不可缓冲区域 */
编译时总是出现溢出警告,怎么改???
11..guitime.c文件中:
void GUI_Delay(int Period){
int EndTime = GUI_GetTime()+Period;
int tRem; /* remaining Time */
while (tRem = EndTime- GUI_GetTime(), tRem>0) {
GUI_Exec();/* 屏幕刷新 */
GUI_X_Delay((tRem >5) ? 5 : tRem);/* 这句什么意思??? */
}
}
12.WM_InvalidateWindow(WM__FirstWin);函数的作用是什么???是重绘窗口
吗???
13.WM_INIT_DIALOG消息是什么时候发送到目标窗口???
14. LISTBOX_SetBackColor(hListBox, 0, GUI_BLUE);
LISTBOX_SetBackColor(hListBox, 1, GUI_LIGHTBLUE);
LISTBOX_SetTextColor(hListBox, 0, GUI_WHITE);
LISTBOX_SetTextColor(hListBox, 1, GUI_BLACK);
BUTTON_SetBitmapEx(hButton, 0, &bm_1bpp_0, 2, 4);
BUTTON_SetBitmapEx(hButton, 1, &bm_1bpp_1, 2, 4);
上述语句中,0和1有什么区别???
问题比较多,比较细,有兴趣的朋友可以看看,当然,能帮忙解惑就更欢迎
谢谢 答 1: re自己顶
呵呵 答 2: re:1.就是定义数据类型
GUI_DISPCHAR* fp; 相当于 void (*pf)(U16 c);
2.禁止代码为4244的警告 (与编译器有关)
3.是在使用操作系统时才起作用。
GUI_X_Lock和GUI_X_UnLock 根据相应的操作系统自己编写。
4.GUI_SetTextAlign(0);
gui.h由它的定义 #define GUI_TA_LEFT (0<<0)
应写成 GUI_SetTextAlign(GUI_TA_LEFT);
5.你喜欢就行。
6.
7.
8.内存设备一般是和LCD兼容的内存块,目的是为了减少LCD重画是所产生的闪烁感。最好产考一下 Windows API 的
CreateCompatible(),SelectObject() 以及其基础。
9.如果工作在16级灰度模式,当然4级没问题。(其它不懂)
10.不清楚,我没出现过。
11.相当于:
if(tRem > 5)
GUI_X_Delay(5);
else
GUI_X_Delay(tRem);
12.是
13.
14.产考它的使用手册
0 Sets the color for unselected elements.
1 Sets the color for the selected element.
答 3: 谢谢
非常感谢PandaFeng兄的详细回答,看来你对ucgui很熟悉啊
上面的问题大部分解决了,还有一些问题如下:
3.使用操作系统如ucosii时,GUI_X_Lock和GUI_X_UnLock由我们自己编写,一般完成什么操作?我觉得可能是开关中断或者是给调试器上锁开锁.你做过将ucosii和ucgui结合起来使用吗?你在这两个函数里做什么操作?
问题6你碰到过没有?
问题10你的语句也是这样吗?你也是使用ads1.2吗?
11.我知道 GUI_X_Delay((tRem >5) ? 5 : tRem);的语法意思,我是不清楚为什么这样设置?为什么tRem>5时延时GUI_X_Delay(5)?
另外,不明白GUI_Delay()延时的单位是什么?是ms还是秒或者是不是ucosii中的tick?
我的qq:87856183,如果不闲麻烦的话,可以在网上聊聊,呵呵
谢谢
答 4: re:几个月前我也用ucGUI,现该为了miniGUI。
操作系统也是ucosii,为了应用程序还把ucUGI改了很多,不过现在基本都
忘光了~~。
当时GUI_X_Lock 是用SEM,出了些问题,具体忘了,跟lock嵌套有关。
不过如果你的其它的任务不涉及GUI的相关操作,可以不用管它。
miniGUI更接近Windows 结构,写起应用来比较舒服。
问题6:
如果用英文可以吗?
问题10:
我一直用IAR,没出现过你所说的。
11:
目的就是为了限制每次延时的时间,让GUI_Exec()做它的工作,
如,重画其它窗口,处理鼠标,手写输入等。
GUI_Delay()延时当然选择 tick 比较方便。
别见笑,我没QQ~_~
答 5: 谢谢to PandaFeng:
谢谢,明白了。
看手册,GUI_Delay()延时时间单位是ms,不过应该可以自己改为和tick一致。
我也想用minigui,可是那是要买的,我还在学校,导师也不太愿意出这笔钱,所以就用ucgui了。
感觉ucgui也和VC类似,你说"为了应用程序还把ucUGI改了很多",为什么呢?能否举个例子吗?
有机会我还是想改用miniGUI,顺便问你一下:如果有VC编程的基础,学miniGUI能很快上手吗?
还有,ucgui好像不能方便地更改汉字大小,如果要改,可能得改字模。miniGUI能否比较方便的更改字体,比如调用一个函数即可,然后miniGUI能不能设置宋体、楷体等啊?
另外,方便留一个联系方式给我吗,比如email什么的,呵呵
我留一个email吧:chenye_cau@163.com
谢谢了 答 6: re:ucGUI 和 miniGUI 已经没得比了!
改ucGUI方面,如鼠标设置热点,增加右键菜单等。
miniGUI 支持TrueType font.
有API的编程经验,都很快上手。
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 | |
【FRDM-MCXN947评测】核间通信MUTEX被打赏50分 |