5

私のプログラムは、現在のデスクトップ上の任意のウィンドウを任意に最大化する必要があります。hWndShowWindow(hWnd, SW_MAXIMIZE)は、HWND最大化するウィンドウの です。そのコード行が実行されると、問題のウィンドウ (ここではメモ帳) は次のようになります。

代替テキスト

ウィンドウが正しく配置されていないことを除いて、すべて問題ないように見えます。つまり、ウィンドウが数ピクセル低くなっているように見え、タイトル バーが本来のように「押しつぶされた」ように見えません。最大化ボタンをクリックしたときの外観と比較すると、問題がはっきりとわかります。

代替テキスト

この動作が発生する理由と、それを修正するために何ができるかを誰かが知っていますか?

4

2 に答える 2

12

ウィンドウ自体を最大化するように指示すると、システム メニュー コマンドを介して最大化するときにプログラムが行う内部調整がバイパスされる可能性があります。最大化ボタンのクリックをエミュレートするには、SC_MAXIMIZEコマンドを送信します。

SendMessage(hwnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
于 2011-01-14T04:01:15.770 に答える
0

SetWindowPos(); を使用するもう 1 つの方法。たとえば、HWND handleWnd; を取得しました。

RECT rcWnd;
GetWindowRect(handleWnd,&rcWnd);
SetWindowPos(handleWnd,WHND_TOP,rcWnd.left,rcWnd.top,(rcWnd.right-rcWnd.left),(rcWnd.bottom-rcWnd.top),SWP_SHOWWINDOW);

前の位置を取得したので、ウィンドウを Z の上に配置して表示します

于 2015-04-16T04:59:02.527 に答える