当前位置:  开发笔记 > 编程语言 > 正文

WNDCLASSEX的概念,良好的编程习惯和系统类的WndProc

如何解决《WNDCLASSEX的概念,良好的编程习惯和系统类的WndProc》经验,为你挑选了1个好方法。

据我所知,Windows API使用"类",依赖于WNDCLASS/WNDCLASSEX结构.

我已成功通过Windows API Hello World应用程序,并了解此类由我们自己的窗口使用,但也由Windows核心控件使用,如"编辑","按钮"等.我理解它与某种方式有关WndProc(它允许我为它定义一个函数)

虽然我可以找到关于这个类的文档,但我找不到任何解释这个概念的东西.

到目前为止,我发现的唯一一件事是:

Window类与C++类没有任何关系.

实在不利于(它告诉我它是什么不是,但不Tellme公司它是什么).事实上,这只会让我更加困惑,因为我很想将WNDCLASSEX与C++类联系起来,并认为"WNDCLASSEX"代表一种控件类型 .那么,我的第一个问题是它什么?

第二,我明白可以在类中定义WndProc.但是,窗口也可以从子控件(或窗口,或Windows API中调用它们)中获取消息.怎么会这样?

最后,何时定义新类是一种很好的编程习惯?每个应用程序(对于主框架),每帧,我定义一个控件(如果我创建自己的进度条类,例如)?

我知道Java/Swing,C#/ Windows.Form,C/GTK +和C++/wxWidgets,所以我可能会理解与这些工具包的比较.



1> Andrew Grant..:

窗口类描述将用于该类的所有实例的属性.除了颜色,图标等,其中一个属性是窗口过程.这是回调函数,负责处理来自系统的所有消息并在必要时处理它们.

虽然不相关,但这个概念类似于C++类 - 一段代码定义了类的数据和功能,并且可能有许多该类的实例.

作为一个非常粗略的例子,"BUTTON"类WndProc将WM_LBUTTONDOWN/WM_LBUTTONUP序列翻译为"点击".在此序列期间,WndProc还将按钮处于"按下"状态,作为对WM_PAINT消息的响应.

在窗口需要将动作传达给父母(例如,点击)的情况下,它将消息作为"通知"或"命令"发送.这些消息由子控件手动创建,并包含标识符和任何相关数据.

所有这一切的好处只是通过创建按钮类的窗口(使用CreateWindow)我自动获得所有这些行为.

除了由windows提供的窗口,我还可以创建自己的窗口,可以在我的应用程序中重新启动.您必须为主窗口注册至少一个类(否则它将没有功能,因此不会非常有趣)但除此之外,它取决于您.

应用程序很可能只包含常规控件(按钮,列表视图,进度条),但有时您可能想要创建自定义类.这可能是封装特定行为,或者因为您希望通过程序使用该控件的许多实例.

例如,如果我的应用程序的UI应该需要在鼠标悬停时旋转的长颈鹿图像,我可以编写代码在WindowProcedure中执行此操作并将其注册为新类("SPINNYGIRAFFE").我的应用程序的其余部分只是创建了"SPINNYGIRAFFE"类的窗口,一切正常.

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有