MFC CImageList僅顯示黑色的問題

2021-09-06 00:07:18 字數 1916 閱讀 4735

前言

鼓搗mfc中的工具欄時用到了cimagelist,沒仔細翻閱資料就開始用,結果出現了win7 (32/64bit)系統中顯示沒問題,到xp和2003下就只顯示黑色的問題...

正文

一、問題**及截圖

1.1  截圖

1.1.1  win7

1.1.2  win2003 / xp

1.2  **

cimagelist    m_iltb;

cbitmap m_about;

cbitmap m_config;

cbitmap m_exit;

m_iltb.create(

32, 

32, true 

|ilc_color8, 3, 

0);m_iltb.setbkcolor(::getsyscolor(color_btnface));

//:getsyscolor(color_btnface)

//rgb(0, 0, 0) &m_config

//hicon hicon = null;

m_config.loadbitmap(idb_bitmap_config);

m_iltb.add(

&m_config,

&m_config

);m_about.loadbitmap(idb_bitmap_about);

m_iltb.add(

&m_about,

&m_about

);m_exit.loadbitmap(idb_bitmap_exit);

m_iltb.add(

&m_exit,

&m_exit

);m_*******.get*******ctrl().setimagelist(

&m_iltb);

**說明:

a).  idb_bitmap_config、idb_bitmap_about、idb_bitmap_exit為三張bmp.

b).  這段**加在oninitdialog中

二、函式說明

2.2  add方法

intadd(

cbitmap

*pbmimage,

cbitmap

*pbmmask 

);int

add(

cbitmap

*pbmimage,

colorref crmask 

);int

add(

hicon hicon );

1.2中是用的第乙個過載,關鍵是第二個引數pbmmask,網路上的翻譯是:指向包含掩碼的點陣圖的指標。如果無掩碼與圖象列表一起使用,此引數被忽略。而後來翻閱資料才知道一般人用的是第二個方法過載,通過crmask來實現透明效果。

三、正常**

m_config.loadbitmap(idb_bitmap_config);

m_iltb.add(

&m_config,rgb(

255,

255,

255));

m_about.loadbitmap(idb_bitmap_about);

m_iltb.add(

&m_about,rgb(

255,

255,

255));

m_exit.loadbitmap(idb_bitmap_exit);

m_iltb.add(

&m_exit,rgb(

255,

255,

255));

修改完後在xp、2003、win7下居顯示正常!

結束

這問題還真是不好找,關鍵是不報錯,而且還在win7下能正常顯示,看來用之前還是要先好好看看例子再用 :)

MFC CImageList僅顯示黑色的問題

前言 鼓搗mfc中的工具欄時用到了cimagelist,沒仔細翻閱資料就開始用,結果出現了win7 32 64bit 系統中顯示沒問題,到xp和2003下就只顯示黑色的問題.正文 一 問題 及截圖 1.1 截圖 1.1.1 win7 1.1.2 win2003 xp 1.2 cimagelist m...

bootstrap datepicker顯示中文

網上教你怎麼顯示中文很多,我也看了很多。但是並沒有解決我顯示不了中文的疑惑。一般來說引入的方式首先是引入樣式指令碼 src script src script 然後是在datepicker中設定language zh cn start datepicker 上面這個版本是正確的,但是為什麼當時我會一...

Element ui DatePicker顯示週數

我們公司是做電商的,運營的工作指標都是按周來定的,所以他們對周特別敏感,希望我們能在日期選擇器上顯示週數。剛接到這個需求時,心中很不樂意,因為element ui的日期選擇器根本不支援顯示週數。我只能看看原始碼來看看能否有解決的辦法 具體 大家可以在github中看到 我們很輕鬆就能找到datepi...