c++ - salida - Mayor profundidad de color para los iconos de la barra de herramientas de MFC?
profundidad de un pixel (2)
La razón por la que esto sucede es que la clase CToolbar de MFC usa una lista de imágenes internamente que se inicializa para usar solo 16 colores. La solución es crear nuestra propia lista de imágenes y decirle a la barra de herramientas que use eso en su lugar. Sé que esto funcionará para 256 colores, pero no lo he probado con mayores profundidades de bits:
Primero, cargue un mapa de bits de 256 colores a partir de un recurso:
HBITMAP hBitmap = (HBITMAP) ::LoadImage(AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDR_MAINFRAME), IMAGE_BITMAP,
0,0, LR_CREATEDIBSECTION | LR_LOADMAP3DCOLORS);
CBitmap bm;
bm.Attach(hBitmap);
A continuación, cree una lista de imágenes de 256 colores y agregue nuestro mapa de bits a ella:
CImageList m_imagelist.Create(20, 20, ILC_COLOR8, 4, 4);
m_imagelist.Add(&bm, (CBitmap*) NULL);
Finalmente, debemos decirle a la barra de herramientas que use la nueva lista de imágenes:
m_toolbar.GetToolBarCtrl().SetImageList(&m_imagelist);
También es posible que la nueva versión de MFC en VS2008 pueda haber resuelto este problema, ya que sé que muchos de los elementos de la interfaz de usuario se han actualizado. No he intentado usarlo todavía, así que no puedo estar seguro.
Me preguntaba cómo hacer una barra de herramientas en MFC que usaba mapas de bits de 24 bits o 256 colores en lugar de los horribles 16 de color.
¿Alguien puede indicarme un código simple?
Gracias
La solución funcionó sin defectos, solo necesitas arreglarlo un poco:
CImageList m_imagelist;
m_imagelist.Create(20, 20, ILC_COLOR8, 4, 4);
m_imagelist.Add(&bm, (CBitmap*) NULL);