MFC中,对话框上的控件,也是一个对象,为什么在对话框类中找不到该对象的声明?在哪里能找到?

如题所述

一般要使用该控件的话,直接为该控件添加变量就可以了。(右键单击该控件,选择添加变量)
然后头文件中会自动生成该对象的声明。
如果直接在头文件中声明是不行的(还要在一个函数中添加 ID 映射)追问

其实,我是想实现这样一个功能的。我想让控件响应WM_CHAR消息。通常情况下,我们是让它关联一个类,然后让这个类来捕获处理WM_CHAR消息。但是,现在无法为控件关联一个类。我知道有一个解决方法,就是替换这个控件基类的windowProc函数。
但我搞不懂,为什么不直接找到用来声明控件对象的类? 让这个类响应WM_CHAR消息,不就行了么?创建控件对象(比如编辑框控件)的类,我猜应该是基类CEdit,对不?

追答

呵呵,明白你的意思了。我只知道窗体可以响应消息。
(你在资源视图中右键单击窗体,点“属性”可以添加消息,而右击控件点“属性”貌似都不可以添加消息)
而且窗体都有对应的类。
而控件一般在项目中是没有生成的类的。基类也是封装好了的啊。
如果你想让控件响应WM_CHAR,直接在该控件所在的窗体类中编写代码不就可以了吗???

追问

不是的。你可以看看,比如编辑框控件,你尝试这为它添加WM_CHAR消息试试看? 它压根就没有WM_开头的消息。在该控件所属的窗体中,捕获该控件的消息,是没错的,但是可以捕获的消息很有限,都是EN_开头的消息。
所以说,要让控件响应WM_CHAR消息,我知道有一种方法,是替换控件的基类的WindowProc()函数。

追答

大哥,如何替换控件的基类的WindowProc()函数?
直接让控件所在的窗体响应消息不就可以了吗?通过该窗体一样可以操纵控件啊。

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-05-09
看你的编译器 类视图啊

MFC中,对话框上的控件,也是一个对象,为什么在对话框类中找不到该对象...
一般要使用该控件的话,直接为该控件添加变量就可以了。(右键单击该控件,选择添加变量)然后头文件中会自动生成该对象的声明。如果直接在头文件中声明是不行的(还要在一个函数中添加 ID 映射)

MFC中对话框在DOMODAL()之后就析构了,怎么在外部类中得到对话框的属性值...
DoModal() 函数执行完后, 可以利用其返回值知道用户是使用 "OK", 还是 "Cancel" 关闭的窗口, 然后再根据你的需要选择是不是保存参数, 通常情况下过程如下:1. 定义一个对话框类 class CDlgClass : public CDialog { \/\/ 正常的 CDialog 成员 int m_A; \/\/ 要保存的值, 这个值在对话框里进...

MFC中在一个对话框中通过一个按钮打开另一个对话框时出现应用程序错误的...
你给出的信息太少没有办法确定问题所在。只能提示你下查错的办法,你可以在Visual Studio里面调试这个程序,然后在出错的时候VS会break在出错的地方,如果这个地方就是你自己的代码,那么很好,你可以自己看看出现什么情况了,比如变量没有初始化啊之类的。不过很多时候会发现这时候VS停止的地方是在系统的函...

在MFC中我们选择类向导的消息,是对整个对话框还只是其中的按钮,我一选...
建立工程的时候是整个对话框或窗口,添加组件的时候是给组件选基类。

MFC 对话框工程里面有个类找不到了 是一个对话框的类,向导自动生成的...
首先看资源里有没有,如果没有对话框,那么就是工程弄错了,找不回来。其次看文件在不在,工程的file列表里有没有,确认文件存在并加入了列表中(没有则手动添加)最后,如果上面都没有问题,关闭工程,删除工程下DEBUG文件夹、删除工程名.ncb和.clw文件,打开工程,rebuild all (提示:注意先备份工程...

关于在mfc的在子对话框使用list control控件的问题
你的这种做法存在这样的问题:在写MFC程序的时候,经常会遇到的一种错误是对话框还没有被实力话,即对话框对象不存在,就对该对话框里面的控件进行初始化操作。因为对话框没有被实例化,既而对话框中的控件也就不存在,对这些控件进行初始化操作自然会导致错误。对于这个问题,我通常采用这样的做法:1、...

用MFC建了一个对话框工程,但是在工程只能看到CMyApp theApp线程对象,就...
你可以看一下CMyApp的InitInstance函数,里面有构造这个CMyDlg对象。望采纳

MFC中一个对话框上编辑框怎么和另一个对话框关联
MFC每个对话框都是从CDialog类派生来的,当然,你自己派生定义的对话框中肯定有自己的成员变量和成员函数。你一个对话框肯定是为了是想实现某个功能而创建。当你用一个对话框调用另一个对话框的功能函数时,要注意类的封装性问题。简单来说,就是当你在对话框A内要使用对话框B的一部分功能(假如说想...

MFC新建对话框的初始化已经添加了虚函数OnInitDialog()也添加了代码...
OnInitDialog之后,会默认调用Invalidate函数,触发重绘。如果你没有在OnPaint里面绘制,那么必然不显示。任何希望一直显示的图片,必须在OnPaint里面完成绘制才可以。

关于mfc的,有些函数为什么我这里没有啊?
你先在菜单中调出属性窗口(视图-->其他窗口-->属性窗口),然后点击到该类的头文件,将光标定位到类的头文件里面,你就可以在属性窗口中看见相应的东东了,包括虚函数,消息响应函数等等,自己随便添加吧。

相似回答