miniGui开发进展解决

来源:互联网 发布:淘宝中差评外包团队 编辑:程序博客网 时间:2024/06/08 01:01

1.miniGUI中,可以在编译配置选项中设置UI风格。改为FLAT后,编译示例报错。说是myDrawButton没有定义。后来看了源码,才解决。原来定义FLAT时,还有个_GRAY_SCREEN宏开关,决定是否定义myDrawButton.

 

还是要多看源码来解决问题呀。

 

 

2.对话框程序,更改背景色。在运行时配置文件MiniGui.cfg中。

 

3.编译调试命令。

qvfb -width 640 -height 480&

 

gcc -o dialogbox dialogbox.c -lpthread -lminigui -ljpeg -lpng  -g

 

gdb ./dialogbox

 

对于core dump错误,如何调试?如何生成core文件?

 

4.20100608今天调试成功菜单,原来trackpopmenu要放在insertMenu之后才起效果,包括stripmenu也要在insert之后。

   菜单成功创建了,但还是有些疑问的,菜单的资源释放是什么做的?

 

 

5.20100609今天创建子对话框成功,但中文显示乱码。后来查明是该.c源码文件,保存方式为UTF—8.解决:另存文件,选用GB2312就可以了。(linux默认是UTF-8编码方式,gedit可以另存,VIM暂不知如何解决)

 

**:Vim语言设置,烦啊,编码可能一直是操作系统要处理的一个麻烦问题.

我的Linux上有不少的gb2312 的文件.没法子,只有让Vim也支持他啦。

如果你的系统你自己的主目录中有.vimrc就加入下面二行,如果没有,就建一个这个文件.

    let &termencoding=&encoding
    set fileencodings=utf-8,gbk,ucs-bom,cp936

记的保存哦.然后在用Vim打开看看,UTF8和GB2312都没有问题.

 

 

 


ldd -v 程序名查看程序使用的PNG的LIB库版本。
机器中有二个版本的PNG的LIB库,冲突。想法解决掉一个。

 

6.core dump.

几则 gdb 使用技巧

 

转载时请注明出处: http://blog.csdn.net/absurd/

 

gdb 的功能强大,与带 GUI 的调试器相比有过之而无不及,使用也就相对复杂一些。一方面是它的亲和力稍差,毕竟是给程序员用的,不用做得傻瓜化。另外一方面它的命令太多,我们常常浅尝辄止,只记得几个常用的命令就知足了,没有充分发挥它的潜力。今天要调试一段 ARM 汇编代码,按常规方法调试汇编代码非常麻烦,花了点时间看 gdb 的帮助,发现几个技巧比较有用,这里做个笔记。

 

1.          使用自定义命令。 gdb 内置的命令很多,这些命令都遵循 unix 的一贯原则,每个命令都只有一个基本功能。命令的粒度比较细,可重用性会更高。自己要去组织这些基本命令,以形成功能更强大的命令。这可以用 define 来实现,如:

(gdb) define nid           

Type commands for definition of "nid".

End with a line saying just "end".

>ni

>disassemble $pc $pc+16

>end

 

2.          多窗口。 GUI 调试器可以同时打开多个小窗口,分别显示寄存器、汇编和源代码等。在 gdb 里也可以做到,但同时最多只能显示两个窗口,试了一下也很方便的。基本命令如下:

a)          `layout src' 仅显示源代码窗口。

b)         `layout asm' 仅显示汇编代码窗口。

c)         `layout split' 显示源代码和汇编代码窗口。

d)         `layout regs' 显示寄存器和源代码窗口,或者寄存器和汇编代码窗口。

e)          `layout next` `layout prev' 切换窗口。

f)          ctrl + L 刷新屏幕。

g)         `C-x 1' 单窗口模式。

h)         `C-x 2' 双窗口模式。

i)           `C-x a' 回到传统模式。

 

~~end~~

 

 

7.combox的颜色设置问题。

