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
[38276] Re:캡션바(타이틀바)의 더블클릭을 막을려면
만복대.산수유 [origin] 1781 읽음    2004-12-04 18:18
smleelms 님이 쓰신 글 :
: WM_NCMBUTTONDBLCLK 메시지를 핸들링해야 한다는 것까지는 알았는데,
: 어떻게 핸들링을 해야 되나요 ?
:
: VC++에서의 이벤트 처리루틴입니다.
:
: void CMyWin::OnNcLButtonDblClk(UINT nHitTest, CPoint point)
: {
:     if(nHitTest == HTCAPTION)    // 타이틀바에서 더블클릭이면 리턴
:         return;
:
:     CMyWin::OnNcLButtonDblClk(nHitTest, point);
: }
:
: 이것을 Application->OnMessage로 연결해서 메시지를 잡으면 될것 같은데...
: 이때 위 함수처럼 객체(?)가 타이틀바인지. 하는 것들은 어떻게 알아내서 어떻게 처리해야 될까요?
:
: 고수님들의 가르침을 기다립니다.. ^^;

TApplication의 OnMessage 핸들러는 아래와 같은 형입니다.
typedef void __fastcall (__closure *TMessageEvent)(tagMSG &Msg, bool &Handled);
첫번째 아규먼트인 Msg에 정보가 넘어옵니다.
tagMSG는 아래와 같습니다.
typedef struct tagMSG {
    HWND        hwnd;
    UINT        message;
    WPARAM      wParam;
    LPARAM      lParam;
    DWORD       time;
    POINT       pt;
} MSG;

한편, WM_NCLBUTTONDBLCLK Windows 메시지는 아래와 같습니다.
nHittest = (INT) wParam;    // hit-test value
pts = MAKEPOINTS(lParam);   // position of cursor

따라서, OnMessage 핸들러 내에서 아래와 같이 필요한 정보를 얻을 수 있습니다.
INT nHittest = (INT)Msg.wParam ;
POINTS pts = MAKEPOINTS(Msg.lParam);

nHittest에 가능한 값들은 WM_NCHITTEST의 도움말을 참조하시기 바랍니다.

;
Application->OnMessage를 사용할 수도 있고
아래와 같이 메시지 맵을 사용할 수도 있습니다.
void OnNcLButtonDblClk(TMessage&);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_NCLBUTTONDBLCLK,TMessage,OnNcLButtonDblClk);
END_MESSAGE_MAP(TForm);
void TForm1::OnNcLButtonDblClk(TMessage& Msg)
{
   INT nHittest = (INT)Msg.WParam ;
   POINTS pts = MAKEPOINTS(Msg.LParam);
  //작업
}

+ -

관련 글 리스트
38241 캡션바(타이틀바)의 더블클릭을 막을려면 smleelms 2783 2004/12/01
38276     Re:캡션바(타이틀바)의 더블클릭을 막을려면 만복대.산수유 1781 2004/12/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.