当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 本文主要针对初学者在使用对话框赋值时的一些问题而写。
 

 

 ·【mfc】doc    »显示摘要«
    摘要: doc_view结构中让窗口一开始就最大化探讨作者:enoloo 一般的做法是在 c**app::initinstance()中,修改成这样:{ //... m_pmainwnd->showwindow(sw_showmaximized); m_pmainwnd->updatewindow(); //...}或者,还在 cmainframe::precreatewindow(cre......
    摘要: ......


对话框控件属性的修改

本文主要针对初学者在使用对话框赋值时的一些问题而写.如果你对对话框的使用已经很熟练,请跳过本文.

cmydialog dlg; 【程序编程相关:C++网络开发包ACE环境的配置与调试

许多初学者,常常写出这样的程序来修改对话框中某个按钮的标题: 【推荐阅读:一步一步学JAVA(第四课 方法、值传递

其中m_btn的定义为cbutton m_btn; 【扩展信息:一步一步学JAVA(第四课 方法、值传递

dlg.m_btn.setwindowtext("mybutton");

这段程序运行后会抱错,debug一下,错误会指向一个断言语句assert(::iswindow(m_hwnd));报告窗口指针为空.看一下m_hwnd,等于0x00000000.其实就是m_btn这个cbutton对象的句柄为空.

出现这种错误的原因,显然是m_btn这个窗口对象还没有创建造成的.我们看一下cmydialog dlg这个构造函数,看一看msdn对cdialog构造函数的说明.其实它只是简单的创建了一个对话框实例.这里我这样理解,就是对话框是一个容器,而对话框上的各个控件是容器中包含的对象.对话框的构造函数只是构造了一个容器,而并没有创建容器中的各个对象.我想这里大家就应该明白为什么m_btn的句柄为空了.那对话框中的控件在什么时候被创建的呢?我个人没有仔细的研究过,但从个人使用的经验看,应该在domodal函数与对话框的create函数中创建的.因为使用一个模式对话框时,m_btn.setwindowtext("mybutton")语句在oninitdialog函数中执行没有问题.所以应该在domodal中创建的.至于domodal中是如何创建的,欢迎各位高手给与讲解.
...   下一页
    摘要: 写mfc程序程时,向导会自动在注册表中建立本程序的键,用于保存程序的一些设置信息。但有时我们不希望将这些配置信息保存到注册表中,而要存在自己指定目录中的ini文件(或其它文件),我们不用自己重写一个cinifile类,只需要要cwinapp::initinstance()中修改cwinapp的几个成员变量就可以了,如下: //以下代码放到initinstance中//首先清除注册表键值变量所分......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE