2013-09-30 6 views
2

사용자에게 여러 구성 요소를 표시하는보기가있는 탭 집합을 제공하는 프로젝트를 상속 받았습니다. 이 탭 중 일부에서는 사용자가 탭에 표시된 구성 요소를 이동하지 못하게하려고합니다.사용자가 창을 드래그하지 못하게하려면 어떻게합니까?

우리는 각 탭을 나타내는 CWnd 개체의 컬렉션을 포함하는 탭을 관리하기 위해 CMFCTabCtrl에서 상속하는 개체를 가지고 있습니다. 또한 각 탭과 관련된보기를 관리하는 객체가 있으며 해당 탭이 활성화 될 때 해당보기가 활성화됩니다.

구성 요소는 모두 상속 된 메시지 맵에 정의 된 메시지의 다양한 처리기를 정의하는 CWnd에서 상속되는 기본 개체를 공유합니다.

사용자가 해당 구성 요소를 드래그하지 못하도록하는 올바른/최선의 방법은 무엇입니까?

감사합니다.

+0

당신이하고 싶은 것이 분명하지 않습니다! CMFCTabCtrl의 끌어서 놓기 기능을 비활성화 하시겠습니까? – xMRi

+0

xMRi - 확실하지 않습니다. 죄송합니다. 저는 MFC를 처음 사용합니다. 탭을 드래그 앤 드롭하는 동작을 변경하고 싶지는 않습니다. 주어진 탭 창에는 하나 이상의 창 (구성 요소)이 있습니다. 사용자가 열어 본 후 해당 창의 크기 나 위치를 수정할 수 없도록하고 싶습니다. – BobbyA

+0

최근 방문한 웹 사이트를 나타내는 다양한 상자가 표시된 Chrome 또는 Firefox의 새 탭 페이지를 상상해 보면 내 설정과 같습니다. 해당 탭으로 이동하면 해당 상자를 드래그 할 수 있습니다. 내 프로젝트에서 그 동작을 비활성화하고 싶습니다. – BobbyA

답변

0

구성 요소의 이동은 기본적으로 설정되어있는 Windows 기능이 아닙니다. 프로젝트에서 구성 요소를 이동하는 코드가 존재합니다. 이 코드는 비활성화하려는 경우 비활성화해야합니다.

MDI 유형의 응용 프로그램과 같이 구성 요소가 컨트롤을 의미하고 일부는 자식 창이 아니라고 가정합니다.

+0

기본적으로 창을 끌 수있는 기능이 켜져 있지 않습니다? 이것은 옳지 않은 것처럼 보입니다. 이러한 구성 요소는 CWND 객체이므로 명확하게 처리 할 수 ​​있습니다. – BobbyA

1

한 가지 해결 방법은 구성 요소 CWnds에서 제목 표시 줄 스타일을 제거하는 것입니다. 제목 표시 줄이 없으면 사용자는 창을 끌 수 없습니다.

또 다른 방법은 구성 요소 CWnds에서 WM_NCHITEST 메시지를 처리하는 것입니다. 적절한 값을 반환하면 사용자가 마우스를 클릭 할 때 제목 표시 줄 에서처럼 마우스가 인식되지 않습니다.

+0

이것은 내가 찾던, 감사합니다! 내가 솔루션을 개발하기 시작할 때 이것을 시도해 볼 것이고, 그것이 작동한다면 답을 표시 할 것이다. – BobbyA

0

CMFCTabCtrl :: m_bActivateOnBtnUp을 TRUE로 설정하십시오. 드래그 & Droip 관련 항목을 비활성화 할 수 있습니다.

관련 문제