La Red de Conocimientos Pedagógicos - Currículum vitae - mfc no puede cargar el mapa de bits del botón. El código es el siguiente.

mfc no puede cargar el mapa de bits del botón. El código es el siguiente.

En primer lugar, su control CBitmap debe tener el estilo BS_BITMAP

((CButton*)GetDlgItem(IDC_BUTTON_TEST))->ModifyStyle(0, BS_BITMAP);

En segundo lugar, su m_bmp no se puede destruir a voluntad. De forma predeterminada, el objeto HGDIOBJ mantenido por la clase principal de CBitmap, CGdiObj, se eliminará cuando se destruya. Utilice Detach para separar objetos GDI y objetos CGdiObj

HBITMAP hBitmap = (HBITMAP)m_bmp.Detach();

Juntos es

CBitmap m_bmp; p>

m_bmp.LoadBitmap(IDB_BITMAP1);

HBITMAP hBitmap = (HBITMAP)m_bmp.Detach();

((CButton*)GetDlgItem(IDC_BUTTON_TEST)) -> ModifyStyle(0, BS_BITMAP);

((CButton*)GetDlgItem(IDC_BUTTON_TEST))->SetBitmap(hBitmap);

Nota: si no presta atención a este objeto hBitmap, si lo libera usted mismo, se producirá una pérdida de memoria. Si esta imagen se usa durante todo el programa, entonces no hay problema en escribirla de esta manera, siempre y cuando no cargues Bitmap cada vez que se usa. No sé si habrá fugas si se usa LoadBitmap cada vez y qué tan graves serán las fugas. Se estima que se producirán fugas y es bastante grave