我建了一个MDI,里面建有一个属性表类,属性表类里面有两个属性页类,它控件类型,比如CComboBox,我给它定义了一个成员变量。然后在视图中调用该属性页类的CComboBox控件,使用它的函数比如AddString添加字符串,每次编译时能通过,但是程序运行调用显示对话框的按钮时就报错,怎么回事啊?属性表类:CPropertyNP,成员变量:ps
属性表中属性页类的成员变量:PropertyPara
属性页类中CComboBox控件的成员变量:BlockPara
ps.m_PropertyPara.m_BlockPara.AddString("ADC");编译时没有问题,但是运行程序,调用显示对话框的按钮就出错。我把这句话去掉以后,就没有问题。我把属性表类改成对话框类同样出错。
属性表中属性页类的成员变量:PropertyPara
属性页类中CComboBox控件的成员变量:BlockPara
ps.m_PropertyPara.m_BlockPara.AddString("ADC");编译时没有问题,但是运行程序,调用显示对话框的按钮就出错。我把这句话去掉以后,就没有问题。我把属性表类改成对话框类同样出错。
解决方案 »
- 串口通信问题
- 明白peekMessage的来看看
- 在VC++6.0怎么设置一个x*x的窗体,窗体的大小怎么设置?
- 对U盘创建文件会出现假死症状
- 多文档视图新建子窗口问题
- 一个DLL工程,在debug下ok,在release出
- 麻烦高手帮我解答MSHFLEXGRID控件不能重复动态添加行的问题。
- 怪怪的问题,有劳大家:对话框程序初始化时用SendMessage(WM_SYSCOMMAND,SC_MAXIMIZE,NULL)最大化主窗体却出现内存溢出?
- 关于数据结构的问题(Tree的构建问题)很简单!能解决问题另加!!
- 关于接收icmp包的问题------150分,在网络版给分
- 急!!!
- COM+能传输文件吗?
但是我把CComboBox类型改成CString类型,在视图其他地方赋值就没有问题了
这种情况下就用CString变量就可以拉。
类CPropertyNP 由两个属性页类组成,其中一个属性页的类里面定义了ComboBox类的控件。语句如下: CPropertyNP ps (_T ("Properties"));
ps.m_PropertyPara.m_Para.AddString("大家好");我在类CPropertyNP 由的属性页类中调用这个ComboBox类控件的函数就没有问题
我有点搞不清楚为什么我的ComboBox没有构造好啊?我怎么才能构造它呢?我还是想用ComboBox。
ps.m_PropertyPara.m_Para.AddString("大家好");终于明白了。这样是不行的。这里只是声名了一个局部变量ps,这个窗口根本没有初始化,所以,m_PropertyPara的窗口句柄是不存在的,非法的。所以再往下调用就挂了。
所以,你首先要确保ps已经DoModal或者Create(此时ps要全局)出来了,这样才可以接着往下调用。当这个窗口还没有初始化时,如果你想操作控件,就只能使用CString变量了。当初始化完成后Add进去,效果是一样的:)
ps.DoModal ();
ps.m_PropertyPara.m_Para.AddString("大家好");我把语句改成这样还是没有用啊。把后面那句去掉可以显示对话框,但是加上后我点击OK或Cancel就报错。
另外,CPropertyNP ps 这样直接申明成员居然要报错:error C2512: 'CPropertyNP' : no appropriate default constructor available,搞不懂了啊。
怎样才可以直接申明属性表的成员变量啊,我直接申明属性单的成员变量也没有问题啊。
现在我改在对应类的OnInitDialog()函数中调用就没问题了。自己概念搞错了。谢谢楼上各位!
现在我改在对应类的OnInitDialog()函数中调用就没问题了。自己概念搞错了。谢谢楼上各位!