我有一个从CMyDialog派生的MFC对话框(是一个CDialog)并尝试使用“添加成员变量向导”添加一个控件。但是复选框“控制变量”显示为灰色。任何想法是什么问题?
例如: 我有一个编辑控件,并希望添加一个带有下边框和上边框(最小值和最大值)的int变量。我需要检查“控制变量”并将“catagory”设置为值。但“控制变量”显示为灰色。
我也试过按钮或列表控件,但“控制变量”显示为灰色。
答案 0 :(得分:3)
为了使用向导添加控制变量,必须在类标题中定义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)
{
⋮
}
答案 1 :(得分:0)
VS2008中可能存在一些错误。我曾经遇到过类似的问题。
尝试添加控件并双击它。您将生成一个处理程序。然后单击控件并添加控制变量。
这对我有用。
答案 2 :(得分:0)
我在这里遇到了同样的问题,但由于性能原因,我们禁用了Intellisense更新('Disable Database Auto Updates = true')。我想MFC wizzard使用Intellisense。只需重新启用它或重新扫描您的解决方案即可。
答案 3 :(得分:0)
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)
{
⋮
}