Cargar Bitmap como fondo de Dialog Box (help )

Iniciado por codeliber, 15 Mayo 2010, 10:06 AM

0 Miembros y 1 Visitante están viendo este tema.

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  :)



No quiero ser un pez, por eso necesito que me enseñes a pescar. :)

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  :)


No quiero ser un pez, por eso necesito que me enseñes a pescar. :)