창조유저그룹-커즈닷컴
Window close
ID :     PASS :   
   
  처음으로
  창조
  창조 소개
창조 다운로드
CUGz.com 소개
온라인 도움말
  커뮤니티
  가입인사
자유게시판
Q/A게시판
TIP/TECH
열린강좌
자주하는질문
아이디어게시판
  자료실
  소스자료실
프로그램자료실
기타자료실
명예의 전당
이미지 자료실
  지원/기타
  표준용어재정
구글 웹서치  
관리자 전용


창조 팁
- '창조' 에 관한 팁을 올리는 곳입니다. 다수의 이미지가 필요하시면 아래 '이미지 자료실' 에 업로드 후 불러와 주세요..


LIST ALL
Posted by 지상현2004-12-19 13:21:58, Hit : 5819
[0.9b] "메뉴 항목_" 이여 안녕!
Homepage : http://myhome.naver.com/bc88c
Post URL : http://cugz.sjworks.net/bbs/zboard.php?id=tip&no=219
이번에 소개해드리려는 팁은 0.9b 에서 메뉴에 자동으로 붙는 단축키를 제거하는 방법입니다.
임시 방편으로 "메뉴 항목&" 과 같이 하는 방법이 있었으나, 특정 OS에는 그마저도 "메뉴 항목_" 이라고 뜨기 때문에 더 보기 싫다고 하시는 분이 계셨죠.

따라서 이 팁은
결국 모든 메뉴에 단축키 지정 하는 것을 포기하시고, 끝끝내 이 "_"를 파괴해버리고 싶은 분들깨 유용합니다.

불행하게도
쉬운 방법은 아닙니다.
혹시나 메뉴0.자동단축키 := 거짓; 같은 것이 있을까 찾아봤는데 못찾겠더군요.
그래서 결국 API의 힘을 빌려 해결합니다. 따라서 귀찮습니다.

필요한 API
GetMenu - 창에서 메인 메뉴의 핸들을 얻기 위해 사용합니다(메뉴.핸들은 안되는 것 같습니다).
GetSubMenu - 어떤 메뉴에서 하위 메뉴의 핸들을 얻기 위해 사용합니다.
ModifyMenu - 메뉴의 속성을 변경하기 위해 사용합니다.

실수함수:GetMenu(실수:핸들);
메뉴가 있는 창의 핸들을 넣으면 메인 메뉴의 핸들을 알려줍니다.
실수함수:GetSubMenu(실수:메뉴핸들,위치);
메뉴 핸들과 그 메뉴의 위치를 넣으면 하위 메뉴의 핸들을 알려줍니다.
실수함수:ModifyMenuA(실수:메뉴핸들,메뉴위치,옵션,새항목;문자:제목);
메뉴 핸들과 알맞는 옵션과 값을 넣으면 메뉴의 속성을 바꿔줍니다.

사용 방법
 I. 바꾸고자 하는 메뉴의 핸들을 구합니다.
II. 구한 핸들로 메뉴의 제목을 원하는대로 바꿉니다.

간단해보이죠? 하지만 귀찮습니다.

메뉴 핸들을 구하려면 메뉴의 위치를 알아야 합니다. 한가지 예를 들어볼까요.
어떤 프로그램에서 메뉴를 다음과 같이 두었습니다.




그림이 안뜨면 클릭해서 보세요.


메뉴는 이런식으로 하위 메뉴가 여럿 있을 수 있습니다.
실은 각각 하위 메뉴는 각각 다른 핸들을 가진 덩어리입니다.

메뉴에는 깊이 라는 것이 있습니다.
얼마나 밑으로 내려가느냐에 따라 다릅니다.

파일,보기 는 레벨 0입니다.
이것은 레벨0메뉴 := GetMenu(창0.핸들); 으로 구하실 수 있습니다.

{새로 만들기, 열기, 저장, 끝내기}{도구 모음, 환경 설정} 메뉴는 레벨 1 입니다.
예를 들어 {새로 만들기, 열기, ...} 의 메뉴를 구하려면

파일하위메뉴 := GetSubMenu(레벨0메뉴,0); 하시면 됩니다.

{도구 모음, 환경 설정} 이라면

