2010. 4. 3. 11:08

다이얼로그 타이틀바의 클릭 & 드래그하여 이동하는 기능을 막는 방법


두개의 NON CLIENT MESSAGE를 함께 처리해야 하기 때문에 WindowProc 오버라이딩합니다.

[CLASS WIZARD] -> [Class Info] TAB -> 메시지 필터 (Chlid Window)로 선택하면

WindowProc 프로시저를 오버라이딩이 가능합니다.

 

LRESULT CCantMoveDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{

    static bFlag = FALSE; 

    switch( message )
 
  {

    case WM_NCLBUTTONDOWN:    // 넌 클라이언트 영역(캡션바)을 클릭했다면

        bFlag = TRUE;

 

    case WM_NCMOUSEMOVE:       // 넌 클라이언트 영역을 클릭하고 있는 상태에서 이동한다면

        if( bFlag )
       
{

            bFlag = FALSE;

 

            return TRUE;                  // 디폴트 윈도우 프로시저로 넘기지 않고 정상적인 처리로 리턴
       
}

        return 0;

    } 

    return CDialog::WindowProc(message, wParam, lParam);

}


Written By Sim-Hyeon, Choe