WinCE 下 ListCtl virtual mode的使用
2009-10-08 22:38
260 查看
调试了几天才把ListCtrl弄好,一个小问题困扰了半天。
把LIST_VIEW设置成REPORT View和Owner Data模式,也就是工作在virtual data模式下。然后去处理LVN_GETDISPINFO消息。好久以前是用过的,不过是在Windows + VC6下面,这次是在WinCE + EVC下面。先后犯了几个错误
1) 用ClassWizard添加消息响应函数时,添成了对HDN_GETDISPINFO的响应了,应该是LVN_GETDISPINFO
2) 改好后发现LVN_GETDISPINFO的响应函数就是不被调用,看到网上有人说用CreateWindowEx自己生成控件就可以,结果我试了也不行,不过发现LVN_ODCACHEHINT消息有被发送过来,只是LVN_GETDISPINFO没有被发送过。这下就纳闷了。于是在VS2005上面试,发现LVN_GETDISPINFO消息函数都会被调用,甚至怀疑是不是WinCE不支持virtual mode,可是文档上明明写了LVN_GETDISPINFO这个消息。继续找啊找,终于发现,原来是需要调用InsertColumn插入列,然后就会有LVN_GETDISPINFO消息发送了。
只是比较奇怪,在Windows上,不插入列,LVN_GETDISPINO照样会被发送。
把LIST_VIEW设置成REPORT View和Owner Data模式,也就是工作在virtual data模式下。然后去处理LVN_GETDISPINFO消息。好久以前是用过的,不过是在Windows + VC6下面,这次是在WinCE + EVC下面。先后犯了几个错误
1) 用ClassWizard添加消息响应函数时,添成了对HDN_GETDISPINFO的响应了,应该是LVN_GETDISPINFO
2) 改好后发现LVN_GETDISPINFO的响应函数就是不被调用,看到网上有人说用CreateWindowEx自己生成控件就可以,结果我试了也不行,不过发现LVN_ODCACHEHINT消息有被发送过来,只是LVN_GETDISPINFO没有被发送过。这下就纳闷了。于是在VS2005上面试,发现LVN_GETDISPINFO消息函数都会被调用,甚至怀疑是不是WinCE不支持virtual mode,可是文档上明明写了LVN_GETDISPINFO这个消息。继续找啊找,终于发现,原来是需要调用InsertColumn插入列,然后就会有LVN_GETDISPINFO消息发送了。
只是比较奇怪,在Windows上,不插入列,LVN_GETDISPINO照样会被发送。
相关文章推荐
- 在win7系统下使用Windows XP Mode 和 Windows Virtual PC搭建window xp系统
- (转)Virtual List的使用方法
- DevExpress控件虚拟树VirtualTreeListData使用
- Windows Azure Virtual Network (10) 使用Azure Access Control List(ACL)设置客户端访问权限
- Windows Moible, Wince 使用.NET Compact Framework的进行蓝牙(Bluetooth)开发 之 蓝牙虚拟串口 (Bluetooth Virtual Serial Port)
- 虚拟列表的使用 virtual list usage
- WTL - Virtual List Controls(WTL下使用虚拟列表)
- 基于ime-mode属性使用详解
- wince 6.0 下MFC 模态非模态方式使用dll中的窗口
- 消息队列使用注意的地方(argument list too long)linux
- 自定义字段在List和ClassList等标签里的使用方法
- python版本控制神器Virtualenvwrapper的使用
- Android使用ActivityGroup设置android:windowSoftInputMode失效的问题
- Iterator迭代的过程中使用list.remove
- C#中使用List类
- 迭代器的使用之List和Map的遍历
- Insertion Sort List 使用插入排序将链表排序
- s:select 与Action中List集合使用
- 在Ubuntu14.04下使用ap-hotspot建立无线热点(AP mode)
- python list对象中嵌套元组使用sort时的排序方式