CImageList函数的create函数如何使用呀?

我对CImageList函数的create函数一点也不会用呀,对里面的参数更是不理解呀,谁会呀?教教我呀,举个例子哈,我基础不太好呀!!呵呵!... 我对CImageList函数的create函数一点也不会用呀,对里面的参数更是不理解呀,谁会呀?教教我呀,举个例子哈,我基础不太好呀!!呵呵! 展开
 我来答
瘦成一导闪电呀
高粉答主

2015-11-22 · 每天分享健身知识,希望每位小仙女走路带风
瘦成一导闪电呀
采纳数:1266 获赞数:52259

向TA提问 私信TA
展开全部
函数功能:该函数创建一个与指定设备兼容的内存设备上下文环境(DC)。
函数原型:HDC CreateCompatibleDC(HDC hdc);
参数:
hdc:现有设备上下文环境的句柄,如果该句柄为NULL,该函数创建一个与应用程序的当前显示器兼容的内存设备上下文环境。
返回值:如果成功,则返回内存设备上下文环境的句柄;如果失败,则返回值为NULL。

CreateCompatibleDc函数只适用于支持光栅操作的设备,应用程序可以通过调用GetDeviceCaps函数来确定一个设备是否支持这些操作。
当不再需要内存设备上下文环境时,可调用DeleteDc函数删除它。

用双缓冲的话还要再定义一个位图对象吧,然后用CreateCompatibleBitmap建立一个与屏幕显示兼容的位图,再用SelectObject将位图选入到内存显示设备中,不知道是不是这样

首先给出实现的程序,然后再解释,同样是在OnDraw(CDC *pDC)中:
CDC MemDC; //首先定义一个显示设备对象
CBitmap MemBitmap;//定义一个位图对象
//随后建立与屏幕显示兼容的内存显示设备
MemDC.CreateCompatibleDC(NULL);
//这时还不能绘图,因为没有地方画 ^_^
//下面建立一个与屏幕显示兼容的位图,至于位图的大小嘛,可以用窗口的大小,也可以自己定义(如:有滚动条时就要大于当前窗口的大小,在BitBlt时决定拷贝内存的哪部分到屏幕上)
MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);
ieakkc
2010-12-16 · TA获得超过483个赞
知道答主
回答量:342
采纳率:0%
帮助的人:270万
展开全部
你没指定Image索引号。
把:
m_listctr.InsertItem(0,TEXT("电脑"));
m_listctr.InsertItem(0,TEXT("电话"));
m_listctr.InsertItem(0,TEXT("书籍"));
m_listctr.InsertItem(0,TEXT("钢笔"));
改为:
int imageIndex = 0; //图标索引号
m_listctr.InsertItem(0,TEXT("电脑"), imageIndex );
m_listctr.InsertItem(0,TEXT("电话"), imageIndex );
m_listctr.InsertItem(0,TEXT("书籍"), imageIndex );
m_listctr.InsertItem(0,TEXT("钢笔"), imageIndex );

补充:
刚才查了一下MSDN。设置给CListCtrl的CImageList要采用动态申请的方式,并且CListCtrl会负责释放CImageList的内存。
改为如下代码:

CImageList *Licon,*Sicon;
Licon = new CImageList();
Sicon = new CImageList();
Licon->Create(32,32,ILC_COLOR8|ILC_MASK,1,1);
Sicon->Create(16,16,ILC_COLOR8|ILC_MASK,1,1);
Licon->Add(AfxGetApp()->LoadIcon(IDR_MAINFRAME));
Sicon->Add(AfxGetApp()->LoadIcon(IDR_MAINFRAME));

m_listctr.SetImageList(Licon,LVSIL_NORMAL);
m_listctr.SetImageList(Sicon,LVSIL_SMALL);
m_listctr.InsertItem(0,TEXT("电脑"),0);
m_listctr.InsertItem(0,TEXT("电话"),0);
m_listctr.InsertItem(0,TEXT("书籍"),0);
m_listctr.InsertItem(0,TEXT("钢笔"),0);

上述代码我已经调试通过。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式