splitter윈도우크기를 고정하려면

splitter윈도우크기를 고정하려면
+ 스플리터 윈도우의 크기를 고정하려면

스플리터 윈도우에서 크기 변경이 안되도록 하려면 우선 스플릿바의 행동
양식에서 그 방법을 찾을 수 있습니다. 스플릿바는 WM_MOUSEMOVE,
WM_LBUTTONDOWN, WM_LBUTTONUP, WM_LBUTTONDBLCLK 메시지가
넘어 올 때 크기를 조정하도록 설계돼 있습니다. 그러므로 마우스가 스플릿바
위에 오면 마우스 커서가 변하게 되고 스플릿바 위에서 마우스를 누르면
그때부터 크기를 변경할 수 있게 됩니다. 그리고 눌렀던 마우스를 놓으면 크기
변경을 완료되는 거죠. 따라서 이 네 가지 메시지가 넘어올 때 아무 일도 하지
않도록 하면 됩니다. 즉, 메시지 핸들러를 아무 일도 하지 않도록 작성해 주면
처음 정해진 크기로 고정됩니다. 마우스가 스플릿바 위로 가도 커서가 변하지
않는 것은 물론이고 스플릿바 위를 클릭해도 크기가 조정되지 않습니다. 다음
코드를 참고하세요.

헤더 파일
class CFixedSplitterWnd : public CSplitterWnd {
//. . .
protected:
//{{AFX_MSG(CFixedSplitterWnd)
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

소스 파일
//. . .
BEGIN_MESSAGE_MAP(CFixedSplitterWnd, CSplitterWnd)
//{{AFX_MSG_MAP(CFixedSplitterWnd)
ON_WM_MOUSEMOVE()
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_LBUTTONDBLCLK()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
//////////////////////////////////////////////////////////////////////
//CFixedSplitterWnd message handlers
void CFixedSplitterWnd::OnMouseMove(UINT nFlags, CPoint point) {
// TODO:
// 기본적으로 정의된 함수는 CSplitterWnd::OnMOuseMove(nFlag, point)이다.
CWnd::OnMouseMove(nFlags, point); // 아무 일도 하지 않는다.
}

void CFixedSplitterWnd::OnLButtonDown(UINT nFlags, CPoint point) {
// TODO:
CWnd::OnLButtonDown(nFlags, point);
}

void CFixedSplitterWnd::OnLButtonUp(UINT nFlags, CPoint point) {
// TODO:
CWnd::OnLButtonUp(nFlags, point);
}

void CFixedSplitterWnd::OnLButtonDblClk(UINT nFlags, CPoint point) {
// TODO:
CWnd::OnLButtonDblClk(nFlags, point);
}

zemna

Programmer/Web/Mobile/Desktop

You may also like...

Leave a Reply