Win32 API with 나우캠퍼스

Win32 API 3강. 리소스(resource) - 메뉴 및 문자열 리소스

코다람쥐 2022. 8. 13. 15:02

6. 메뉴 리소스


 

▩ 메뉴

응용 프로그램의 부가적인 기능을 선택하여 실행

접두사 : IDR

메뉴 설정

 

▩ 메뉴 ID

ID 보는방법
메뉴 ID

ID를 통해서 메뉴에 접근하여 메뉴를 클릭 시  어떻게 작동할지 코드로 작성할 수 있다.

 

메뉴 로딩 및 적용


▩ 메뉴 로딩

ATOM MyRegisterClass(HINSTANCE hInstance)
{
    --------- 생략 -----------
    wcex.lpszMenuName   = MAKEINTRESOURCEW(IDR_MENU1);
    --------- 생략 -----------
}

 

 

메뉴 항목의 호출 확인


▩ 메뉴 관련 메시지

WM_COMMAND : 메뉴 선택

 

▩ 메뉴 항목 구분

- 메뉴 아이디

LOWROD(wParam)

wParam => unsinged int (4byte) => HIWORD(2byte) + LOWORD(2byte)

 

▩ 메시지 박스

int MessageBox(
   HWND hWnd,
   LPCTSTR lpszText, 
   LPCTSTR lpszCaption = _T(""), 
   UINT nType = MB_OK 
);

 

 

 

- 메뉴 항목 호출 확인.

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HCURSOR hCursor;
    int wmId, wmEvent;
    PAINTSTRUCT ps;
    HDC hdc;

    switch (message)
    {
    case WM_SETCURSOR:
        hCursor = LoadCursor(hInst, MAKEINTRESOURCE(IDC_CURSOR1));
        SetCursor(hCursor);
        break;
    case WM_COMMAND:
        {
            wmId = LOWORD(wParam);
            wmEvent = HIWORD(wParam);
            // 메뉴 선택을 구문 분석합니다:
            switch (wmId)
            {
            case ID_32771: // 열기 메뉴
                MessageBox(0, "열기", "연습", MB_OK);
                break;

 

 

7. 문자열 리소스

문자열 리소스


▩ 문자열 리소스 편집기

IDS_APP_TITLE : 윈도우 타이틀

캡션 컬럼을 통해서 문자의 내용을 입력하고 수정할 수 있다.

 

- 메뉴 타이틀과 윈도우 클래스명 정의

WCHAR szTitle[MAX_LOADSTRING];                  // 제목 표시줄 텍스트입니다.
WCHAR szWindowClass[MAX_LOADSTRING];            // 기본 창 클래스 이름입니다.
-------         생략---------------

	LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
	LoadStringW(hInstance, IDC_MY20220813, szWindowClass, MAX_LOADSTRING);

LoadStringW()은 WinMain클래스 안에 위와 같이 사용되고 있다.