TN020: ID 명명 및 번호 매기기 규칙
이 참고에서는 MFC 2.0이 리소스, 명령, 문자열, 컨트롤 및 자식 창에 사용하는 ID 명명 및 번호 매기기 규칙에 대해 설명합니다.
MFC ID 명명 및 번호 매기기 규칙은 다음 요구 사항을 충족하기 위한 것입니다.
Visual C++ 리소스 편집기에서 지원하는 MFC 라이브러리 및 MFC 애플리케이션에서 사용되는 일관된 ID 명명 표준을 제공합니다. 이렇게 하면 프로그래머가 ID에서 리소스의 유형과 출처를 보다 쉽게 해석할 수 있습니다.
특정 유형의 ID 간에 강력한 1 대 1 관계를 강조합니다.
Windows에서 ID 이름을 지정하기 위해 이미 널리 사용되는 표준을 준수합니다.
ID 번호 매기기 공간을 분할합니다. 프로그래머, MFC, Windows 및 Visual C++에서 편집한 리소스에서 ID 번호를 할당할 수 있습니다. 적절한 분할은 ID 번호의 중복을 방지하는 데 도움이 됩니다.
ID 접두사 명명 규칙
애플리케이션에서 여러 유형의 ID가 발생할 수 있습니다. MFC ID 명명 규칙은 다양한 리소스 종류에 대해 서로 다른 접두사를 정의합니다.
MFC는 "IDR_" 접두사를 사용하여 여러 리소스 종류에 적용되는 리소스 ID를 나타냅니다. 예를 들어 지정된 프레임 창의 경우 MFC는 동일한 "IDR_" 접두사를 사용하여 메뉴, 액셀러레이터, 문자열 및 아이콘 리소스를 나타냅니다. 다음 표에서는 다양한 접두사 및 사용 현황을 보여 줍니다.
접두사 | 사용 |
---|---|
Idr_ | 여러 리소스 종류(주로 메뉴, 액셀러레이터 및 리본 메뉴에 사용됨)의 경우 |
Idd_ | 대화 상자 템플릿 리소스의 경우(예: IDD_DIALOG1) |
IDC_ | 커서 리소스의 경우 |
Idi_ | 아이콘 리소스의 경우 |
Idb_ | 비트맵 리소스의 경우 |
IDS_ | 문자열 리소스의 경우 |
DIALOG 리소스 내에서 MFC는 다음 규칙을 따릅니다.
접두사 또는 레이블 | 사용 |
---|---|
IDOK, IDCANCEL | 표준 푸시 단추 ID의 경우 |
IDC_ | 다른 대화 상자 컨트롤의 경우 |
"IDC_" 접두사는 커서에도 사용됩니다. 일반적인 애플리케이션에는 커서가 적고 대화 상자 컨트롤이 많기 때문에 이 명명 충돌은 일반적으로 문제가 되지 않습니다.
메뉴 리소스 내에서 MFC는 다음 규칙을 따릅니다.
접두사 | 사용 |
---|---|
Idm_ | MFC 명령 아키텍처를 사용하지 않는 메뉴 항목의 경우 |
ID_ | MFC 명령 아키텍처를 사용하는 메뉴 명령의 경우 |
MFC 명령 아키텍처를 따르는 명령에는 ON_COMMAND 명령 처리기가 있어야 하며 ON_UPDATE_COMMAND_UI 처리기가 있을 수 있습니다. 이러한 명령 처리기가 MFC 명령 아키텍처를 따르는 경우 메뉴 명령, 도구 모음 단추 또는 대화 상자 표시줄 단추에 바인딩되어 있는지 여부에 관계없이 올바르게 작동합니다. 동일한 "ID_" 접두사는 프로그램의 메시지 표시줄에 표시되는 메뉴 프롬프트 문자열에도 사용됩니다. 애플리케이션의 메뉴 항목 대부분은 MFC 명령 규칙을 따라야 합니다. 모든 표준 명령 ID(예: ID_FILE_NEW)는 이 규칙을 따릅니다.
또한 MFC는 "IDP_"을 특수한 형식의 문자열로 사용합니다("IDS_" 대신). "IDP_" 접두사를 가진 문자열은 메시지 상자에 사용되는 문자열인 프롬프트입니다. "IDP_" 문자열은 프로그램에서 결정한 문자열의 자리 표시자로 "%1" 및 "%2"를 포함할 수 있습니다. "IDP_" 문자열에는 일반적으로 관련 도움말 항목이 있으며 "IDS_" 문자열은 연결되지 않습니다. "IDP_" 문자열은 항상 지역화되며 "IDS_" 문자열은 지역화되지 않을 수 있습니다.
또한 MFC 라이브러리는 "IDW_" 접두사를 "IDC_" 대신 특수한 형태의 컨트롤 ID로 사용합니다. 이러한 ID는 프레임워크 클래스에 의해 뷰 및 분할자와 같은 자식 창에 할당됩니다. MFC 구현 ID에는 "AFX_" 접두사로 표시됩니다.
ID 번호 매기기 규칙
다음 표에서는 특정 형식의 ID에 대한 유효한 범위를 나열합니다. 일부 제한은 기술 구현 제한이며, 다른 제한은 ID가 Windows 미리 정의된 ID 또는 MFC 기본 구현과 충돌하지 않도록 설계된 규칙입니다.
권장 범위 내에 모든 ID를 정의하는 것이 좋습니다. 이러한 범위의 하한은 0이 사용되지 않으므로 1입니다. 일반적인 규칙을 사용하고 첫 번째 ID로 100 또는 101을 사용하는 것이 좋습니다.
접두사 | 리소스 유형 | 유효한 범위 |
---|---|---|
Idr_ | 여러 가지 | 1~0x6FFF |
Idd_ | 대화 상자 템플릿 | 1~0x6FFF |
IDC_,IDI_,IDB_ | 커서, 아이콘, 비트맵 | 1~0x6FFF |
IDS_, IDP_ | 일반 문자열 | 1~0x7FFF |
ID_ | 명령 | 0xDFFF 통해 0x8000 |
IDC_ | 컨트롤 | 8~0xDFFF |
이러한 범위 제한의 이유는 다음과 같습니다.
규칙에 따라 ID 값 0은 사용되지 않습니다.
Windows 구현 제한은 실제 리소스 ID가 0x7FFF 미만이거나 같도록 제한합니다.
MFC의 내부 프레임워크는 다음 범위를 예약합니다.
0x7FFF 통해 0x7000(afxres.h 참조)
0xEFFF 통해 0xE000(afxres.h 참조)
16000~18000(afxribbonres.h 참조)
이러한 범위는 향후 MFC 구현에서 변경될 수 있습니다.
여러 Windows 시스템 명령은 0xFFFF 통해 0xF000 범위를 사용합니다.
1부터 7까지의 컨트롤 ID는 IDOK 및 IDCANCEL과 같은 표준 컨트롤용으로 예약되어 있습니다.
문자열에 대한 0xFFFF 0x8000 범위는 명령에 대한 메뉴 프롬프트에 예약되어 있습니다.