2014-01-29 65 views
1

問題:
添加32位圖標添加到CToolBar的情況似乎不正常工作
(圖像質量變化)。CToolbar是否支持32位圖標按鈕?

  • 1日將告訴您如何32個圖像從MSDN文檔添加到CToolBar的
  • 2擋(實際上一個頁面:

    我在web主題的2個類別,與我的問題遇到),該「CToolBar的 支持具有最大的16種顏色的位圖」(http://msdn.microsoft.com/en-us/library/69wz6ea1.aspx

令人奇怪的是「16個色」在文檔中提到,而不是2^16點的顏色, 所以我可能解釋,我錯誤的信息。

回答

2

如果你看看CToolBar::LoadBitmap你會看到的位圖使用AfxLoadSysColorBitmap加載。快速查看該功能可以看出,顏色表固定爲16種顏色。

// make copy of BITMAPINFOHEADER so we can modify the color table 
const int nColorTableSize = 16; 

與MFC中的大多數事情,你可能會如果重寫足夠的方法將其加載32位的位圖,但正如你可能已經看到了在其他地方你真的想使用CMFCToolBar不只是支持更高的顏色深度,但也有許多其他改進的功能。

+0

請問這個數字「16」代表的顏色數或位的數量?我知道一個CMFCToolbar的,但由於我使用的是傳統的項目工作,這將是非常痛苦的改進的版本替換CToolBar的所有發生。順便說一句,謝謝你的回答,你給了我有用的信息,證明我的擔憂!附:我恨MFC的功能和特別的文件,如果我被允許使用Qt - 我應該馬上行動吧)) –

+0

你是正確的,應該是16個色不是16位。 – snowdude

1

相當一段時間CToolBar的已通過圖像列表支持的圖像。

因此,技巧加載默認的16色的形象,是工具欄資源的一部分,然後將其分配給通過所包含CToolBarCtrl工具欄之前創建的任何顏色深度的圖像列表。

即。

if (m_toolbar.LoadToolBar(IDR_MAINFRAME)) 
{ 
    // create imagelist 
    if (m_imageList.Create(....)) 
    { 
     m_toolbar.GetToolBarCtrl().SetImageList(&m_ilNormal); 
    } 
}