Более высокая глубина цвета для значков панели инструментов MFC?

У вас уже есть хорошие ответы, я просто хотел добавить один. Вы также можете пойти с LEFT JOIN:

SELECT temp.a
FROM temp 
LEFT JOIN temp2 
ON temp.a = temp2.a
WHERE temp2.a IS NULL;
10
задан Adam Pierce 13 September 2009 в 23:06
поделиться

2 ответа

Причина это происходит, состоит в том, что класс CToolbar MFC использует список изображений внутренне, который инициализируется для использования 16 цветов только. Решение состоит в том, чтобы создать наш собственный список изображений и сказать панели инструментов использовать это вместо этого. Я знаю, что это будет работать на 256 цветов, но я не протестировал его с более высокими битовыми глубинами:

Во-первых, загрузите битовый массив с 256 цветами из ресурса:

HBITMAP hBitmap = (HBITMAP) ::LoadImage(AfxGetInstanceHandle(),
    MAKEINTRESOURCE(IDR_MAINFRAME), IMAGE_BITMAP,
    0,0, LR_CREATEDIBSECTION | LR_LOADMAP3DCOLORS);
CBitmap bm;
bm.Attach(hBitmap);

Затем, создайте список с 256 цветными изображениями и добавьте наш битовый массив к нему:

CImageList m_imagelist.Create(20, 20, ILC_COLOR8, 4, 4);
m_imagelist.Add(&bm, (CBitmap*) NULL);

Наконец, мы должны сказать панели инструментов использовать новый список изображений:

m_toolbar.GetToolBarCtrl().SetImageList(&m_imagelist);

Также возможно, что новая версия MFC в VS2008, возможно, решила эту проблему, поскольку я знаю, что многие элементы UI были обновлены. Я на самом деле не попытался использовать его все же, таким образом, я не могу быть уверен.

11
ответ дан 4 December 2019 в 01:03
поделиться

Решение работало безупречно, вам нужно только немного исправить:

CImageList m_imagelist;
m_imagelist.Create(20, 20, ILC_COLOR8, 4, 4); 
m_imagelist.Add(&bm, (CBitmap*) NULL); 
0
ответ дан 4 December 2019 в 01:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: