2011-05-07 4 views
0

나는 사용자 정의 대형 타이틀 그려 내 형태로 CreateParams을 속성을 재정의하고 있습니다 :제목 표시 줄을 제거하고 컨트롤 상자를 유지 하시겠습니까?

Protected Overrides ReadOnly Property CreateParams As System.Windows.Forms.CreateParams 
    Get 
     CreateParams = MyBase.CreateParams 
     CreateParams.Style = CInt(CreateParams.Style And Not &HC00000L) 'WS_CAPTION 
    End Get 
End Property 

을 그리고 드래그 할 양식을 할 수 있도록 WndProc을 재정의했습니다

Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message) 
    MyBase.WndProc(m) 

    If m.Msg = &H84 AndAlso m.Result.ToInt32() = 1 Then m.Result = New IntPtr(2) 
End Sub 

그러나 제어 상자 (닫기 및 최소화)가 사라집니다. 컨트롤 상자와 텍스트를 작업 표시 줄에 유지할 수 있지만 일반적인 제목을 제거 할 수있는 방법이 있습니까?

답변

2

잘 이해했다면 제목 표시 줄에서 제목을 숨기고 싶지만 Vista/7 Explorer 창과 마찬가지로 작업 표시 줄에서 제목을 숨길 수 있습니다.

이 당신을 도움이 될 것입니다 pvAttribute에서 원하는 WTA_OPTIONS (은 0x03이어야한다)와 MSDN Forums 사용 this method.

+0

DWM 구성이 활성화 된 경우에만 작동합니다. 사용하지 않는 경우 (또는 사용자가 Windows XP에서 실행중인 경우) 다르게 처리하는 코드를 포함해야합니다. –

+0

예, 이미 관리하고 있습니다. 감사합니다, 완벽하게 작동합니다! – Ryan

+0

오, 미안하다. 나는 그 말을 잊어 버렸다. 그것은 aero-only (에어로 기본) 기능입니다. – seri

1

비 클라이언트 영역을 직접 그리려면 선택해야합니다. 하이브리드 옵션이 없습니다.

0

을 생성하기 위해 생성 매개 변수를 오버로드하여 제목 표시 줄을 사용하지 않습니다. WM_NCHITTEST에 대한 지원을 구현하는 것이 맞았습니다. 사용자가 창을 이동할 수있는 또 다른 방법은 없었습니다.

이 동작을하려면 CreateParams를 재정의 할 필요가 없습니다. ControlBox 속성을 False로 설정하고 Text 속성을 빈 문자열로 설정하기 만하면됩니다. 당신이 원하는 것은 짐작하기 어렵습니다. 제목 표시 줄의 단추를 놓치지 않으려면 ControlBox를 False로 설정하지 마십시오. "Unusual title"은 추측하기가 너무 어렵습니다. Text 속성의 값만 볼 수 있습니다. 제목을 원하지 않으면 빈 문자열로 설정하십시오.

+0

텍스트를 작업 표시 줄에 표시하려고하므로 텍스트를 빈 문자열로 설정하면 작동하지 않습니다. 물론 컨트롤 박스를 유지하고 싶습니다. 그래서 제 질문에서 그렇게 말했습니다. 왜 Controlbox를 False로 설정하겠습니까? 나는 당신이 오해 한 것 같아요. 이미지 매개 변수와 사용자 정의 글꼴로 제목 표시 줄을 그릴 수 있도록 제목 표시 줄을 제거하기 위해 생성 매개 변수를 무시합니다. – Ryan

+0

그러면 폼의 OnPaint() 메서드를 재정 의하여 원하는 제목 만 그릴 수 있습니다. 당신은 그것을 당신이 원하는 방식으로 보이게 할 수 있으며, 이상하게 보일 필요가 없습니다. 최소화 버튼과 닫기 버튼에 대한 자신 만의 그림 문자를 그려야 할 것입니다. OnPaint() 메소드의 e.Graphics.DrawImage가 그렇게 할 것입니다. 그리고 OnMouseDown 오버라이드에서 히트 테스트를해야만 사용자가 버튼을 클릭하는 것을 볼 수 있습니다. 또는 일반 버튼을 사용하십시오. –

+0

컨트롤 박스를 닫고 싶습니다 (닫기 및 최소화). – Ryan

관련 문제