这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » GUI GUI源代码若干问题,有兴趣的可看看

共2条 1/1 1 跳转至

GUI GUI源代码若干问题,有兴趣的可看看

院士
2006-09-17 18:14:16     打赏
GUI GUI源代码若干问题,有兴趣的可看看



关键词: 源代码     若干     问题     有兴趣     看看    

院士
2006-12-22 22:43:00     打赏
2楼


这两天将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 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]