ACAPI_Register_Menu
애드온의 메뉴 항목들을 등록합니다.
GSErrCode ACAPI_Register_Menu (
short menuStrResID,
short promptStrResID,
APIMenuCodeID menuPosCode,
GSFlags menuFlags
);
파라미터
- menuStrResID
- [in] 메뉴 리소스의 리소스 ID입니다. 이것은 애드온의 리소스 fork 안에 있어야 합니다.
- promptStrResID
- [in] 프롬프트 문자열 리소스의 리소스 ID입니다. 이것은 애드온의 리소스 fork 안에 있어야 합니다. 이 문자열들은 상태 바에 나타나게 됩니다.
- menuPosCode
- [in] 명령을 삽입할 서버 애플리케이션의 메뉴를 정의합니다.
- menuFlags
- [in] 등록된 메뉴 항목 전/후에 메뉴에서 구분자 항목을 볼지 여부를 설명하는 flag입니다.
가능한 값은 다음과 같습니다:
MenuFlag_Default,MenuFlag_SeparatorBefore,MenuFlag_SeparatorAfter
리턴 값
NoError- 함수가 성공적으로 완료되었습니다.
다른 공통 API 오류들에 대해서는 API 오류 문서를 보십시오.
설명
이 함수는 애드온의 RegisterInterface 루틴에서 호출해야 합니다. 서버 애플리케이션의 다른 메뉴에도 나타나면서 동일한 애드온에서 2개 이상의 메뉴를 등록할 수 있습니다.
제공된 menuStrResID 파라미터는 Initialize 루틴에서 호출해야 하는
ACAPI_Install_MenuHandler 함수에서 동일해야 합니다.
다음 시나리오들이 가능합니다:
- 애드온이
menuPosCode에 정의된 위치에 1개의 메뉴 항목을 삽입합니다.
'STR#' 32500 "Menu Description" { /* [ 1] */ "My add-on's solo menuitem" } - 애드온이
menuPosCode에 정의된 위치에 1개의 서브 메뉴를 삽입합니다.
'STR#' 32501 "Menu Description" { /* [ 1] */ "My add-on's submenu" /* [ 2] */ "My add-on's menuitem #1" /* [ 3] */ "My add-on's menuitem #2" } - 애드온이 자신의 메인 메뉴를 삽입합니다;
menuPosCode는MenuCode_UserDef이어야 합니다.
'STR#' 32502 "Menu Description" { /* [ 1] */ "My add-on's main menu" /* [ 2] */ "My add-on's solo menuitem" } - 애드온이 서브 메뉴가 딸려 있는 자신의 메인 메뉴를 삽입합니다;
menuPosCode는MenuCode_UserDef이어야 합니다.
'STR#' 32503 "Menu Description" { /* [ 1] */ "My add-on's main menu" /* [ 2] */ "My add-on's submenu" /* [ 3] */ "My add-on's menuitem #1" /* [ 4] */ "My add-on's menuitem #2" }
보시다시피, 애드온은 MenuCode_UserDef와 메뉴 위치를 사용하는 경우 자신의 메인 메뉴를 정의할 수 있습니다.
이 경우 STR# 리소스의 첫 번째 항목은 메인 메뉴의 제목이 되고, 다른 항목들은 비-메인 메뉴 케이스의 메뉴 항목들에 해당합니다.
이 첫 번째 항목이 서버 애플리케이션의 기본 메뉴 제목 중 하나와 동일한 경우, API는 새로운 기본 메뉴를 열지 않고,
오히려 해당 메뉴에 대한 규칙에 의해 정의된 대로 애드온의 메뉴를 원래의 기본 메뉴에 삽입합니다.
이것은 또한 이미 존재하는 메뉴 제목(예. Window)을 사용할 경우, 애드온을 삽입할 위치가 없어서 당신의 애드온 메뉴는 나타나지 않습니다.
이는 Add-Ons 폴더 내의 애드온의 위치가 애드온의 커맨드의 메뉴 위치에 영향을 미치지 않는다는 것을 의미합니다.
메뉴 항목들의 외형은 필수 리소스 섹션에 설명된 메뉴 항목 문자열 리소스에 추가된 제어 코드들에 의해 제어될 수 있다.
예제
GRC 파일 내부:
'STR#' 32500 "Menu strings" {
/* [ 1] */ "Show Selections^ES^E3^ED^32500"
}
'STR#' 32520 "Status bar prompt strings" {
/* [ 1] */ "Show Selections palette"
}
/* Toolbar icon resource ("RFIX\Images\TB_show_selections.bmp") */
'GBMP' 32500 "TB_show_selections" {
"TB_show_selections"
}
RegisterInterface 함수 내부:
//------------------------------------------------------
// Interface definitions
//------------------------------------------------------
GSErrCode __ACENV_CALL RegisterInterface (void)
{
GSErrCode err;
// Register menu command
err = ACAPI_Register_Menu (32500, 32520, MenuCode_Palettes, MenuFlag_Default);
return err;
} // RegisterInterface
요구사항
- 버전: API 4.1 또는 이후
- 헤더: ACAPinc.h
참고사항
APIMenuCodeID
ACAPI_Install_MenuHandler
RegisterInterface
필수 리소스
API 함수