본문 바로가기

Windows/Windows API

비트맵 버튼 (SendDlgItemMessage, BM_SETIMAGE)

#include <windows.h>
#include "resource.h"

BOOL CALLBACK MainDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam);
HINSTANCE g_hInst;
HWND hDlgMain;

int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance
         ,LPSTR lpszCmdParam,int nCmdShow)
{
    g_hInst=hInstance;
    
    DialogBox(g_hInst, MAKEINTRESOURCE(IDD_DIALOG1), HWND_DESKTOP, MainDlgProc);

    return 0;
}

BOOL CALLBACK MainDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
    HBITMAP hBtnBit;
    HICON hIcon;
    switch(iMessage)
    {
    case WM_INITDIALOG:
        hDlgMain = hDlg;
        hBtnBit=LoadBitmap(g_hInst,MAKEINTRESOURCE(IDB_BITMAP1));
        hIcon=LoadIcon(g_hInst,MAKEINTRESOURCE(IDI_ICON1));
        SendDlgItemMessage(hDlg,IDC_BUTTON1,BM_SETIMAGE,
            (WPARAM)IMAGE_BITMAP,(LPARAM)hBtnBit);
        SendDlgItemMessage(hDlg,IDC_BUTTON2,BM_SETIMAGE,
            (WPARAM)IMAGE_ICON,(LPARAM)hIcon);
        return TRUE;
    case WM_COMMAND:
        switch (LOWORD(wParam))
        {
        case IDC_BUTTON1:
            MessageBox(hDlg,"비트맵 버튼을 클릭했습니다","알림",MB_OK);
            return 0;
        case IDC_BUTTON2:
            MessageBox(hDlg,"아이콘 버튼을 클릭했습니다","알림",MB_OK);
            return 0;
        case IDOK:
        case IDCANCEL:
            EndDialog(hDlgMain,0);
            return TRUE;
        }
        return FALSE;
    }
    return FALSE;
}