보기하위메뉴 := GetSubMenu(레벨0메뉴,1); 하시면 됩니다.

뒤에 붙는 숫자가 무엇을 의미하는지 알겠죠? 메뉴의 인덱스입니다. 0부터 시작함을 잊지 마세요.

이 메뉴에는 레벨 2 메뉴도 있습니다.
{메인, 그리기 도구}가 그것입니다.
이것은 다음과 같이 구해야 합니다.

도구모음하위메뉴 := GetSubMenu(보기하위메뉴,0); // "도구 모음"이 0번째에 있으므로

만약, "환경 설정"의 하위 메뉴를 구하려고 하면 0이 아닌 1을 넣어야 할 것입니다(이 예에서 환경 설정의 하위 메뉴는 없으므로 0이 반환됩니다).



자, 이렇게 각 메뉴 덩어리의 핸들을 구하는 방법을 알았습니다.
이제 실제적으로 강제로 메뉴의 제목을 바꿀 차례입니다.
한번 "저장(S)" 을 바꿔볼까요?

* "저장"을 바꾸기 위해서는 "저장" 메뉴가 들어있는 메뉴 덩어리, 즉 "파일"의 하위 메뉴의 핸들을 구하면 됩니다.

따라서, 일단 "파일"의 하위 메뉴의 핸들을 구해보죠. (창은 창0 이라고 가정합니다)

실수: 메뉴핸들;
메뉴핸들 := 사용자함수.GetMenu(창0.핸들); // "메뉴핸들"에는 {파일,보기} 의 메뉴가 있습니다.
메뉴핸들 := 사용자함수.GetSubMenu(메뉴핸들, 0); // "메뉴핸들"에는 {새로 만들기, ...} 가 있습니다.
// 메뉴 핸들을 여기까지 구하면 됩니다

사용자함수.ModifyMenuA(메뉴핸들, 3, 1024, 0, "저장하기(&S)");



소스는 이렇습니다.
그럼 여기서 ModifyMenu 의 인자를 살펴 볼까요.

첫번째 인자... 메뉴핸들 이란 것은 보시다시피 바꾸고자 하는 메뉴가 포함되어있는 핸들입니다. 여기선 "저장" 메뉴를 바꾸고자 했으니 "파일" 의 하위 메뉴가 되겠죠?

두번째 인자, 3...이란 값은 인덱스입니다. "저장" 메뉴는 3번이죠. 이 것도 0번부터 시작합니다. 왜 그런고 하면,

0번: 새로 만들기
1번: -
2번: 열기
3번: 저장
...


이해가 되시죠?

세번째 인자, 1024 란 값은 MF_BYPOSITION 이라는 상수 값입니다.
원래 특정 메뉴를 지정하기 위해서 각각 메뉴에게 ID를 붙여놓고 지금처럼 인덱스를 부르는 대신, ID를 불러 그 메뉴를 지정합니다. 우리는 메뉴의 ID를 모르므로 인덱스로 하기 위해 저 상수를 사용했습니다.
(선생님이 출석을 부를 때 이름을 부르느냐, 번호를 부르느냐의 차이입니다. 우리는 메뉴들의 이름을 모르므로 오른쪽에서 1번째, 앞에서 4번째에 있는 메뉴를 찍을 수 밖에 없습니다.)

네번째 인자, 0은 하위 메뉴의 핸들입니다.
0 을 넣었기 때문에 우리가 바꾸는 중인 "저장" 메뉴에는 하위 메뉴가 붙지 않습니다.
하지만 0 이외에 다른 올바른 메뉴의 핸들(예를 들어, "보기" 메뉴)을 넣는다면 저장 메뉴에 보기의 하위 메뉴가 붙게 됩니다.

다섯번째 인자, 이것은 따로 설명할 필요가 없겠죠?
(원래는 여기에 메뉴 제목만 들어가는게 아니라, 메뉴에 아이콘, 메뉴의 제어[참/거짓], 메뉴 체크(창조에선 "보이기" 속성)[참/거짓] 등등 여러 메뉴의 속성을 지정해줄 수 있고, 세번째 인자에 다른 값을 넣음으로서 가능하지만 이 팁에 주제에서 벗어나므로 설명을 안했다기...보다는 창조에서 사용하기 곤란하여(또, 사용할 필요가 없고) 생략합니다.)



