【问题标题】:Use 1 unique MFC dialog for multiple different objects of the same class对同一类的多个不同对象使用 1 个独特的 MFC 对话框
【发布时间】:2016-06-07 09:53:40
【问题描述】:

比起 MFC,我更习惯使用 Qt,但我有以下顾虑:

我正在创建一个带有 4 个按钮的面板,所有这些按钮都有相同的用途,如果单击它们会打开另一个对话框。

此对话框的 4 个按钮布局完全相同。

但是,由于对话框通过枚举 { IDD = ...} 关联到一个类,我想知道是否真的可以为多个对象使用相同的对话框模板,或者我是否必须实际创建 4 个对话框用不同的 id 做基本相同的事情??

【问题讨论】:

    标签: c++ visual-studio mfc


    【解决方案1】:

    enum { IDD = <resource ID> }; 语句中的资源 ID 定义了一个编译时常量,它被传递给 CDialog-c'tor (默认情况下1)) 以从对话框模板资源。然后将其传递给对话框创建函数之一(CreateDialog 等)以完成繁重的工作。

    没有任何限制可以防止对多个CDialog 派生类使用单个对话框模板。


    1)你可以在你的自定义类实现中直接将对话框模板资源ID传递给CDialog-c'tor,不需要使用标准的枚举值IDD

    【讨论】:

    • 我没有把它当作资源,你的解释让事情更清楚了
    • @Ajay:enum 只是您的平均枚举值(我不知道,您所说的 “不是一流的 C++” 是什么意思;没有什么特别引人注目的它)。如果多个类定义了同名的成员,那么这并不违反单一定义规则。成员的范围仅限于它们的封闭类。换句话说:每个CDialog 派生类都可以有一个名为IDD 的类成员(几十年来一直如此)。不管怎样,任意数量的对话实现都可以使用相同的对话模板资源。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 2013-11-21
    • 1970-01-01
    • 2016-09-27
    • 1970-01-01
    相关资源
    最近更新 更多