MFC怎么知道哪个窗口对应的哪个类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC怎么知道哪个窗口对应的哪个类相关的知识,希望对你有一定的参考价值。

不明白主要是,

1.窗口和控件一样,可以添加类和变量,但是我看到的教程都是在窗口添加类,给控件添加变量.
那什么时候要给窗口添加变量,什么时候给控件添加类.
2.给窗口添加了类,如何知道,哪个类对应的哪个窗口,哪个窗口对应的哪个类.还有就是为什么一个窗口可以添加多个类

1..你需要理解类和变量的含义,
类是集合,为窗口添加类,代表窗口中的变量都属于此集合。

为控件添加关联变量,则是可以通过变量控制控件。

那么你需要一个变量来控制窗口时可以为窗口添加变量,
当控件现在所属的类不能满足要求时,你可以自定义类。

2.给窗口添加了类,通常会将窗口的标题和类名相同,这点不是必须的,只是一种好的编程习惯。
如果找不到窗口的类,可以在窗口中的控件上双击,会进入到对应的源文件,类名在对应的头文件中。

找不到类的窗口,看类视图类的属性中对话框ID,去资源视图找相应ID

给分
参考技术A 建议你先看看《深入浅出 MFC》这本书。
MFC的窗口和控件,都是以类封装的,一个类的实例就是一个窗口,首先有类,其次类创建了实例就是生成了窗口(当然不一定显示,可以隐藏)
MFC框架,还有大量隐藏代码(这些代码是公开的),处理了实例化映射关系和子类化窗口关系,这个东西可不是几句话说的明白的,这就是MFC的精髓之一(另外一个重要的是消息映射)追问

有没有主要讲MFC的入门书,用VS2008-2012为工具的.
深入浅出不适合新手看.感觉就跟c++ primer一样

追答

这是一本进阶的书,但并不生涩,硬啃前半本没什么问题,尤其是对照着实际工程看,还是很舒服的。
如果C++基础不好,那么这本书看着困难,但。。。想明白MFC运行机制和原理,没有别的比这个更合适了。
将应用的书,就太多了,这个我没看过,是从老版本过渡的。据说,vc2008 从入门到精通 还可以。

参考技术B 给窗口添加的类,类名不是自己取的?应该会记得的。。 需要哪些功能的时候你就可以给窗口添加一些控件和控件变量。

QT或MFC哪个更好学[关闭]

【中文标题】QT或MFC哪个更好学[关闭]【英文标题】:QT or MFC which is better to learn [closed] 【发布时间】:2012-09-16 07:22:53 【问题描述】:

我想有 C++ 应用程序编程方面的工作经验。我在选择游戏编程或独立编程的困境中。请建议我哪个框架/API 有利于我学习。

Qt 移动/QT gui 编程,任何其他 API, 学习 MFC 而不是 QT 怎么样, 除了qt还有其他的gui框架吗

【问题讨论】:

为什么不用 WPF 而不是 MFC!? QT 因为 WPF 或 Win Forms 不支持 C++,只支持 C# 【参考方案1】:

关于问题的第一部分:我建议您在两个方向尝试一些轻量级编程。

现在关于使用什么框架。如果您真的只决定游戏编码,您可能需要使用专门的框架/引擎进行游戏开发。尽管如此,Qt 仍允许您进行一些游戏开发,因此您可以在下定决心之前尝试将其用于游戏和独立编程。

关于您建议的框架。 MFC不像以前那么流行,未来可能不会得到微软的太多支持。 Qt 和 wxWidgets 是流行的框架,可让您开发跨平台应用程序。我推荐 Qt,因为它使编码变得更加容易,如果您真的对为主要平台制作原生应用程序感兴趣,wxWidgets 会变得更加有用。

【讨论】:

非常感谢.. 一般来说,在游戏编程和独立 gui 编程之间更喜欢什么? 我会推荐使用 Qt 进行独立编程,此外,您仍然可以将其用于游戏开发。我不能真正推荐游戏开发框架,您最好将其作为一个新问题提出以获得更合适的答案。【参考方案2】:

种类繁多,具有不同的好处和限制。 MFC 几乎只是 Windows,而 QT 是跨平台的,并且(IMO)在当前就业市场中的需求更大(直到最近我一直在非常顽强地搜索!)另一个流行的选择可能是 WPF,它是 Windows 特定的。

简答:做 QT 直到“下一件大事 (tm)”出现。

【讨论】:

【参考方案3】:

我不能在这里给你意见。要获得经验,请在满足您要求的任何框架中开始编程。

Qt 已经足够好了,还有wxWidgets 作为选项。与 MFC 不同,这两者是跨平台的。

至于选择游戏编程还是 GUI 编程,你可以一个接一个地做。

希望这会有所帮助!

【讨论】:

非常感谢您的宝贵建议【参考方案4】:

MFC 是 windows,如果您主要针对 windows,WPF 是新的 Micorsoft 桌面 GUI 标准。话虽如此,大多数游戏都以 3D API-native (OpenGL/Direct3D) 方式完成所有操作,而特定于平台的主要部分是窗口和用户输入。

在使用现有的用户界面库与使用自己的用户界面库之间进行权衡。您会发现很难将 Qt 或 WPF 小部件作为一等公民深入集成到您的游戏中,并且可能需要跳过一些障碍来执行某些自定义行为。从头开始手动操作具有真正了解正在发生的事情并能够准确地做你想做的事情的好处;但这样做的代价是您没有利用现有的完整库。

我的个人建议是花一些时间学习 Qt 或 WPF(如果您关心多平台,Qt,很多项目都使用 Qt,但 WPF 正在加速发展,尤其是由于 Windows 8)只是为了获得一个想法从客户端看 UI API 的样子。还学习图形 API(OpenGL 或 Direct3D)的基础知识。那么你将处于一个更好的位置来做出你的决定。最终,我建议创建一个非游戏 UI 程序和一个单独的游戏程序。这会给你一个更好的主意。

在游戏环境中,您可以在工具和编辑器领域利用 Qt/WPF/etc。但通常实时游戏内 UI 使用紧密集成的 3D 加速 UI 库。一个这样的库是Scaleform(商业,基于闪存),另一个是CEGUI(LGPL/MIT)。

【讨论】:

非常感谢您的建议,为了获得经验,我将开始学习QT。 一般来说,在游戏编程和独立 gui 编程之间更喜欢什么?

以上是关于MFC怎么知道哪个窗口对应的哪个类的主要内容,如果未能解决你的问题,请参考以下文章

MFC 关闭窗口用哪个函数?

Java:知道一个类的路径,如何知道这个类是来自哪个Jar包呢

qt 如何获取最上面的窗口 比如 一共5个窗口,怎么知道哪个窗口在最上面

vs2015 MFC工程添加消息响应函数

MFC树形控件响应

abap 如何测试BAPI ? 就是有一个新的BAPI,怎么知道用哪个结构或表里面的哪个字段呢?多谢啊!