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的话,恐怕也是可以做点文章,让程序崩溃还是可以的吧。
由此也得出,接口函数里的指针类型,说类型安全还是有意义的。