c++ 我们如何增加或减少对话框的大小,使它也可以改变所有的按钮和菜单的大小也在MFC?

j13ufse2  于 2022-12-24  发布在  其他
关注(0)|答案(1)|浏览(144)
void CMFCApplication6Dlg::OnFontIncreasefont()
{

    /*LPCTSTR text = _T("Hello World");
    SetDlgItemTextW(IDD_MFCAPPLICATION6_DIALOG,text);*/

    Correct rect;
    GetClientRect(&rect);
    

x = rect.Height();
    int y = rect.Width();
    cout << x << endl;
    cout << y << endl;
    SetWindowPos(NULL, 200, 300, x + 150, y + 10, SWP_NOMOVE);
    CFont font;
    font.CreateFont(
        fon + 5,                        // nHeight
        0,                         // nWidth
        0,                         // nEscapement
        0,                         // nOrientation
        FW_NORMAL,                 // nWeight
        FALSE,                     // bItalic
        FALSE,                     // bUnderline
        0,                         // cStrikeOut
        ANSI_CHARSET,              // nCharSet
        OUT_DEFAULT_PRECIS,        // nOutPrecision
        CLIP_DEFAULT_PRECIS,       // nClipPrecision
        DEFAULT_QUALITY,           // nQuality
        DEFAULT_PITCH | FF_SWISS,  // nPitchAndFamily
        _T("Arial"));                 // lpszFacename

    fon = fon + 5;
    GetDlgItem(IDC_STATIC1)->SetFont(&font);
    GetDlgItem(IDC_STATIC2)->SetFont(&font);
    GetDlgItem(IDOK)->SetFont(&font);
    GetDlgItem(IDC_EDIT2)->SetFont(&font);
}

我想改变对角线的大小,这样所有的按钮和菜单的大小应该在同一时间改变。
我已经尝试了上面的代码,但它会采取所有的菜单或按钮的ID手动,但我需要的是,应该自动完成。

8yparm6h

8yparm6h1#

我已经尝试了上面的代码,但它会采取所有的菜单或按钮的ID手动,但我需要的是,应该自动完成。
您可以通过一个简单的循环自动执行此操作:

font.DeleteObject();
font.CreateFont(...);
for (CWnd* wnd = GetWindow(GW_CHILD); wnd != NULL; wnd = wnd->GetWindow(GW_HWNDNEXT))
{
  wnd->SetFont(&font);
}

相关问题