win32 리소스에 관한 질문입니다

리소스 파일인 .rc파일을 만들고 그 안에서

문자열 리소스를 추가해서 사용했습니다
image
문자열 리소스는 다음과 같이 정의했습니다

그런데 의문이 드는것이 .rc파일이 사용하는

resource.h파일에는 그냥
#define IDS_MyClassName 101
과 같이 그냥 일반적인 매크로로 정의되어있습니다

그래서 사용자는 resource.h파일을 include한다음에 이 아이디를 이용해

리소스로 정의했던 문자열을 사용할수 있습니다

그런데 내부적으로는 어떻게 동작하길레 이것이 가능한건가요?

만약

WNDCLASSEX wcex;
...
wcex.lpszClassName = MAKEINTRESOURCE(IDS_MyClassName);
...

다음과 같이 리소스에 추가한 문자열에 해당되는 매크로를 사용할경우

resource.h파일에 정의된 매크로들과 대응되는 정수값과 대응되는 문자열로 바꿔 주는건가요?

만약 그런거라면 언제 해주는 건가요?

링크때 인가요?

네 vs에서는 리소스 컴파일러가 리소스 파일을 컴파일 하고요.
그걸 링커가 소스코드와 연결해줍니다.

아 그렇군요 그냥 리소스를 컴파일하는것을 리소스 컴파일이라고 하는줄 알았는데

리소스 컴파일러가 따로 있는거 였군요

궁금한게 있는데요 .rc파일이 사용하는 resource.h파일도 "리소스 컴파일러"가 컴파일하는 건가요?

헤더파일은 컴파일을 따로 하진 않습니다. 소스코드에서 헤더파일을 include 할 뿐이죠.
미리 컴파일된 헤더라는것도 있긴한데 이 주제랑은 상관없는 이야기이고요.

그렇군요 감사합니다