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
[1377] [답변] JSK365/ 임펠리테리님 다시 이것 좀.../프포
박지훈.임프 [cbuilder] 3643 읽음    1999-05-26 15:47
안녕하세요. 천리안 프로그래머 포럼 C++Builder 담당 임펠리테리입니다.

먼저 첫번째 질문... 원래 콤보박스 자체는 Win32의 공용컨트롤로서, vcl은 그것을

좀더 쓰기 쉽도록 래핑(wrapping)하고 있을 뿐이란 것을 이해해야 합니다. 그래서,

vcl의 TComboBox 컨트롤은 표준 Win32의 콤보박스 컨트롤의 모든 부분을 다 구현해

놓지는 못했습니다. 이중의 한 예가, 콤보박스의 메시지중 CBN_DROPDOWN 메시지와

CBN_CLOSEUP 메시지입니다. CBN_DROPDOWN 메시지는 TComboBox의 이벤트 중

OnDropDown 으로 구현이 되어 있으므로 손쉽게 코딩이 가능합니다만, CBN_CLOSEUP

메시지는 구현되어 있지 않습니다.

원하시는 경우가 바로 이것입니다. 콤보박스의 리스트박스를 펼친 후에, 그것이

닫히는 이벤트를 찾으시려고 하는 것 같은데, vcl에서 구현해놓지 않았으므로,

지금 생각하시는 것보다 아주 복잡한 코딩을 통해서만 가능합니다. 두가지를 제안드

립니다.

1. 콤보박스를 상속받는 새 컴퍼넌트를 만들어서 거기서 CBN_CLOSEUP 메시지를 처리

   하고, 그에 해당하는 이벤트를 새로 만든다.

2. Win32 api의 방법대로, 콤보박스의 윈도우 프로시저를 바꿔친다.

빌더에서 정석은, 역시 컴퍼넌트를 만드는 것입니다.그리고.. 두번째 방법에 대해서는

빌더라운지에 오래전에 비슷한 내용이 팁으로 올렸었습니다. 참고하시기 바랍니다.


그리고 두번째 질문...

말씀하시는 폰트 입력창이란, 공용 다이얼로그인 폰트 다이얼로그를 말씀하시는 것

같군요. 거기 있는 콤보박스의 'T'자는 아이콘으로서, 콤보박스의 스타일을 오너

드로우로 한 후에 직접 캔바스에 그려넣은 것입니다. 이것은 역시 저번에 색깔을

넣는 콤보박스의 경우와 비슷하고, 캔바스에 아이콘을 그려줄 수만 있으면 되겠군요.

쉬운 방법은, TCanvas::Draw() 메소드를 이용하는 것입니다. 헬프에 예제가 있으니

참고하시면 되겠네요.

그럼 도움되시길...




임펠리테리 박지훈이었습니다.

(cbuilder, cbuilder@thrunet.com)



+ -

관련 글 리스트
1372 [질문] 임펠리테리님 다시 이것 좀.../프포 jsk365 3454 1999/05/24
1377     [답변] JSK365/ 임펠리테리님 다시 이것 좀.../프포 박지훈.임프 3643 1999/05/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.