首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

用的是vc++的MFC,总是报错illegal use of this type as an expression

2012-12-30 
求助:用的是vc++的MFC,总是报错illegal use of this type as an expressionvoid CMy09990171View::OnPolyi

求助:用的是vc++的MFC,总是报错illegal use of this type as an expression
void CMy09990171View::OnPolyitem()
{
CPolyDlg polydlg;
polydlg.DoModal();
x1=CPolyDlg.m_x1;
y1=CPolyDlg.m_y1;
Invalidate();
}
CPolyDlg是对话框中关联的类。为什么总是报错 error C2275: 'CPolyDlg' : illegal use of this type as an expression
[解决办法]

引用:
void CMy09990171View::OnPolyitem()
{
CPolyDlg polydlg;
polydlg.DoModal();
x1=CPolyDlg.m_x1;
y1=CPolyDlg.m_y1;
Invalidate();
}
CPolyDlg是对话框中关联的类。为什么总是报错 error C2275: 'CPolyDlg' : illegal use of……


首先,CPolyDlg polydlg定义为局部变量,是不能产生窗口的。
正确的方法 在CMy09990171View 定义:CPolyDlg polydlg;
其次:x1=CPolyDlg.m_x1;
     y1=CPolyDlg.m_y1;
是错误的。应该是:
x1=polydlg.m_x1;
y1=polydlg.m_y1;


[解决办法]
void CMy09990171View::OnPolyitem()
{
CPolyDlg polydlg;
polydlg.DoModal();
x1=polydlg.m_x1; //看这里   
y1=polydlg.m_y1; //看这里
Invalidate();
}
这样才可以吧。

另外,如果m_x1和m_y1是继承CWnd的控件话,会报错的,因为这CWnd只有在阻塞的DoModal()情况下有效果
反之,如果是其他变量也可以的。

热点排行