2016-11-24 124 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查看屬性。在對話框屬性頁的底部,設置「位置 - >中心 - >真正的」 –

+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