2014-09-04 3 views
1

나는 창 응용 프로그램이 있는데, 나는 창/양식을 최대화해야합니다. 보내기/postmessage User32.dll을 사용하여 양식 최대화

나는

public const int WM_NCLBUTTONDOWN = 0xA1; 
    public const int HT_CAPTION = 0x2; 
    SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0); 

and 

    int WM_SIZE = 0x0005; 
    int SIZE_MAXIMIZED = 2; 
    SendMessage(Main, WM_SIZE, SIZE_MAXIMIZED, 0); 

아무것도 작동하지됩니다했습니다.

어떤 일을 제대로 수행 할 수 있습니까?

답변

2

설명서에 설명 된대로 WM_SIZE은 알림이며 창 크기가 변경되는 경우 창으로 보내집니다. 창에 보내는 것은 창 크기를 변경하지 않습니다. 귀하의 발신 WM_NCLBUTTONDOWN은 캡션 바에서 클릭을 위장하려는 것 같습니다. 적어도 그렇게하지 않은 방식으로는 효과가 없을 것입니다.

ShowWindowAsync을 최대화하려는 창의 핸들을 전달하고 SW_MAXIMIZE을 사용하십시오.

+0

hhmmm ..... 내가 한 ShowWindowAsync 부울이 [같이 DllImport ("user32.dll을")] 공공 정적 통근자 (INT HWND, INT SW_MAXIMIZE); ShowWindowAsync (Main, 2); 그리고 그것은 작동하지 않았다 –

+0

아마도 창 핸들이 잘못되어 왜 2를 전달하기로 선택 했습니까? 2는 무엇을 의미한다고 생각하니? 그것은 최대화를 의미하지 않습니다. 제가 링크 한 문서는 합리적으로 분명합니다. 또한, "작동하지 않았다"는 결코 사용되지 않습니다. 아무도 당신은 그게 무슨 뜻인지 알지 못합니다. –

+0

찾기 "숨기기"{$ = 0} "일반"{$ = 1} "SHOWMINIMIZED"{$ = 2} "극대화"{$ = 3} "ShowNoActivate"{$ = 4} 은 " "{$ = 5} "최소화 "{$ WinStateInt = 6} "SHOWMINNOACTIVE "{$ WinStateInt = 7} "SHOWNA "{$ WinStateInt = 8} " ""{9} "ShowDefault 복원 {10} "ForceMinimize"{0} 기본 {$ = 1} –

0

최대화은 SYSCOMMAND입니다, 대신을 시도해보십시오

 int WM_SYSCOMMAND = 0x112; 
     int SC_MAXIMIZE = 0xf030; 
     SendMessage(handle, WM_SYSCOMMAND, SC_MAXIMIZE, IntPtr.Zero); 
관련 문제