首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组框调整顶部单选按钮的大小问题

组框调整顶部单选按钮的大小问题
EN

Stack Overflow用户
提问于 2014-05-13 00:04:27
回答 1查看 457关注 0票数 4

我不知道我在这里做错了什么。我正在尝试使用MFC实现一个调整大小的对话框窗口。代码非常简单。我覆盖以下大小调整通知:

代码语言:javascript
复制
void CMyDlg::OnSize(UINT nType, int cx, int cy)
{
    CDialog::OnSize(nType, cx, cy);

    // TODO: Add your message handler code here


    //...

    //First move the groupbox, pGroupbox is of type CWnd
    pGroupbox->MoveWindow(rcGroupbox);

    //And then move all radio buttons in it
    //Each is moved the exact same way
    //pEachRadioButton is of type CWnd
    pEachRadioButton->MoveWindow(rcEachRadioButton);

}

但我得到的结果是。

首先,这里是最初的组框:

只有当我开始拖拽主窗口框的底部时,才会发生这种情况。我得到这个神器:

注意,单选按钮本身的位置是正确的。如果我把鼠标移到其中任何一个上面,它就会正确地重新绘制自己(就像这个“关闭”按钮):

下面是对话框本身的布局:

代码语言:javascript
复制
IDD_MY_DIALOG DIALOGEX 0, 0, 437, 190
STYLE DS_SETFONT | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
EXSTYLE WS_EX_APPWINDOW
CAPTION "My dialog"
MENU IDR_MENU_MAIN
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
    PUSHBUTTON      "&Cancel",IDCANCEL,381,169,50,14
    GROUPBOX        "When Tasks Are Completed",IDC_STATIC_WHEN_COMPLETED,7,113,423,36
    CONTROL         "Close the pro&gram",IDC_RADIO_CLOSE_PROGRAM,"Button",BS_AUTORADIOBUTTON | WS_GROUP,26,129,73,8
    CONTROL         "Put computer to sleep",IDC_RADIO_SLEEP,"Button",BS_AUTORADIOBUTTON,122,129,84,10
    CONTROL         "Hibernate computer",IDC_RADIO_HIBERNATE,"Button",BS_AUTORADIOBUTTON,229,129,78,10
    CONTROL         "Shut down computer",IDC_RADIO_SHUT_DOWN,"Button",BS_AUTORADIOBUTTON,330,129,81,10
    DEFPUSHBUTTON   "&OK",IDC_BUTTON_SET,311,161,67,22
END

我做了一些搜索并找到了这篇文章,但不幸的是,设置这些样式并没有修复bug。

知道怎么解决这个问题吗?

PS。我正在Windows、7或8上测试它,并启用了可视主题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-13 00:43:00

当您移动窗口时,窗口管理器将按其存在的情况移动窗口的当前图像。不幸的是,因为你先移动了框架,所有的窗户都被剪短了。把它们翻过来一点用也没有,因为这样就会把上衣剪掉。

修复它的简单方法是在每个控件移动后调用InvalidateRect。

更好的方法是在开始移动任何东西之前调用BeginDeferWindowPos,然后在完成移动时调用EndDeferWindowPos,以便所有窗口一起移动。

Windows希望组框在选项卡顺序中位于单选按钮之后,这可能也会产生不同的效果。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23620829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档