TN020: ID 명명 및 번호 매기기 규칙
이 주석은 ID 명명 및 MFC 2.0을 사용하여 리소스, 명령, 문자열, 컨트롤 및 자식 창에 대한 번호 매기기 규칙을 설명합니다.
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 라이브러리는 컨트롤 ID ("IDC_" 대신) 의 특수한 형식으로 "IDW_" 접두사를 사용합니다. 이러한 ID는 프레임 워크 클래스에서 뷰 분할자와 같은 자식 창에 할당됩니다. MFC 구현 ID는 "AFX_" 라는 접두사가 됩니다.
ID 번호 매기기 규칙
다음 표에서 특정 종류의 ID에 대한 유효한 범위입니다. 제한 중 일부는 기술 구현 제한이고 이외에는 Windows에 미리 정의된 ID 또는 MFC 기본 구현과의 충돌로 부터 ID 형태를 보호하도록 설계된 규칙입니다.
권장된 범위 내에 모든 ID를 정의하는 것이 좋습니다. 이러한 범위의 하위 제한은 0이 사용되지 않으므로 1입니다. 일반적인 규칙을 사용하여 첫 번째 ID를 101 또는 100을 사용하는 것이 좋습니다.
접두사 |
리소스 형식. |
유효 범위 |
---|---|---|
IDR_ |
여러 |
0x6FFF-1을 통한 1 |
IDD_ |
대화 상자 템플릿 |
0x6FFF-1을 통한 1 |
IDC_,IDI_,IDB_ |
비트맵, 아이콘, 커서 |
0x6FFF-1을 통한 1 |
IDS_, IDP_ |
일반 문자열 |
1부터 0x7FFF |
ID_ |
명령 |
0x8000 부터 0xDFFF |
IDC_ |
컨트롤 |
8 부터 0xDFFF |
이러한 범위 제한에 대한 원인은 다음과 같습니다.
규칙에 따라 ID 값 0은 사용되지 않습니다.
Windows 구현 제한은 true 리소스 Id 0x7FFF 보다 작거나 같은 수를 제한합니다.
이러한 범위를 예약 하는 MFC의 내부 프레임 워크:
0x7FFF 부터 0x7000 (afxres.h 참조)
0xEFFF 부터 0xE000 (afxres.h 참조)
16000 부터 18000 (afxribbonres.h 참조)
이 범위는 나중에 MFC 구현을 변경할 수 있습니다.
여러 Windows 시스템 명령은 0xF000부터 0xFFFF의 범위를 사용합니다.
1부터 7의 컨트롤 ID는 IDOK, IDCANCEL 등과 같은 표준 컨트롤에 대해 예약되어 있습니다.
명령 메뉴 프롬프트 문자열에 대해 0x8000 부터0xFFFF까지 범위는 예약되어 있습니다.