3996|9

83

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

evc中mfc类 CListBox [复制链接]

evc的联机帮助Microsoft Foundation Class Library for Windows CE.NET中
对CListBox的DrawItem的说明,说DrawItem 可以重写,如果重写了,请问,如何让系统调用自己重写的DrawItem函数。
msdn中,有段代码

// CMyListBox is my owner-drawn list box derived from CListBox. This
// example draws an item's text centered vertically and horizontally. The
// list box control was created with the following code:
//  pmyListBox->Create(
//    WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
//    LBS_SORT|LBS_MULTIPLESEL,
//    myRect, pParentWnd, 1);
//

其中,WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
    LBS_SORT|LBS_MULTIPLESEL
没有指明是owner draw属性,
对于msdn的例子,有疑问,认为这样无法用自己的DrawItem函数重绘。请问,还有其他方法来自己绘listbox的项么?

最新回复

eiyaya说得对,EVC不支持CListBox重绘  详情 回复 发表于 2008-7-11 16:28
点赞 关注

回复
举报

57

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
我没有试过,不过,我可以给你一个MSDN中的链接,是讲的SDK的方法,如下:

打开MSDN,切换到目录选项卡;

依次导航:

Platform SDK Documentation
/User Interface Services
//Windows User Interface
///Controls
////List Boxes
/////About List Boxes
//////Owner-drawn List Boxes

里边详细讲解了并且有一个SDK写的例子,看懂了,MFC做更简单。

【Creating an Owner-Drawn List Box】

如果楼主已经看过了,那就当我没说了。

如果楼主还没有看过,那应该认真看看:

About List Boxes

Using List Boxes

其实,MFC只是一层皮!
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
补充一下,我用的MSDN版本为:

MSDN Library October 2001
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

4
 
LVS_OWNERDATA | LVS_OWNERDRAWFIXED
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

5
 
to zaodt :

谢谢你,你说的这个是个 很不错的例子,曾在某本书上看倒过类似的介绍。你说的,应该是VC里面的,我所指的是evc里面的CListBox.

to lenux :

你说得这个
LVS_OWNERDATA   ?   LVS_OWNERDRAWFIXED
是 list view类的属性,listbox好像不实用,Thank you all the same!
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

6
 
TO 【涓涓】

不要把 VC 和 eVC 严格区分开,它们其实是一样的!

因为 WinCE 是基于 Windows 的,它们的编程原理都一样。

你用 eVC 中的 MFC 编写程序,但是它真正执行的还是 SDK 程序,MFC 只是层皮,真正需要搞懂的还是 SDK 编程。

在 SDK 中有这么一句话:

An application can create an owner-drawn list box by specifying the LBS_OWNERDRAWFIXED or LBS_OWNERDRAWVARIABLE style.

可以看出应该为 List Box 设置其中一个属性。

The parent window or dialog box of an owner-drawn list box (its owner) receives WM_DRAWITEM messages when a portion of the list box needs to be painted.

这样,List Box 会向父窗口发出 WM_DRAWITEM 消息,父窗口来负责重绘。

在MFC中,假如你的 List Box 控件是在对话框中,那对话框负责重绘工作。
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

7
 
看看这个吧。
http://www.codeproject.com/KB/mobile/ccelistctrlex.aspx
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

8
 
要下载源代码,
我刚下载下来放在我的资源里了
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

9
 
to   zaodt   :

     evc中CListBox不支持LBS_OWNERDRAWFIXED   or   LBS_OWNERDRAWVARIABLE   

在其父窗口收到WM_DRAWITEM   消息时,执行OnDrawItem函数时,无法映射到CListBox重写的DrawItem函数。

就是 lenux 推荐文章中说的,Wince中,CListBox不支持重绘图。

散分了,再次谢谢二位
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

10
 
eiyaya说得对,EVC不支持CListBox重绘
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表