ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Win32 API] 다이얼로그 아이콘 변경
    Programming Language/C++ 2017. 8. 8. 22:12

    (2014년에 네이버 블로그에서 작성했던 글을 티스토리로 옮기며 이관했습니다)

     

     

     

     

    CreateWindow API를 사용해서 폼을 생성하는 경우 WNDCLASS 구조체의 icon 멤버에 LoadIcon API를 사용하여 아이콘을 변경해 주면 되지만 다이얼로그는 조금 다릅니다.

     

    HICON 변수에 LoadImage API로 아이콘 이미지를 넣고, WM_INITDIALOG 메시지가 호출될 시 SendMessage API로 WM_SETICON 메시지를 호출시켜야 합니다.

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    #include "resource.h"
    #include <Windows.h>
     
    HICON hIcon;
    BOOL CALLBACK DlgProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam);
     
    int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow)
    {
        hIcon = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_ICON1), IMAGE_ICON, 1616, LR_DEFAULTSIZE); 
        DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DlgProc);
        return 0;
    }
     
    BOOL CALLBACK DlgProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
    {
        switch(iMessage)
        {
        case WM_INITDIALOG:
            SendMessage(hWnd, WM_SETICON, ICON_SMALL, (LPARAM)hIcon);
            break;
     
        case WM_COMMAND:
            switch(LOWORD(wParam))
            {
            case IDCANCEL:
                EndDialog(hWnd, IDCANCEL);
                break;
            }
            break;
        }
        return 0;
    }
     
    cs

     

Designed by Tistory.