2006-11-3
1. 调试好了 hgeGUIMessageBox 。错误出在这里:
在hgeGUIMessageBox的构造函数里,我先创建了按钮---自己写的---然后再创建的 hgeGUIText,加入 hgeGUI 里的顺序为先加入按钮,再加的标签,其结果就是按钮无法响应 hgeGUI 传过来的事件。当改为先加入标签,再加入按钮时,就一切正常了!
目前还不知道这个错误的原因是什么,估计在于 hgeGUIText的 static 属性。看了下HGE的原代码,也没找到错误所在。
另外,这个 hgeGUIMessageBox ,当系统中有多个对话框时,似乎响应事件时其速度就会下降,也不稳定!我觉得这个时候 HGE 的GUI 部分真的不行了!
有可能的话,我想在HGE的基础上写一个更好的GUI组件!
2. 关于嵌入式项目:
项目进入到解决触摸屏问题的环节。晚上为了解决这个问题,我翻了 tslib 库的原代码,也翻了 Qt 的原代码。突然间发现自己阅读代码的能力增强了!----很明显地可以感受到比以前更有感觉了!
学到了 cstdlib 库里的一个函数: getenv ,得到指定系统环境变量值。这个是为了测试 tslib 是否得到正确的环境变量而实验出的。
弄清了 tslib 库依赖的那几个环境变量的意思!
目前的错误是当Qt程序启动后,Qt库会提示不能配置触摸屏。通过阅读代码,错误定位在 ts_config 里。并且可以进一步确定是在加载插件模块时出的错!
ts_config 函数里首先会读取 tslib 配置文件(ts.conf,由 TSLIB_CONFFILE环境变量指定),然后根据这个文件逐个加载插件库!ts_config又会调用ts_load_module加载库。从这个函数里,程序先是得到配置文件中指定加载的模块名,然后根据模块名构造了一个 so 文件文件名,然后调用了系统函数 dlopen 加载库!
于是学到了一个Linux 下的加载类似于 Windows 下动态链接库的函数:dlopen!
那么,错误就应该出在构造的库文件名是错误的---其指定的文件不存在---从而导致 dlopen无法加载。所以才提示找不到文件或目录!--明天去实验室尝试一下。
2006.11.4
触摸屏问题解决!我的思路是正确的!