리소스
:: 메뉴, 다이얼로그, 비트맵, 커서, 아이콘, 엑셀레이터(단축키), 문자열
→ 리소스는 아이디(중복되지 않는 양의 정수 값)로 다룬다.
① 아이콘 리소스
:: 왼쪽 상단과 최소화 때 하단 제목 표시줄에 나타나는 작은 이미지
→ *.ico 파일 확장자
크기 : 16x16, 32x32, 48 x48, 색상비트 : 4/8/32비트
※ 기본 : 4비트(16색), 32x32
→ 아이콘 아이디
접두사 IDI_


- 청록색 부분은 '투명색'으로 출력에서 제외되는 색상
- 저장하면 아이콘에 대한 아이디가 다르게 설정되어 별도로 사용할 수 있다.


- 아이콘 로딩 함수는 아래와 같다.
HICON LoadIcon(
__in HINSTANCE hInstance,
__in LPCTSTR IpIconName
);
이때 IpIconName에는 아이콘 아이디 정수값을 문자열 형식으로 지정할 수 있는데, 여기에 사용되는 함수가 MAKEINTRESOURCE() 이다.
LPTSTR MAKEINTRESOURCE(
WORD wInteger
);


- 좌측 상단에 ICON2의 내용이, 화면 표시 줄에는 ICON1의 내용이 출력됨을 확인할 수 있다.
② 커서 리소스
:: 커서 설정은 아이콘과 유사하며, 접두사는 IDC_ 이고 *.cur로 표현된다.
1) 커서 로딩 방법
※ 운영체제에서 제공하는 기본 커서 아이디
IDC_APPSTARTING, IDC_ARROW, IDC_CROSS, IDC_HAND, IDC_IBEAM, IDC_ICON, IDC_NO, IDC_SIZE, IDC_WAIT 등,,
- 기본 커서 로딩 함수는 아래와 같다.
HCURSOR LoadCursor(
__in HINSTANCE hInstance,
__in LPCTSTR IpCursorName
);
운영체제의 기본 커서 사용시 hInstance는 NULL 값, IpCursorName은 커서 기본 아이디를 넣으면 된다.

임의의 커서를 적용하기 위해선 인스턴스를 지정해줘야 한다.

(핫 스폿 설정이란 이 커서가 화면 내에 위치한다는 기준이 되는 지점)

2) 메세지를 통한 커서 설정 방법 --> 전체 윈도우 영역 안에서의 커서를 통제
- 마우스 이동 시 발생하는 메세지
WM_MOUSEMOVE, WM_SETCURSOR
HCURSOR SetCursor(
__in HCURSOR hCursor
);
메세지를 로딩한 후 핸들을 통해 커서를 지정해준다

.

③ 메뉴 리소스
:: 응용 프로그램의 부가적인 기능을 선택하여 실행
:: 사용자에 의해 선택되는 사용자 인터페이스




그러나 이를 클릭하면 아무 일도 일어나지 않는다.
따라서 메뉴를 실행시키려면 WndProc에 이와 관련된 메세지와 정보를 전달하는 코드가 필요하다.
※ 메뉴 관련 메시지
WM_COMMAND : 메뉴 선택
※ 메뉴 항목 구분
- 메뉴 아이디
메뉴 아이디는 wParam에 LOWORD를 통해 그 값이 들어오게 된다.
LOWORD(wParam)
wParam은 unsigned int로 4 Byte 크기를 가진다.
※ 메뉴 항목 호출 확인
메뉴 항목 호출을 확인하기 위해 '메시지 박스'를 이용할 것이다.
int WINAPI MessageBox(
_In_opt_ HWND hWnd, //핸들
_In_opt_ LPCTSTR IpText, //출력하고자 하는 문자열
_In_opt_ LPCTSTR IpCaption, //타이틀 바
_In_ UINT uType //메세지 형태
);
→ uType에 해당하는 아이디
MB_OK, MB_OKCANCEL, MB_RETRYCANCEL, MB_YESNO, MB_YESNOCANCEL 등




④ 문자열 리소스

캡션이 실제로 출력되는 내용이다.
※ 타이틀 명 수정해보기



하지만 이런 과정이 굉장히 번거롭다.
따라서 문자열은 이런 방법보단 코드에 바로 넣어주는 경우가 많다.
☆ 정리
- 리소스 편집기를 활용하여 리소스를 설정할 수 있다.
- 리소스 아이디는 중복되지 않게 알아서 저장된다.
- 기본 설정일 때 인스턴스는 NULL로 설정된다.
'Project > WIN32 API' 카테고리의 다른 글
그래픽 오브젝트 (0) | 2021.07.12 |
---|---|
그래픽 (0) | 2021.07.08 |
WndProc (0) | 2021.06.26 |
윈도우 창 생성 과정 (0) | 2021.06.25 |
윈도우즈 프로그래밍 (0) | 2021.06.25 |