2010-03-25 8 views
1

Windows Forms 부모 컨트롤에서 WS_CLIPCHILDREN 창 스타일을 설정/해제하려면 어떻게합니까?Windows Forms : WS_CLIPCHILDREN 사용/사용 안 함

페인트 한 후 하위 컨트롤 위에 텍스트를 표시하고 싶습니다.

스파이와 확인에
class Parent : public Control { 
    void Parent::OnPaint(PaintEventArgs ^e){ 
     Control::OnPaint(e); 

     // parent draws here 
     // some drawing should happen over the child windows 
     // in other words, do not clip child window regions 
    } 
}; 

는 ++ 나는 부모가 기본적으로 활성화 WS_CLIPCHILDREN 창 스타일을 가지고 찾아 내 부모 컨트롤, 이것은 내가 가지고있는 것입니다. 이 기능을 끌 수있는 Windows Forms의 기능은 무엇입니까?

참고 : 샘플 코드는 C++/CLI에 있지만이 C#에 가시성을 위해 태그되었습니다 ... 언어는 중요하지 않습니다. 코드를 C#으로 자유롭게 번역하십시오.

답변

1

당신은 당신의 부모 컨트롤의 CreateParams 속성을 재정 의하여이 작업을 수행 할 수 있습니다

protected override CreateParams CreateParams { 
    get { 
     new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Demand(); 

     // Modify the existing style. 
     CreateParams cp = base.CreateParams; 
     // Remove the WS_CLIPCHILDREN flag. 
     cp.Style &= ~0x02000000; // WS_CLIPCHILDREN value. 

     return cp; 
    } 
} 
0

SetWindowLong 함수를 사용하여 P/Invoke를 사용하여 스타일을 직접 제거 할 수 있습니다. Form.Handle 속성을 창 핸들로 사용하십시오.

관련 문제