一、問題代碼及截圖
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_toolBar.GetToolBarCtrl().SetImageList(&m_ilTB);
代碼說明:
a). IDB_BITMAP_CONFIG、IDB_BITMAP_ABOUT、IDB_BITMAP_EXIT為三張bmp圖檔.
b). 這段代碼加在OnInitDialog中
二、函數說明
2.1 百度百科:http://baike.baidu.com/view/1725414.htm?fr=ala0_1
2.2 Add方法
int Add(
CBitmap* pbmImage,
CBitmap* pbmMask
);
COLORREF crMask
HICON hIcon
1.2中是用的第一個重載,關鍵是第二個參數pbmMask,網絡上的翻譯是:指向包含掩碼的位圖的指針。如果無掩碼與圖象清單一起使用,此參數被忽略。而後來翻閱資料才知道一般人用的是第二個方法重載,通過crMask來實作透明效果。
三、正常代碼
m_ilTB.Add(&m_config,RGB(255,255,255));
m_ilTB.Add(&m_about,RGB(255,255,255));
m_ilTB.Add(&m_exit,RGB(255,255,255));
修改完後在XP、2003、Win7下居顯示正常!