简单关于图标的问题 ----》》》
在OnPaint()函数里
调用
CPaintDC dc(this); // device context for painting
HICON icon = AfxGetApp()->LoadIcon(IDI_ICON1);
dc.DrawIcon(50,60,(HICON)icon);
画不出图标。
如果改成
HICON icon = AfxGetApp()->LoadIcon(IDI_ICON2);
dc.DrawIcon(50,60,(HICON)icon);
可以画出图标。
注: IDI_ICON1是16×16的图标
IDI_ICON2是32×32的图标
请问我怎样才能画出16×16的图标??
问题点数:20、回复次数:6Top
1 楼acptvc(微软全球技术中心 VC技术支持)回复于 2002-04-11 17:41:58 得分 0
我们注意到了您提到的情况,在现在使用的大部分显示适配器中,使用SM_CXICON和SM_CYICON这两个值来调用GetSystemMetrics()函数的时候,返回的值都是32,这也是Developer Studio中创建ICON时的大小,当图标在桌面上显示的时候采用的也是32*32的大小。因为使用LoadIcon()函数的时候,它只对符合SM_CXICON和SM_CYICON的规定大小的图标才有效,所以,你希望的操作没有完成。
当您想要装载的图标大小与上述的两个值不符合的时候(32*32),您可以使用LoadImage()函数来装载,然后再使用适当的方法来显示,这样就可以达到您的目的了。因为LoadIcon()函数只限于标准大小的图标,所以可以考虑更多地使用其他的方法来进行对图像的装载操作。
如果您需要进一步的信息,您可以参看:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/CommCtls/winui/icons_799r.asp
- 微软全球技术中心 VC技术支持
本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款
(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。
为了为您创建更好的讨论环境,请参加我们的用户满意度调查
(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。Top
2 楼ricky460(阿酷)回复于 2002-04-12 19:04:23 得分 0
能不能请大侠讲的具体些,比如我用loadimage怎样调,我好像调不成功啊.Top
3 楼wuzhibiao(流氓兔儿)回复于 2002-04-12 19:08:32 得分 0
CImageList image;
image.Create(16,16,this,1,1)
Top
4 楼2ndboy(贱男春)回复于 2002-04-12 19:11:49 得分 10
用DrawIconEx吧,它可以定义显示图标的大小Top
5 楼delphihero(何去何从)回复于 2002-04-12 19:21:23 得分 10
::DrawIconEx(pDC->m_hDC,0,0,m_hIcon,16,16,0,0,DI_NORMAL);
m_hIcon 位图标句柄。pDC是 CDC类Top
6 楼ricky460(阿酷)回复于 2002-04-16 12:20:39 得分 0
谢谢丢丢和阿蒙.现在给分......Top



