簡體   English   中英

如何獲取資源文件中對話框的按鈕控件的大小和位置?

[英]How to get the size and position of a button control of a dialog in a resource file?

我正在嘗試以編程方式設計一個根據屏幕分辨率調整大小的對話框菜單,並且我能夠在這個問題之后使用對話框的nameID對話框的大小和位置:

獲取資源文件中定義的對話框大小

但是,我在嘗試獲取對話框中按鈕控件的大小和位置時遇到了問題。 以下是對話框在資源文件中的示例:

IDD_DLG DIALOG  0, 0, 300, 200
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP
BEGIN
    DEFPUSHBUTTON   "OK",IDOK,30,46,42,18
    PUSHBUTTON      "Cancel",IDCANCEL,145,46,42,18
END

我可以使用它的nameID獲取對話框的大小和位置,即IDD_DLG ,但是是否可以通過編程方式為DEFPUSHBUTTONPUSHBUTTON獲取相同的東西?

如果是這樣,如何? 謝謝!

MFC 允許自動重新定位/調整子按鈕的大小。 在資源屬性頁中,單擊對話框按鈕,轉到動態控制部分,為每個按鈕啟用動態調整大小/移動。

要查找按鈕相對於對話框客戶端窗口左上角的坐標:

使用GetWindowRect在屏幕坐標中查找按鈕矩形。 然后將屏幕坐標轉換為客戶端坐標:

CMyDialog::OnInitDialog()
{
    CDialog::OnInitDialog();
    CRect rc;
    CWnd *wnd = GetDlgItem(IDOK);
    wnd->GetWindowRect(&rc);
    ScreenToClient(rc);
    ...
    //move/resize rc
    wnd->SetWindowPos(NULL, rc.left, rc.top, rc.Width(), rc.Height(), SWP_SHOWWINDOW);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM