2016-11-24 2 views
-1

ウィンドウの最上部にMFCダイアログフォームを開始します。中間のMFCダイアログを配置する

BOOL StatusDlg::OnInitDialog() 
{ 
... 
SetWindowPos(&this->wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE); 
... 
} 

これで左上隅に配置され、画面中央の中央に配置する必要があります。

MSDNよる:

BOOL WINAPI SetWindowPos(
    _In_  HWND hWnd, 
    _In_opt_ HWND hWndInsertAfter, 
    _In_  int X, 
    _In_  int Y, 
    _In_  int cx, 
    _In_  int cy, 
    _In_  UINT uFlags 
); 

私はXとY座標を使用することができますが、この場合には、私はモニタの解像度を知っておく必要があると。私は、どこかが機能するか、またはJUST_SET_WINDOW_IN_CENTERにフラグを立てるべきだと感じています。窓を中央に配置する簡単な方法は何ですか?

+5

[ウィンドウを中央に単純な方法](https://msdn.microsoft.com/en-us/library/1a3x359y.aspx)があります。 –

+2

ダイアログエディタでも、タイトルバーをクリックし、F4をクリックしてプロパティを表示できます。ダイアログプロパティページの下部で、 "Position - > Center - > true"と設定してください。 –

+0

画面の中央ではなくダイアログの中央に配置したくないですか? – sergiol

答えて

1

簡単な方法:

BOOL CAboutDlg::OnInitDialog() 
{ 
    CDialog::OnInitDialog(); 
    CenterWindow(); 
    return TRUE; 
} 
+0

これは、ユーザーが親ウィンドウに中央に配置したい場合、または親ウィンドウがない場合に機能します。それが親を持っていて、ユーザーがスクリーンの上を中心にしたい場合、それは動作しません。ユーザーが何をしたいかはわかりません。 – sergiol

+0

https://msdn.microsoft.com/en-us/library/1a3x359y.aspxの注釈セクションでは、ダイアログを画面の中央に配置したい場合、 'CWnd :: GetDesktopWindow'によって返された値を' pAlternateOwner'引数として渡しますCenterWindow関数の – sergiol

関連する問題