|
박지훈.임프 님이 쓰신 글 :
: sommer 님이 쓰신 글 :
: : 며칠째 혼자 끙끙거리다가 고수님들 도움을 받으려고 글 올립니다.
: : 정말 급하거든요.
: : 콤보 박스의 아이템을 클릭하기 전에 마우스만 갖다 놓은 상태에서 각 아이템에 대한 힌트를 보여줘야하거든요.
: :
: : 정말 한가지 막힐때마다 며칠씩 고민해도 전혀 진척이 없으니까 넘 힘드네요.
: : 부탁드립니다.
: :
:
:
: 임펠리테리입니다.
:
: 시간이 많이 없어서 간단히만 설명을 드리겠습니다. 아시겠지만 콤보박스에 그런 기능은 없습니다. 그럼... 콤보박스에서 아이템들이 펼쳐진 상태에서 마우스가 움직일 때 아이템들의 힌트를 보여주려면, 먼저 아이템들 위에서 마우스가 움직일 때를 잡아내는 이벤트나 메시지등이 있어야 하는데, 가장 적당한 것이 OnDrawItem입니다. 그런데 이 이벤트는 오너드로우상태일 때만 발생하므로 Style을 csOwnerDrawFixed 혹은 csOwnerDrawVariable로 세팅하고, OnDrawItem 이벤트의 핸들러에서 직접 아이템을 그려준 후 그 후에 THintWindow 클래스를 이용해서 힌트 윈도우를 만들어 보여줘야 합니다. 조금 시간이 있으시고 어렵지 않게 느끼신다면 콤보박스를 상속받아 새로운 컴퍼넌트를 만드시는 것이 더 좋을 거라는 생각이 드는군요.
:
: 그럼 참고하시길..
답변 감사드립니다.
THintWindow클래스를 이용해서 힌트를 보여줬는데요.
프로그램이 종료될때까지 계속 힌트가 보여지네요.
MyHint->ReleaseHandle();
delete MyHint;
MyHint = NULL;
이런식으로 했는데... 계속 힌트 윈도우가 표시되서요.
어떻게 해야하죠?
|