首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >考虑到本地化,将属性表上的IDCANCEL按钮更改为IDCLOSE按钮

考虑到本地化,将属性表上的IDCANCEL按钮更改为IDCLOSE按钮
EN

Stack Overflow用户
提问于 2018-11-09 11:38:25
回答 1查看 197关注 0票数 0

这听起来可能是个愚蠢的问题。我知道CMFCPropertyPage有一个CancelToClose方法,但是我找不到类似于sheet对象的方法。

我基本上希望取消按钮在任何时候都是“关闭”的,并且希望在sheet对象中这样做。

是通过在每个页面中调用CancelToClose来做到这一点的唯一方法吗?

我读过,现在意识到它不是我想要的。

这就是我想要的床单上的东西:

  1. 自定义预览按钮。
  2. 一个关闭按钮。

预览按钮将在关闭按钮的左侧。我找到了一个关于添加自定义按钮的教程。

对于关闭按钮,我不知道该做什么。

更新

所以,现在我有:

因此,它有了自定义按钮(现有隐藏的IDOK按钮所在的位置)。它还有IDCANCEL按钮。但我希望按钮“接近”。

我知道我可以使用SetWindowText,但是我正在考虑本地化,所以我想知道最好的方法是什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-10 17:52:05

我就是这样解决这个问题的。我现在从CMFCPropertySheet::OnInitDialog()调用这段代码

代码语言:javascript
复制
void CVisitsRotaPropertySheet::SetupButtons()
{
    CRect rctOK, rctCancel;
    CString strButtonText;

    // Get the position if the IDOK button
    GetDlgItem(IDOK)->GetWindowRect(rctOK);
    ScreenToClient(rctOK);

    // Get the position of the IDCANCEL button
    GetDlgItem(IDCANCEL)->GetWindowRect(rctCancel);
    ScreenToClient(rctCancel);

    // Hide the IDCANCEL button
    GetDlgItem(IDCANCEL)->ShowWindow(SW_HIDE);

    // Move the IDOK button to be in the same place as the IDCANCEL button
    GetDlgItem(IDOK)->MoveWindow(rctCancel);

    // Create the PREVIEW button in the original location of the IDOK button
    ENSURE(strButtonText.LoadString(IDS_STR_PREVIEW));
    m_btnPreview.Create(strButtonText,
        BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, rctOK, this, IDC_BUTTON_PREVIEW);
    m_btnPreview.SetFont(GetFont());
}

上面的代码会根据我的意愿调整按钮。然后,在我的CMFCPropertyPage::OnInitDialog()处理程序中,我调用了CancelToClose()

结果:

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

https://stackoverflow.com/questions/53225057

复制
相关文章

相似问题

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