Win32 API with 나우캠퍼스
Win32 API 3강. 리소스(resource) - 메뉴 및 문자열 리소스
코다람쥐
2022. 8. 13. 15:02
6. 메뉴 리소스
▩ 메뉴
응용 프로그램의 부가적인 기능을 선택하여 실행
접두사 : IDR

▩ 메뉴 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클래스 안에 위와 같이 사용되고 있다.