
'====================================================================
' Simple modal dialog as main.
'====================================================================
$ filename "ImgButtonX.exe"
'use rtl32
use rtl64

'% review

uses dialogs
'namespace

% DS_CENTER=0x0800
% LR_LOADFROMFILE=0x0010
% IMAGE_BITMAP=0
% ICON_BIG=1
% WM_SETICON=0x80

! GetDlgItem lib "user32.dll" (sys hDlg, int nIDDlgItem) as sys
! MapDialogRect lib "user32.dll" (sys hDlg, lpRect) as bool
! 
'  id for buttons and dialog
#define IDD_DLG1 1000
#define IDC_BTN1 1001
#define IDC_BTN2 1002

'  bitmap and icon ids as given in the resource  or rc file 
% IDI_APPICON=500
% IDB_BITMAP1 =501
% IDB_BITMAP2 =502


=============================================
 ' dim hInstance as sys
'  hInstance = GetModuleHandle(NULL)



'===================================================
'  Call back function
function DialogProc( sys hDlg, uint uMsg, sys wParam, lParam ) as int callback

  float pixelX, pixelY
  dim  hbmp1, hbmp2 as sys
 
 ' handle for the button
  sys hButton1=GetDlgItem(hDlg, IDC_BTN1)
  sys hButton2=GetDlgItem(hDlg, IDC_BTN2)
       
  select case uMsg
 
    case WM_INITDIALOG
       sys AppIcon = LoadIcon(GetModuleHandle(NULL), IDI_APPICON)
       'Set Icon to Main Window
       SendMessage(hDlg, WM_SETICON, ICON_BIG, AppIcon)
   
  '    obtain the size of the button 1 in pixel
       RECT rc = {0, 0, 4, 8}
       MapDialogRect (hDlg, @rc)
       pixelX = rc.right /4
       pixelY = rc.bottom /8
         
    '  size of button 1 in screen pixels
       int width1=25*pixelX
       int height1 =25*pixelY

                 
'       hBmp1=LoadImage(hDlg,"Print_25.bmp",IMAGE_BITMAP, width1,height1, LR_LOADFROMFILE )
       hBmp1 = LoadImage(GetModuleHandle(BYVAL  NULL), IDB_BITMAP1, IMAGE_BITMAP, width1,height1,0)
       SendMessage (hButton1, BM_SETIMAGE, IMAGE_BITMAP, hBmp1)


    '  size of button 2 in screen pixels 
       int width2=20*pixelX
       int height2 =20*pixelY

'       hBmp2=LoadImage(hDlg,"Mglass_B.bmp",IMAGE_BITMAP, width2,height2, LR_LOADFROMFILE )
       hBmp2 = LoadImage(GetModuleHandle(BYVAL  NULL), IDB_BITMAP2, IMAGE_BITMAP, width2,height2,0)
       SendMessage (hButton2, BM_SETIMAGE, IMAGE_BITMAP, hBmp2)


       return true

 
    case WM_COMMAND
      select case loword(wParam)
     
        case IDC_BTN1    
          '  Button1 is click
           mbox "Pushed!"
           
       case IDC_BTN2    
          '  Button2  is click
             mbox " Button 2 clicked"


        case IDCANCEL
           EndDialog( hDlg, null )
      end select
     
    case WM_CLOSE
      EndDialog( hDlg, null )
               
  end select

  return 0
end function



'========================================
'    Display the Main dialog
sub Dispmain()

  sys lpdt
 
  'provide memory for DLGTEMPLATE structure etc   
  dyn::init(lpdt) '1024

 ' display the main dialog
  Dialog( 2,  10,10,230,230, "ImgButton Test", lpdt,
          WS_POPUP|WS_VISIBLE|WS_CAPTION|WS_SYSMENU or DS_CENTER or DS_SETFONT,
          8,"MS Sans Serif" )

'  add in the buttons  
'  CONTROL "IDC_BTN",IDC_BTN1,"Button",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP or BS_BITMAP or WS_DLGFRAME,82,82,25,25
  CONTROL "IDC_BTN", IDC_BTN1,"Button", _
  WS_CHILDWINDOW or WS_VISIBLE  or WS_TABSTOP or BS_LEFT or BS_PUSHBUTTON  or WS_Border, _
  82,82,25,25

'  CONTROL "IDC_BTN",IDC_BTN2,"Button",WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP or BS_BITMAP or WS_DLGFRAME,182,182,20,20
  CONTROL "IDC_BTN", IDC_BTN2,"Button", _
  WS_CHILDWINDOW or WS_VISIBLE  or WS_TABSTOP or BS_LEFT or   BS_PUSHBUTTON or WS_Border, _
  182,182,20,20
             

  CreateModalDialog( null, @DialogProc, 0, lpdt )

end sub



'======================
'  Program starts here
Dispmain()

