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
{
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
解决方案 »
- VS制作安装包项目的时候,安装路径能自动添加一个文件夹吗?
- 在dll导出函数的时候不加extern "c". 其他程序如何调用该dll
- 线程创建问题CREATE_SUSPENDED flag疑问
- clistbox 根据情况改变字体颜色
- 当弹出消息框(MESSAGEBOX)时候,怎样用ESC键取消???
- 怎样让一组控件同时显示或消失?
- 请高手进来指点一二: 怎么用系统找不到的资源ID?
- SOS:老师要求做一个串口通信的程序
- 菜鸟送分-关于DLL的初级知识
- VS静态编译程序,安装后运行出错,求前辈指点
- C++写的DLL传递字符串数据给C#的纠结问题,请帮忙分析解决,谢谢:)
- 如何优雅的正常断开TCP连接
#include "PolyDlg.h"
首先,CPolyDlg polydlg定义为局部变量,是不能产生窗口的。
正确的方法 在CMy09990171View 定义:CPolyDlg polydlg;
其次:x1=CPolyDlg.m_x1;
y1=CPolyDlg.m_y1;
是错误的。应该是:
x1=polydlg.m_x1;
y1=polydlg.m_y1;
{
CPolyDlg polydlg;
polydlg.DoModal();
x1=polydlg.m_x1; //看这里
y1=polydlg.m_y1; //看这里
Invalidate();
}
这样才可以吧。另外,如果m_x1和m_y1是继承CWnd的控件话,会报错的,因为这CWnd只有在阻塞的DoModal()情况下有效果
反之,如果是其他变量也可以的。
polydlg.DoModal();
上面我有误解,模态对话框是可以这样用。只是调用函数结束,对话框就消失了,不适合于非模态对话框。