最近一个关于PDA设备的项目刚结束,在此将这次基于WinCE 5.0环境开发项目的一些心得体会做个总结。
1、若你是拿原来支持多字符编码的工程做修改的话,需要注意Unicode字符与ASCII字符的字符串之间的转换问题。
标准C++的string 和 char都是ASCII字符,若赋值给宽字符,需要将他们转换成Unicode,如下
TCHAR chMsg[2*1024];
memset(chMsg, 0, sizeof(chMsg));
::wcscpy(chMsg, CComBSTR(strMsg.c_str()));
Unicode宽字符的字符串,如CString 和 TCHAR,若赋值给ASCII字符的字符串,需要将他们转换成ASCII,如下
string strTemData = " ";
CString cstrTemData(_T(" "));
strTemData = ::CT2A(cstrTemData);
备注:
不要直接使用CString类型的字符串的Format 函数将ASCII字符的字符串转换成CString类型的字符串,否则传递过去的值会是乱码。
2、若要让某个窗口总是在最前面显示,可以直接设置该窗口的属性" Set Foreground",将他设置为 true就可以了。
3、不要在一个窗口的OnInitDialog初始化函数中创建线程,否则有时会出现打开该窗口,该窗口不显示出来的问题。若要解决这个问题,可以在实现WM_SHOWWINDOW消息。本人因为这个问题,纠结了很久==!
4、在刚新建立智能设备项目时,VS2008向导默认支持英文的,若要在窗口上输入中文可以正常显示的话,就需要一开始创建时选择支持中文简体的,如图
5、用VS2008开发基于WinCE 5.0或6.0环境的程序,若没有装对应的模拟器(建议装个对应环境的模拟器最好),也可以使用默认的模拟器Pocket PC 2003 SE Emulator开发,但编译产生的.exe文件是不能直接在PC上双击执行的,要想可以直接在PC双击执行起来,应该装个对应Win CE环境的模拟器就可以了。若是不用模拟器,想直接连接到装有WinCE 5.0或6.0环境的设备上进行调试或运行程序,应该进行如下图的配置
点击菜单栏的“Tools”选项 --> “Options...” -->“Device Tools” --> “Devices”
点击菜单栏的“Tools”选项 --> “Connect To Device ...”
点程序的属性配置页,在“Deployment”中选择“Windows CE Device”
在工程的上面选择“Windows CE Device”
6、若是连接到设备上进行调试或运行程序,程序用到一些dll动态库,应该将那些dll动态库放到设备的应用程序目录中产生的目录(用VS编译执行程序就会在设备中的应用程序目录中产生)中,否则在调试或运行时会出现找到不到模板的错误
7、基于WinCE平台的设备若要与PC之间可以互传资料,如PDA H802设备,可以参照下图所示进行