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

解决方案 »

  1.   

    需要包含类的头文件
    #include "PolyDlg.h"
      

  2.   


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

  3.   

    void CMy09990171View::OnPolyitem()
    {
    CPolyDlg polydlg;
    polydlg.DoModal();
    x1=polydlg.m_x1; //看这里   
    y1=polydlg.m_y1; //看这里
    Invalidate();
    }
    这样才可以吧。另外,如果m_x1和m_y1是继承CWnd的控件话,会报错的,因为这CWnd只有在阻塞的DoModal()情况下有效果
    反之,如果是其他变量也可以的。
      

  4.   

    CPolyDlg polydlg;
    polydlg.DoModal();
    上面我有误解,模态对话框是可以这样用。只是调用函数结束,对话框就消失了,不适合于非模态对话框。