У вас уже есть хорошие ответы, я просто хотел добавить один. Вы также можете пойти с LEFT JOIN
:
SELECT temp.a
FROM temp
LEFT JOIN temp2
ON temp.a = temp2.a
WHERE temp2.a IS NULL;
Причина это происходит, состоит в том, что класс 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 были обновлены. Я на самом деле не попытался использовать его все же, таким образом, я не могу быть уверен.
Решение работало безупречно, вам нужно только немного исправить:
CImageList m_imagelist;
m_imagelist.Create(20, 20, ILC_COLOR8, 4, 4);
m_imagelist.Add(&bm, (CBitmap*) NULL);