//메뉴 정보를 획득.
CMenu *p_menu = GetMenu();
if(p_menu != NULL){
CMenu *p_menu = GetMenu();
if(p_menu != NULL){
}
//해당 메뉴 인덱스 획득(0~)
CMenu *p_sub_menu = p_menu->GetSubMenu(1);
if(p_sub_menu != NULL){
CMenu *p_sub_menu = p_menu->GetSubMenu(1);
if(p_sub_menu != NULL){
}
BOOL ModifyMenu(HMENU hMnu, UINT uPosition, UINT uFlags, UINT uIDNewItem,
LPCTSTR lpNewItem);
이 함수는 메뉴의 캡션뿐만 아니라 모양, 속성, 동작방식까지도 한꺼번에 수정할 수 있는 광범위한 기능을 가지고 있다. 첫 번째 인수는 변경 대상이 되는 메뉴의 핸들이며 두 번째 인수는 변경 대상이 되는 메뉴 항목의 ID(또는 위치값)이다. 세 번째 인수 uFlags는 uPosition 인수의 해석 방식(위치 또는 ID)과 메뉴 항목의 형태, 속성값 등을 지정한다. uIDNewItem은 메뉴 항목의 새로운 ID값을 지정하며 마지막 인수 lpNewItem은 메뉴 항목의 변경된 캡션 문자열(또는 비트맵 핸들)이다. 이 함수로 메뉴 항목의 여러 가지 속성을 바꿀 수 있는데 캡션만 변경하고자 한다면 다음과 같은 코드를 작성하면 된다.
ModifyMenu(메뉴핸드, 메뉴ID, MF_BYCOMMAND | MF_STRING, 새ID, 새캡션);
메뉴의 캡션을 변경할 시점은 사용자가 메뉴를 선택한 후 화면에 나타나기 직전인 WM_INITMENU 메시지이다. 응용 프로그램은 이 메시지가 전달되었을 때 조건을 점검하여 원하는 대로 메뉴 항목의 속성을 변경할 수 있고 메뉴 항목을 새로 만들어 넣거나 뺄 수도 있다. 그러면 WM_INITMENU 메시지와 ModifyMenu 함수를 사용하여 실행중에 메뉴 항목의 캡션을 변경하는 예제를 만들어 보자. 메뉴 항목을 하나 만들고 이 메뉴 항목의 캡션을 윈도우의 현재 X좌표로 바꾸어 볼 것이다. 윈도우가 움직이면 메뉴의 캡션이 바뀐다. 첨부한 MenuCap.cpp 파일을 참고하도록 하자.
CMenu *pMenu = GetMenu();
CMenu *pTemp = pMenu->GetSubMenu(0);
pMenu->ModifyMenu(IDR_MENU_메뉴명, MF_BYCOMMAND, IDR_MENU_메뉴명, "변경할 텍스트 내용");
CMenu *pTemp = pMenu->GetSubMenu(0);
pMenu->ModifyMenu(IDR_MENU_메뉴명, MF_BYCOMMAND, IDR_MENU_메뉴명, "변경할 텍스트 내용");
댓글 없음 :
댓글 쓰기