没能成功,可以在view中添加响应函数,但是对成员数据处理不了好像。 void C##View::OnBlack() //在view添加的单选按钮响应函数 { // TODO: Add your control notification handler code here color = 1; } 但是没有改变值,color还是赋值状态。
上面不是说了吗?用全局变量,你在CxxxView类的CPP文件的空白的地方定义一个变量,比如:int color; 然后在对话框类的CPP文件中用extern int color=1;初始化一下,然后就可以在两个类中引用了。
全局变量好像也没用,会出现##View.obj : error LNK2005: "int color" (?color@@3HA) already defined in CHOOSE.obj 和 Error executing link.exe.
不可能吧,你是不是吧color设为了静态(static)变量了
不是没用,而是你不会用,如果你的全局变量是在CXXXView类的CPP文件中定义的,那么在对话框类的CPP文件中,应用之前一定要写作:extern int color=1;前面的extern绝对不可以少,它表示这个变量定义在外部文件中。
extern int color; 这样的话是可以,但不能赋值。 问题好像就是在窗口类中,选择单选按钮(可以是响应函数也可以是在"OnOK"中使用color = 1),但是还是赋值不了。 如下: extern int color; void COLOR::OnOK() {
然后在对每个函数需要实现的功能为color赋值.
void C##View::OnBlack() //在view添加的单选按钮响应函数
{
// TODO: Add your control notification handler code here
color = 1;
}
但是没有改变值,color还是赋值状态。
然后在对话框类的CPP文件中用extern int color=1;初始化一下,然后就可以在两个类中引用了。
和
Error executing link.exe.
这样的话是可以,但不能赋值。
问题好像就是在窗口类中,选择单选按钮(可以是响应函数也可以是在"OnOK"中使用color = 1),但是还是赋值不了。
如下:
extern int color;
void COLOR::OnOK()
{
// TODO: Add extra validation here
UINT nGo = GetCheckedRadioButton(IDC_BLACK, IDC_WHITE);// 获得选择
switch(nGo)
{
case IDC_BLACK: color = 1;
break;
case IDC_WHITE: color = 2;
break;
}
UpdateData(FALSE);
CDialog::OnOK();
}
在对话框类中定义一个视图指针:
C##View *m_view;
对话框中的按钮:void COLOR::OnRed()
{
m_view->color=1;
}
//其他一样而在视图类的颜色按钮对应的代码中这样调用:COLOR dlg;//定义对话框
dlg.m_view=this;//把当前视图指针个m_view;
dlg.DoModal();其实,你既然要做颜色,又干嘛这么麻烦才用了这三种颜色,为什么不直接调用颜色对话框,那样既简单又有种颜色让你选择。