보너스
1. GetMenu 말고 GetSystemMenu 라는 API를 사용하면 {이전 크기로, 이동, 크기 조정, 최소화, 최대화, 닫기} 메뉴를 구할 수 있습니다.
2. GetMenu의 인자 중 창 핸들은...꼭 자신의 프로그램의 창 핸들을 넣을 필요는 없겠죠?

강현구   2004-12-19 PM 2:31:48  
네이버는 링크가 안됩니다.
ps.이진백   2004-12-31 PM 12:05:42  
API에서 메뉴 부분이 확실히 어렵기는 해요.
LIST ALL               GO TO THE TOP


N
   Subject
Posted by
Date
H
167
   (Tip(?)) 명령어 편집창에서 키보드로 블록(선택)잡기 [4]
qkrwhdgns 2005/10/03  6058
166
   [Tip] 창조로 엑셀파일 형식으로 저장하기~ ㅋ [6]
최재일 2005/09/04  5948
165
   xp에서 창조로 시스템 종료및 리부팅 하기.. [9]
권선중 2005/08/23  5542
164
   커즈닷컴 로그인 주소 [2]
qkrwhdgns 2005/08/21  5483
163
   [TIP]선중암호화 구현의 보완방법 [2]
권선중 2005/08/04  5501
162
   [끼적 Tip] 다계정 로그인 구현 [2]
권선중 2005/06/26  4744
161
   [버그리포트] 이름표#숫자.제목:="랄랄라"; 식의 명령을 쓸때.. [4]
손상진 2005/06/26  5127
160
   초보의 허접 팁입니다 - 창 종료할때 위치와 크기 기억하기 - [2]
짱아 2005/04/26  5090
159
   컴퓨터 단위들.. [2]
손상진 2005/04/17  5395
158
   [팁] ^ㅁ^ [4]
박재성[날개달기] 2005/04/14  5273
157
   api 사용 파일다운로드시.. [2]
박재성[날개달기] 2005/03/22  5214
156
   [TIP] 프로그램 제작시 프로그램크기는 무시하세요.... [4]
권선중 2005/03/09  5709
155
   [TIP] 창조 0.9의 그림판 투명창을 깔끔하게 만들기 [3]
권선중 2005/03/08  6305
154
   [팁] 팝업메뉴 만들기 [초보용] [5]
강성민[FreeCreate] 2005/03/04  4730
153
   내용 에서 내용으로 문자 빨리 복사해가기.. [4]
손상진 2005/01/21  5439
152
   기본객체의 글꼴을 '돋움'에서 '굴림' 으로 변경하기.. [12]
변혁수 2005/01/19  5110
151
   보안의 10대 법칙 [11]
위자드 2004/12/22  5135

   [0.9b] "메뉴 항목_" 이여 안녕! [2]
지상현 2004/12/19  5819
149
   [팁] 실행파일 용량을 확실하게 줄이자! [19]
황현석 2004/10/30  6792
148
   창조에서 동적 메모리 할당 [3]
지상현 2004/09/25  5988
147
   웹사이트 자동 백업 archive [2]
리시 2004/09/05  5310
146
   [tip]mp3가사 사이트 검색 응용 [4]
권선중 2004/08/18  5097
145
   [팁!] 넥슨 게임 광고 제거 하자! [5]
위자드 2004/07/26  6914
144
   [Tip] 인터넷 실시간 방송 재생(TV,라디오) [5]
권선중 2004/07/26  5817
143
   효과음 많은 사이트.. [7]
변혁수 2004/07/25  5680
LIST ALL   Prev [1][2][3][4][5][6][7] 8 [9][10]..[14] Next
Copyright 1999-2024 Zeroboard / skin by reedyfox in miniwini style
로그인
지우개 Expert 3.0
제작자 : 천호성 님 [LINK]
로그인
대박로또2005
제작자 : 최재일 님 [LINK]
로그인
1박종훈15292 점
2지상현8809 점
3손상진7388 점
4권선중6060 점
5이진백5174 점
로그인
가입일닉네임
05/31김동률
03/31홍형기
09/01o00pp99oo
12/27이재민
11/20이희철
로그인