2010-07-09 3 views
2

Photoshop 스타일 부동 도구 팔레트를 만드는 방법에 대한 제안이 있으십니까? 나는 다음과 같은 몇 가지 아이디어를 시도했다 :Photoshop 스타일 부동 도구 팔레트 만들기

  1. 이 FixedToolWindow에 자사의 FormBorderStyle을 설정하고 기본 폼의 자식으로 그것을 보여주는, 자식 창을 만들기하지만 도구 창 도루는 기본 폼에서 초점을 맞 춥니 다.
  2. 위와 같이 자식 창을 만들고 CreateParams에 전달 된 다양한 플래그 조합을 사용하지만 여전히 동일한 포커스 문제로 실행됩니다.
  3. 도구 팔레트를 UserControl로 만들고 부모를 바탕 화면으로 설정하여 "부동 상태"로 설정하고 (user32 # SetParent 함수를 통해), 더 이상 주 양식의 자식이 아니며 최소화/복원되지 않습니다 메인 폼.

저는 3 번 방법을 생각하고 있습니다. 도구 팔레트 윈도우 상태를 메인 폼과 동기화하고 코드를 드래그하는 기능을 구현하는 코드를 작성해야 할 것입니다. 팔레트를 그리거나 테두리를 그립니다.

더 나은 방법을 제안합니까?

+0

테두리 스타일을 '없음'으로 설정하고 'TopMost = true'를 사용하면 도움이됩니까? – Mau

답변

0

저는이 작업을 수행하는 방법 중 하나만 알고 있지만 Photoshop 에서처럼 부모 양식을 벗어날 수없는 하위 양식으로 제한합니다. 자식 폼에 CreateParams를 오버라이드 (override) :

const int WS_EX_NOACTIVATE = 0x8000000; 
const int WS_CHILD = 0x40000000; 
protected override CreateParams CreateParams 
{ 
    get 
    { 
     CreateParams ret = base.CreateParams; 
     ret.Style |= WS_CHILD; 
     ret.ExStyle |= WS_EX_NOACTIVATE; 
     return ret; 
    } 
} 

는 자식 폼에 Show를 호출 할 때, 당신은 IWin32Window을 받아 부모를 전달 과부하를 사용하고 있는지 확인합니다.