在对话框中,想要将对话框中的控件背景色设为对话框的背景色,以达到透明的感觉。其它窗口,通过GetDlgItem获取句柄,直接设置背景色即可。

但combox却只能设置到按钮底部的背景色。google后,得知,要分别获取到combox的edit,listbox再设置背景色才可。

另外,获取edit,listbox的句柄,需要发送消息CB_GETCHILDREN来得到。最后,下拉按钮仍有一部分未设置成背景色,之后再想法解决吧。

附上相关资料。

搞了半天 看了一下源代码才明白   这是ComboBoxCtrlProc函数中的    
       case CB_GETCHILDREN:
       {
           HWND* wnd_edit = (HWND*)wParam;
           HWND* wnd_listbox = (HWND*)lParam;
           *wnd_edit = pData->EditControl;
           *wnd_listbox = pData->ListBoxControl;
           return 0;
       }
wParam参数就是combobox子控件edit的句柄
 
 
ebsoft 发表于: 2009/04/07 01:41pm
我也在做这个 请帮忙说一下具体的方法
多谢 
 
twodiamond 发表于: 2009/04/02 08:45pm
坛主,
请教:如果不显式采用消息机制,是否可以通过下面的调用获得编辑框的句柄:

hCombobox=CreateWindowEx( CTRL_COMBOBOX,
"",
WS_CHILD | WS_VISIBLE | WS_TABSTOP | CBS_SPINLIST | CBS_NOTIFY,//istyle
0,   //iExstyle
id,
x, y, w, h,
hParent,
addData);

pData = (PCOMBOBOXDATA)GetWindowAdditionalData2(hCombobox);
hEdit  = pData->EditControl;

即通过 GetWindowAdditionalData2 来获得窗口hCombobox的第2个附加数据,从源代码上看,第2个附加数据就是控件的地址,根据这个地址来索引编辑框的句柄;

多谢!
 
 
kongming 发表于: 2009/04/02 07:20pm
向组合框控件发送 CB_GETCHILDREN 消息。 
 
twodiamond 发表于: 2009/04/02 06:02pm
多谢指点,请问哪个函数能获得编辑框子控件的句柄,多谢版主!
 
 
kongming 发表于: 2009/04/02 05:52pm
组合框中的编辑框是它的子控件,你应该拿到编辑框的句柄然后再设置编辑框的背景色。 

 

 

 

 

8.C++初始化机制带来的miniGUI调用问题。

近期同事帮我重做miniGUI下的控件。由于我这边要用C++,所以在改到C++时,发现要么处理有问题,要么就是程序出错。

看过原来的代码后,才发现,在控件获取原基础控件的窗口处理过程时,需要额外设置opMASK值。这一点,在miniGUI的示例代码中,也未使用,可能它没有考虑C++的情况吧。C++的初始化会导致OPMASK未设置,从而得不到想要的结果,甚至得到危险的操作结果。

而C中初始化,则没有这个问题。

 

 

9.代码整洁与逻辑(其实是相关的)

在使用控件的过程中,发现控件中的GET_TEXT处理有问题,其中的strlen函数会出错。

跟了下,发现操作的指针数据和预想的不是一个。这个指针是通过获取附加数据得到的,没有太仔细追控件里面的代码了。代码的书写果然很重要。之前看里面的代码,就担心会有这样的问题。目前暂时给她改了下,重新获取了附加数据。

 

10.接口函数指针类型(void*)[类型不安全,调用时不作检查。。。。]

调用另一个同事的操作数据库的接口时,会导致函数其它变量值改变。最后找到原因。因为我调用的指针和他库里操作的指针不是一个类型。而它接口函数又全部用(void*)转换了,所以这个过程中,如果上层不仔细检查,编译是不会检查出问题的。而运行时,却悄悄的影响了其它地方的内存。

仔细想想,这种(void*)的方式,如果是OS的API的话,恐怕也是可以做点文章,让程序崩溃还是可以的吧。

由此也得出,接口函数里的指针类型,说类型安全还是有意义的。