2011-01-14 21 views
4

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

alt text

すべてが窓はそう、つまりウィンドウは、正しく配置されていないという事実を除いて、罰金ですいくつかのピクセルが低くなるようにしてください。また、タイトルバーは見た目のように「潰れた」ように見えません。最大化ボタンをクリックしたときに、それがどのように見えるべきかと比較すると、問題がはっきりと見える。

alt text

この現象が発生した理由を誰もが知っていて、どのような私はそれを修正するために何ができますか?

答えて

10

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

SendMessage(hwnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0); 
+0

感謝を示し、私はそれを試してみるだろうし、それが動作するかどうかを教えてくれ。 – AniDev

+0

はい、うまくいきました。 – AniDev

0

)(SetWindowPosを使用するAntoher方法を。たとえば、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の上の場所のウィンドウを持って、

関連する問題