关于mfc的弹出窗口,弹出窗口的句柄为0
时间:2011-11-26
来源:互联网
新手,勿笑;
前几天写了一个mfc的小程序,用来管理学生数据;
一直都是正常的,今天边学边写了一个弹出窗口;
首先,主对话框下面有一个按钮,
我想通过单击它产生一个弹出窗口;
然后弹出窗口中有一个文本框,会有一个默认值,比如姓名;
为了实现这个功能;
我画了一个弹出窗口;
创建了类;
并且也在按钮的函数中使用了DoModal();
我在弹出窗口类的构造函数中写了一句:
text_mo_name.SetWindowText("123");
结果报错
---------------------------
Microsoft Visual C++ Debug Library
---------------------------
Debug Assertion Failed!
Program: d:\文档\visual studio 2010\Projects\ee\Debug\ee.exe
File: f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\winocc.cpp
Line: 246
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.
(Press Retry to debug the application)
---------------------------
中止(A) 重试(R) 忽略(I)
---------------------------
经过在检查,在构造函数中放置了一个this指针,设置了一个断点,发现this指针的hwnd是NULL导致错误;
后来,在弹出窗口中添加了一个按钮,通过点击按钮来给文本框设置显示的字符;
然后就可以正常显示了;
但是,这样不符合我的初衷;
要怎样解决这个问题??
简单来说,就是想在弹出文本框的时候,让文本框显示一个东西;
还有一点,为什么我在窗口预览的时候,所有按钮都是win7的圆角按钮,但是程序实际运行时却是像win95那样的直角按钮;
相当郁闷啊;
前几天写了一个mfc的小程序,用来管理学生数据;
一直都是正常的,今天边学边写了一个弹出窗口;
首先,主对话框下面有一个按钮,
我想通过单击它产生一个弹出窗口;
然后弹出窗口中有一个文本框,会有一个默认值,比如姓名;
为了实现这个功能;
我画了一个弹出窗口;
创建了类;
并且也在按钮的函数中使用了DoModal();
我在弹出窗口类的构造函数中写了一句:
text_mo_name.SetWindowText("123");
结果报错
---------------------------
Microsoft Visual C++ Debug Library
---------------------------
Debug Assertion Failed!
Program: d:\文档\visual studio 2010\Projects\ee\Debug\ee.exe
File: f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\winocc.cpp
Line: 246
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.
(Press Retry to debug the application)
---------------------------
中止(A) 重试(R) 忽略(I)
---------------------------
经过在检查,在构造函数中放置了一个this指针,设置了一个断点,发现this指针的hwnd是NULL导致错误;
后来,在弹出窗口中添加了一个按钮,通过点击按钮来给文本框设置显示的字符;
然后就可以正常显示了;
但是,这样不符合我的初衷;
要怎样解决这个问题??
简单来说,就是想在弹出文本框的时候,让文本框显示一个东西;
还有一点,为什么我在窗口预览的时候,所有按钮都是win7的圆角按钮,但是程序实际运行时却是像win95那样的直角按钮;
相当郁闷啊;
作者: ywwzwb 发布时间: 2011-11-26
好像,额,第一个问题解决了..........
我再初始化函数OnInitDialog()中添加了一句
CDialog::OnInitDialog();
好像就可以了
没加这句之前;
在这个函数中写text_mo_name.SetWindowText("123");也会有相同的错误,只不过这次换成文本框的句柄是NULL了;
不过第二个问题还是没有解决
我再初始化函数OnInitDialog()中添加了一句
CDialog::OnInitDialog();
好像就可以了
没加这句之前;
在这个函数中写text_mo_name.SetWindowText("123");也会有相同的错误,只不过这次换成文本框的句柄是NULL了;
不过第二个问题还是没有解决
作者: ywwzwb 发布时间: 2011-11-26
窗口类的构造函数在执行的时候,窗口还没有绘制好,还不能SetWindowText
作者: agoago_2009 发布时间: 2011-11-26
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28