[求助]在对话框上编程创建一个按钮,运行时出现Debug Assertion Failed,请求各位高手解答!

chinaldcr123 2009-04-05 03:28:36
我是新手,照着书上的例子编程在对话框上创建一个按钮。编译没有问题,运行时却出现:Debug Assertion Failed!后边还有什么什么wincore.cpp Line:638之类的。调试了一天,也在网络上差了不少资料,有人说是指针或堆栈问题,但没有细说,我还是不大回弄。
我的ide是vs2008。先是创建了一个基本对话框的应用程序Ex_DlgCtrls,然后为CEx_DlgCtrlsDlg类创建了一个CButton类型的成员变量m_btnWnd。接着在Cex_DlgCtrlsDlg的函数OnInitDialog函数中添加了如下代码:
m_btnWnd.Create("你好",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,CRect(20,20,120,60),this,201); //创建
CFont *font=this->GetFont(); //获取对话框的字体
m_btnWnd.SetFont(font); //设置控件字体
然后就保存,编译,没有问题。但运行就出了上述说的问题。我跟踪程序时,发现程序运行到上面那三行代码的第一行的时候就出问题了,但不会改。
具体的project我保存在邮箱的附件里了(我不知道为什么不能用这例的附件,只好注册了个邮箱,地址是chinaldcr123@sohu.com,密码123456,里面收件箱名叫“工程代码”的邮件就是了)。
先感谢大家的帮忙了。
...全文
199 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinaldcr123 2009-04-05
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 suzhijie325 的回复:]
你有qq吧!加我``我教你278243202
[/Quote]

谢谢你,问题解决了。多亏了你的帮忙。
Jamy325 2009-04-05
  • 打赏
  • 举报
回复
你有qq吧!加我``我教你278243202
chinaldcr123 2009-04-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 suzhijie325 的回复:]

按钮应该是在对话框创建之前创建的` 这是修改后的``
[code=C/C]
int CEx_DlgCtrlsDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;

// TODO:  ÔÚ´ËÌí¼ÓÄúרÓõĴ´½¨´úÂë
m_btnWnd.Create("你好",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,CRect(20,20,120,60),this,201); //创建
CFont *font=this->GetFont(); //获取对话框的字体
m_btnWnd.SetFont(font); //设置…
[/Quote]

有点晕,我需要先在类里添加一个OnCreate函数么?在对话框之前创建按钮,就是说在OnInitDialog函数中先执行OnCreate再执行CDialog::OnInitDialog()吗?那个参数LPCREATESTRUCT lpCreateStruct我也不知道是什么呢。有点不大会改。
chinaldcr123 2009-04-05
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 DavidHsing 的回复:]
在 Create 之前添加判断
if (btnWnd.GetSafeHwnd() == NULL)
[/Quote]

我试了你这种方法,能运行,但是就没有办法创建按钮了
Jamy325 2009-04-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 chinaldcr123 的帖子:]
接着在Cex_DlgCtrlsDlg的函数OnInitDialog函数中添加了如下代码:
m_btnWnd.Create("你好",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,CRect(20,20,120,60),this,201); //创建
CFont *font=this->GetFont(); //获取对话框的字体
m_btnWnd.SetFont(font); //设置控件字体[/Quote]
这是错误的,应该放在OnCreate中处理``可能我刚刚回复的不清楚``这是补充`
Jamy325 2009-04-05
  • 打赏
  • 举报
回复

按钮应该是在对话框创建之前创建的` 这是修改后的``
[code=C/C]
int CEx_DlgCtrlsDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;

// TODO: ÔÚ´ËÌí¼ÓÄúרÓõĴ´½¨´úÂë
m_btnWnd.Create("你好",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,CRect(20,20,120,60),this,201); //创建
CFont *font=this->GetFont(); //获取对话框的字体
m_btnWnd.SetFont(font); //设置控件字体

return 0;
}
[/code]
DavidHsing 2009-04-05
  • 打赏
  • 举报
回复
在 Create 之前添加判断
if (btnWnd.GetSafeHwnd() == NULL)
Jamy325 2009-04-05
  • 打赏
  • 举报
回复

chinaldcr123 2009-04-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 suzhijie325 的回复:]
还是登录不上去``把代码打包发送到偶邮箱吧``suzhijie325@163.com
[/Quote]

恩,发过去了,project文件。谢谢你的帮忙。
Jamy325 2009-04-05
  • 打赏
  • 举报
回复
还是登录不上去``把代码打包发送到偶邮箱吧``suzhijie325@163.com
chinaldcr123 2009-04-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 suzhijie325 的回复:]
登录不上去``chinaldcr123@sohu.com
[/Quote]

那个邮箱不知道为什么上不去了--!我又注册了个,地址是chinaldcr321@sohu.com,密码123456
Jamy325 2009-04-05
  • 打赏
  • 举报
回复
登录不上去``chinaldcr123@sohu.com

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