【问题标题】:Control variable in add member variable wizard is disabled. Why?添加成员变量向导中的控制变量已禁用。为什么?
【发布时间】:2011-03-06 18:25:08
【问题描述】:

我有一个从 CMyDialog 派生的 MFC 对话框(是一个 CDialog),并尝试使用“添加成员变量向导”添加控件。但是复选框“控制变量”是灰色的。任何想法是什么问题?

例如: 我有一个编辑控件,想添加一个具有上下边界(最小值和最大值)的 int 变量。我需要检查“控制变量”并将“类别”设置为值。但是“控制变量”是灰色的。

我也尝试了按钮或列表控件,但“控件变量”显示为灰色。

【问题讨论】:

  • 你要为什么样的控件添加成员变量?
  • 您是右键单击控件并选择成员变量还是直接在对话框内单击?

标签: visual-studio-2008 mfc wizard


【解决方案1】:

安德烈亚斯·贝尔克是对的。我们面临着同样的问题。另请注意,如果您的对话类在某处有typedef,您将遇到同样的问题。

以下示例不起作用(VS2015):

typedef CDialog         CBaseDialog;

class CMyDialog : public CBaseDialog
{
public:
  // Dialog Data
  enum { IDD = IDD_MYDIALOG };
  ⋮
};

CMyDialog::CMyDialog(CWnd* pParent /*=NULL*/)
  : CBaseDialog(IDD_MYDIALOG, pParent)
{
    ⋮
}

【讨论】:

    【解决方案2】:

    为了使用向导添加控制变量,您必须在类头中定义一个IDD 枚举并在构造函数中使用它。例如:

    标题:

    class CMyDialog : public CDialog 
    {
    public:
      // Dialog Data
      enum { IDD = IDD_MYDIALOG };
      ⋮
    };
    

    来源:

    CMyDialog::CMyDialog(CWnd* pParent /*=NULL*/)
      : CDialog(CMyDialog::IDD, pParent)
    {
        ⋮
    }
    

    另一方面,如果你在构造函数的初始化列表中直接使用资源ID(而不是在头部使用IDD枚举),那么你不能添加成员变量或使用“控制变量” IDE 中的复选框。

    来源:

    CMyDialog::CMyDialog(CWnd* pParent /*=NULL*/)
      : CDialog(IDD_MYDIALOG, pParent)
    {
        ⋮
    }
    

    【讨论】:

      【解决方案3】:

      我在这里遇到了同样的问题,但由于性能原因,我们禁用了 Intellisense 更新(“禁用数据库自​​动更新 = true”)。我想 MFC 向导使用 Intellisense。只需重新启用它或重新扫描您的解决方案即可。

      【讨论】:

        【解决方案4】:

        可能是 VS2008 中的一些错误。我曾经遇到过类似的问题。

        尝试添加一个控件并双击它。您将生成一个处理程序。然后单击控件并添加控制变量。

        这对我有用。

        【讨论】:

        • 不适用于我,但我找到了解决问题的方法,请参阅我的答案
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多