gpt4 book ai didi

c++ - Windows XP 上的真彩色 CImageList

转载 作者:太空狗 更新时间:2023-10-29 21:49:35 30 4
gpt4 key购买 nike

我在 CDialog 中有以下代码。此代码在 Windows 7 上完美运行,但在 Windows XP SP3 上它的颜色始终为黑色。

UINT color_flags = CWindowDC(this).GetDeviceCaps(BITSPIXEL);

switch ( color_flags )
{
case 4 : color_flags = ILC_COLOR4; break;
case 8 : color_flags = ILC_COLOR8; break;
case 16 : color_flags = ILC_COLOR16; break;
case 24 : color_flags = ILC_COLOR24; break;
case 32 : color_flags = ILC_COLOR24; break;
default : color_flags = ILC_COLOR24;
};

CImageList imgage_list;
imgage_list.Create( 16, 16, color_flags, 0, 10 );
imgage_list.SetImageCount( number_of_bitmaps );

CDC * pDC = this->GetDC();
CDC memDC;
CRect memRect(0, 0, 16, 16);
CObject * pObj = 0;
COLORREF my_color = RGB(255,0,0);
CBitmap * bitmap = 0;
memDC.CreateCompatibleDC(pDC);

for ( int i = 0; i < number_of_bitmaps; ++i )
{
bitmap = new CBitmap;
bitmap->CreateCompatibleBitmap( pDC, 16, 16 );
pObj = memDC.SelectObject( bitmap );
memDC.FillSolidRect( memRect, my_color );
imgage_list.Replace( i, bitmap, 0 );
memDC.SelectObject(pObj);
delete bitmap;
}

memDC.DeleteDC();
this->ReleaseDC(pDC);

我按照 MSDN 的建议启用了视觉样式.我使用此 CImageList 对象作为 CListCtrl::SetImageList 的参数成员函数。

你有什么想法吗?

非常感谢您的帮助。

最佳答案

您还没有初始化您的 memDC,所以它没有正确响应。在执行 SelectObject 选择位图之前,请执行以下操作:

memDC.CreateCompatibleDC(pDC);

关于c++ - Windows XP 上的真彩色 CImageList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8063156/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com