各関数名をよく調べれば理解できるようになると思います。
実行ファイルと同じディレクトリに1.bmpと言う名前のビットマップを置いておいてください。
コード:
'-----------------------------------------------------------------------------
' イベント プロシージャ
'-----------------------------------------------------------------------------
' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。
' ウィンドウ ハンドル: hMainWnd
' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。
Dim hMemDC As HDC
Dim hBitmap As HBITMAP
'-----------------------------------------------------------------------------
' ウィンドウメッセージを処理するためのコールバック関数
Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。
' イベントプロシージャの呼び出しを行います。
MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function
'-----------------------------------------------------------------------------
' ここから下は、イベントプロシージャを記述するための領域になります。
Sub MainWnd_Destroy()
DeleteDC(hMemDC)
DeleteObject(hBitmap)
testbmp_DestroyObjects()
PostQuitMessage(0)
End Sub
Sub MainWnd_CommandButton1_Click()
Dim hBmp1 As HBITMAP,memdc As HDC,hDC As HDC
'下準備
hDC=GetDC(hMainWnd)
hBmp1=LoadImage(GetWindowLong(hMainWnd,GWL_HINSTANCE) As HINSTANCE,"1.bmp",IMAGE_BITMAP,0,0,LR_DEFAULTSIZE or LR_LOADFROMFILE)
memdc=CreateCompatibleDC(hDC)
SelectObject(memdc,hBmp1)
'描画
BitBlt(hMemDC,0,0,100,100,memdc,0,0,SRCAND)
BitBlt(hDC,0,0,100,100,memdc,0,0,SRCAND)
'開放
DeleteObject(memdc)
ReleaseDC(hMainWnd,hDC)
DeleteObject(hBmp1)
End Sub
Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
Dim hDC As HDC,rc As RECT
Dim hOldBrush As HBRUSH
hDC=GetDC(hMainWnd)
GetClientRect(hMainWnd,rc)
hBitmap=CreateCompatibleBitmap(hDC,rc.right,rc.bottom)
hMemDC=CreateCompatibleDC(hDC)
SelectObject(hMemDC,hBitmap)
hOldBrush=SelectObject(hMemDC,GetStockObject(BLACK_BRUSH))
PatBlt(hMemDC,0,0,rc.right,rc.bottom,PATCOPY)
SelectObject(hMemDC,hOldBrush)
ReleaseDC(hMainWnd,hDC)
End Sub