Cargar Bitmap como fondo de Dialog Box (help )

(1/1)

codeliber:
Hola compis  :),

A ver si alguien me hecha una mano en esto, porfa.
Deseo poner un fondo bitmap a un DialogBox (y así quitar ese gris triste y feo jo!!!)  ;D

Tengo lo siguente:

// ***********   file de recurso *.rc **************
IDB_BITMAP1    BITMAP   "bitmap.bmp"

PruebaFondo DIALOGEX 10, 10, 226, 180
STYLE DS_MODALFRAME | DS_SETFOREGROUND | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Prueba que no chuta ! jo!!!"
FONT 8, "Helv"
BEGIN
 CONTROL "", ID_FONDO, "STATIC", SS_BITMAP | WS_CHILD | WS_VISIBLE, 20, 20, 200, 150
END

// ***********   file *.cpp **********************
BOOL CALLBACK    Prueba_Fondo  (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
 static HWND           hBitmap;
 static HBITMAP       hBitmapRes;
 static HINSTANCE   hInstance;


 switch( msg ) { 
     case WM_CREATE: hBitmap = GetDlgItem( hDlg, ID_FONDO );
                                 hBitmapRes = LoadBitmap( hInstance ,MAKEINTRESOURCE( IDB_BITMAP1 ) );
                                 return FALSE;
      case WM_INITDIALOG:  SendMessage( hBitmap, STM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)hBitmapRes );
                                          return FALSE; 

 ...... etc... etc..... etc.....
// *******************************************

Pues, logicamente... como a veces ocurre... no funciona  :laugh:..  !!!
Es que no veo ningun fallo Jo !!! (que seguro hay.. jajajaja )  Alguien que hecha una mano?

Gracias compis  :)



codeliber:
Hola family,  ;D

Me contexto a mi mismo por si alguien le interesa.

El problema radica en que el DialogBox manda msg a WM_INITDIALOG y no a WM_CREATE !!!!  :-\

Por eso nunca se puede cargar el fila bitmap.

La solucion es:

switch( msg ) {                 
      case WM_INITDIALOG: hBitmap = GetDlgItem( hDlg, ID_FONDO );
                          hBitmapRes = LoadBitmap( GetModuleHandle(NULL), MAKEINTRESOURCE( IDB_BITMAP1 ) );
                          SendMessage( hBitmap, STM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)hBitmapRes );
                          SetWindowPos( hDlg, HWND_TOPMOST, 0,0,0,0, SWP_NOSIZE +  SWP_NOMOVE );
                          SetForegroundWindow( hDlg );


Gracias y saludos  :)


Navegación

[0] Índice de Mensajes