真是奇怪了(MFC关联变量)
我打开前几天创建的MFC的对话框程序,在RC文件上添加了3个编辑框3个静态文本框和一个组合框,编译,链接,然后运行程序,一切正常。但是在我给组合框关联了一个CComboB...
我打开前几天创建的MFC的对话框程序,在RC文件上添加了3个编辑框3个静态文本框和一个组合框,编译,链接,然后运行程序,一切正常。但是在我给组合框关联了一个CComboBox类型的变量后(只是关联,还有添加其他代码),编译,链接没问题,但是运行程序却没有窗口显示了。然后我取消了那个变量,又给3个中的1个编辑框关联了一个CString的变量,编译,链接没问题,运行也有窗口,但是马上程序崩溃了,出现了错误。提示"...我们对此...抱歉...",我只是关联变量,其他的什么也没做,难道就至于此吗?我把变量都删了之后,就不会出现错误了,程序也不会崩溃了。这是什么原因啊?
1楼是什么意思啊,不太明白。
代码太多了,不好贴啊。我想这不应该出问题啊。在一个对话框上继续添加控件,然后关联一下变量,就这么简单,还没有使用变量都出问题。删除变量,一切正常。 展开
1楼是什么意思啊,不太明白。
代码太多了,不好贴啊。我想这不应该出问题啊。在一个对话框上继续添加控件,然后关联一下变量,就这么简单,还没有使用变量都出问题。删除变量,一切正常。 展开
4个回答
展开全部
有可能你是不是删除了什么控件 而最开始 你给这个控件关联了一个变量
而在DoDataExchange()这个函数里 DDX_Control(pDX, YOURID, YOURVAR);这个函数
实现变量与控件的关联。
我们再跟进DDX_Control()这个函数里,会发现他调用PrepareCtrl()这个函数,而这个函数的函数体
{
ASSERT(nIDC != 0);
ASSERT(nIDC != -1); // not allowed
HWND hWndCtrl;
m_pDlgWnd->GetDlgItem(nIDC, &hWndCtrl);//这句话 获得你控件的窗口句柄,如果你删除了控件 那么hwndctrl返回null
if (hWndCtrl == NULL)
{
TRACE1("Error: no data exchange control with ID 0x%04X.\n", nIDC);//如果删除控件 进入这里,然后报错...
ASSERT(FALSE);
AfxThrowNotSupportedException();
}
}
而在DoDataExchange()这个函数里 DDX_Control(pDX, YOURID, YOURVAR);这个函数
实现变量与控件的关联。
我们再跟进DDX_Control()这个函数里,会发现他调用PrepareCtrl()这个函数,而这个函数的函数体
{
ASSERT(nIDC != 0);
ASSERT(nIDC != -1); // not allowed
HWND hWndCtrl;
m_pDlgWnd->GetDlgItem(nIDC, &hWndCtrl);//这句话 获得你控件的窗口句柄,如果你删除了控件 那么hwndctrl返回null
if (hWndCtrl == NULL)
{
TRACE1("Error: no data exchange control with ID 0x%04X.\n", nIDC);//如果删除控件 进入这里,然后报错...
ASSERT(FALSE);
AfxThrowNotSupportedException();
}
}
展开全部
一般情况下是不会出现这个问题的 可能是你程序其它代码导致的 不信你重新建一个工程试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没看到代码不好说话
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的组合框和编辑框 是不是继承了系统默认组合框类和编辑框类阿后自定义的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询