C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[580] [답변] HORONG/ [빌더]시스템메뉴 아이콘 작동시..../프포
박지훈.임프 [cbuilder] 5632 읽음    1998-08-28 17:19
안녕하세요. 천리안 프로그래머 포럼 C++Builder 담당자 임펠리테리입니다.

음.. 정확한 답변은 아니라고 생각하지만.. 일단 썰을 풀어보겠습니다.

WM_SYSCOMMAND를 호출했는데 작업표시줄로 들어가지 않고 화면 하단에 최소화된 상태

로 남아버리죠? 근데 이런 꼴을.. 어디선가 보신듯 하다는 생각은 안해보셨는지? 흐~

바로 MDIChild폼일 경우에 요렇게 미니마이즈되죠. 아시겠죠? 그럼.. 거꾸로 생각을

해보면.. 프로젝트의 메인폼으로 보이는 것이 실제로는 메인폼이 아니라는 것을 유추

해 볼 수 있습니다. 델파이나 빌더에서 상당히 웃기는 문제인데.. 여러가지 이유로

화면에 보이는 메인폼은 실제의 메인윈도우가 아닙니다. 저도 전에 잠깐 POD를 볼 일

이 있어서 줏어들은겁니다만... ^^;; 잠깐 지나가다 본거라 자세한 내용은 기억이 안

나구요.. 그 사실 하나만 기억나는군요. 어쨌든.. 실제의 메인 윈도우는 항상 메인폼

의 뒤에 숨겨져 있습니다. 결과적으로 윈도우 시스템의 입장에서는 빌더나 델파이에서

메인폼이랍시고 지정한 윈도우는 실제의 메인 윈도우가 아니니까, 거기다가 미니마이

즈를 주니 당연히 작업표시줄로 들어가지 않는겁니다. 알고보면 이유는 간단하죠?

VCL에서는 이들 WM_SYSCOMMAND같은 모든 메시지를 중간에서 다 가로채서 마치 메인폼

인척 미니마이즈를 하지만.. 표가 날 수밖에 없는 것이.. 빌더나 델파이는 미니마이즈

에니메이션, 그러니까 미니마이즈 버튼을 눌렀을때 아래로 차차 줄어들면서 작업표시

줄로 들어가는 화려한(?) 모습을 볼수가 없지 않습니까.

지금 제가 너무 피곤해서 말이 좀 꼬이네요. 어쨌든, 이런 문제가 있으니, 다음과 같

이 코딩을 해서는 그런 결과밖에 볼수가 없습니다.

DefWindowProc(Handle, msg.Msg, msg.WParam, msg.LParam);

그래서... 쩝... 답변을 드리려고 잔머리를 좀 굴리다보니.. 핸들에다 어플리케이션의

핸들을 집어넣으면 어떨까.. 싶더군요. 어플리케이션의 핸들은 메인윈도우의 핸들과

동일하니까요. 그래서 해봤습니다.

DefWindowProc(Application->Handle, msg.Msg, msg.WParam, msg.LParam);

잘 됩니다.. 미니마이즈 에니메이션도 좀 어색하나마 볼 수 있고.. 근데.. 하하~

지금 원하시는 동작은 곤란합니다. 왜냐하면.. 흐흐~ 앞에서 말씀드렸다시피 작업표시

줄로 들어간 프로그램의 캡션은 실제 윈도우의 캡션이고.. 바꿔준 캡션은 가짜 메인폼

의 캡션인데.. 실제로 해본 결과를 볼때, 이 캡션을 바꿔주는 동작조차도 vcl에서 미

니마이즈될때의 시스컴맨드를 가로채어서 한 것인가 보더군요. 그래서 작업표시줄에

들어간 프로그램의 캡션은 이전에 바꾸어주었어도 원래의 캡션 그대로 있는겁니다.

요건 좀 문제가 되겠죠? 그래서... 캡션을 바꾸는 것도 API 함수를 사용하여 해줘야

한다는 겁니다. 윈도우 타이틀을 바꿔주는 함수가 뭐였는지 가물거리는데... ^^;;;;

어쨌든 그 함수를 쓰시면 되겠습니다.

좀더 원초적인 해결방법이 있을지 모르겠습니다만, 일단 저는 이렇게 해법을 찾아봤습

니다.

그럼, 도움되시길 바라면서, 이만...




독립문에서 임펠리테리였습니다.

(cbuilder, skyhi18, cbuilder@thrunet.com)



+ -

관련 글 리스트
579 [질문] [빌더]시스템메뉴 아이콘 작동시..../프포 horong 5480 1998/08/28
581     [답변] HORONG/ [빌더]시스템메뉴 아이콘 작동시..../프포 박지훈.임프 5502 1998/08/28
580     [답변] HORONG/ [빌더]시스템메뉴 아이콘 작동시..../프포 박지훈.임프 5632 1998/08/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.