`
xkxjy
  • 浏览: 43528 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

Windows Message Handling--Subclassing 子类化

    博客分类:
  • C
阅读更多

Subclassing is a technique that allows an application to intercept and process messages sent or posted to a particular window before the window has a chance to process them. This is typically done by replacing the Window Procedure for a window with application-defined window procedure.

子类化是一种允许应用程序在窗口处理发送或投递到它的消息之前进行拦截和处理的技术。这通常通过用自定义的窗口过程替换原来的窗口过程来实现。

这是Windows Message Handling - Part 4上的一段话,看过之后感觉这个功能挺不错。遂记之如下:

 

文中介绍了子类化的两种情况

SDK方式:

1、创建新的窗口处理函数NewWNDPROC 在新的窗口处理函数中做出特别的处理,之后把其余的交给旧窗口函数处理。使用CallWindowProc函数。

2、用新的窗口函数代替旧的窗口函数,并保存旧的,如使用SetWindowLong函数。

 

MFC方式: mfc方式需要创建目标父类的子类,并在其中改写感兴趣的消息函数。

一种方式是使用自定义子类直接关联父类控件

另外一种方式是生成子类对象实例,并调用对应的CWnd::SubclassWindow或CWnd::SubclassDlgItem函数。

 

除此之外,作者还提到了消息反射的问题,可惜作者没有详细解释。

分享到:
评论

相关推荐

    Customizing-Android-ListView-Rows-by-Subclassing:使用 RelativeLayout 的子类来替换持有者模式

    本篇将深入探讨如何通过子类化RelativeLayout来替代传统的ViewHolder模式,以实现更灵活、高效的自定义列表视图。 首先,ViewHolder模式是Android开发中一种优化ListView滚动性能的技术。它通过缓存视图对象,减少...

    用VB进行子类化

    子类化(subclassing)是Windows编程中的一个重要概念和技术,尤其在使用Visual Basic (VB)进行开发时,它允许开发者对现有的窗口类进行扩展或修改其行为。在Windows环境下,所有的图形界面都是基于消息传递的原理来...

    易语言窗口过程子类化

    窗口过程子类化(Subclassing)则是改变一个窗口的默认窗口过程,使其指向一个新的自定义窗口过程。这样,我们可以拦截和处理特定的消息,或者在原始处理之后添加额外的操作。在易语言中,这一过程通常通过调用系统...

    子类化 超类化 技术分析

    在编程领域,子类化(Subclassing)和超类化(Superclassing)是面向对象编程中的两个重要概念,它们对于代码复用和模块化设计具有关键作用。本文将详细探讨这两种技术,并以MFC(Microsoft Foundation Classes)库...

    易语言窗口子类化例程源码

    在IT领域,窗口子类化(Window Subclassing)是一种技术,主要用于自定义窗口的行为或外观,例如处理特定的消息或改变窗口的绘制方式。在Windows操作系统中,窗口子类化通常涉及将一个窗口的窗口过程(Window ...

    Edit控件的子类化

    在Windows编程中,子类化(Subclassing)是一种常见的技术,用于扩展或修改标准控件的功能。在本例中,我们关注的是“Edit控件的子类化”,即创建一个自定义的编辑框,使其只能接收数字输入和允许用户按下删除键。这...

    稳定精简子类化的软件源码

    子类化(Subclassing)是面向对象编程中的一个重要概念,它允许创建一个新的类,即子类,该子类继承自另一个类,即父类。在VB中,通过继承关键字` Inherits `来实现。子类可以添加新的属性、方法,甚至重写父类的...

    易语言窗口过程子类化源码

    2. **子类化(Subclassing)**:在Windows编程中,子类化窗口意味着将一个窗口的窗口过程替换为自定义的窗口过程。这样,当该窗口收到消息时,会先由自定义窗口过程进行处理,然后可能再传递给原来的窗口过程。子类...

    子类化例子

    4. **subclassing window handle**(子类化窗口句柄):你需要知道要子类化的窗口的句柄(hwnd),这通常可以通过创建窗口或获取已存在的窗口来得到。 5. **钩子函数**:在某些情况下,你可能需要使用钩子函数...

    Win32的窗口子类化演示代码

    在Windows编程中,Win32 API提供了一种机制来改变窗口的行为,这称为窗口子类化(Window Subclassing)。窗口子类化允许开发者扩展或修改标准控件的功能,而无需从头创建自定义控件。这个过程涉及到注册一个新消息...

    利用子类化技术拓展EDIT文本编辑框控件.zip

    在Windows编程中,子类化(Subclassing)是一种常用的技术,用于扩展或修改系统提供的标准控件的行为。本主题将深入探讨如何利用子类化技术来拓展EDIT文本编辑框控件,以此来实现自定义的功能和效果。 一、什么是...

    mfc_子类化+双缓冲

    **子类化(Subclassing)** 子类化是MFC中用于增强控件功能的一种技术。在Windows系统中,每个窗口都有一个与之关联的窗口类,子类化就是将一个已存在的窗口类(如系统默认的按钮、编辑框等)替换为自定义的类。...

    combobox本身的编辑框和列表框的子类化

    首先,子类化(Subclassing)是Windows API中的一种技术,用于扩展或修改已存在的窗口类的行为。在这个案例中,我们关注的是ComboBox控件的两个主要组成部分:编辑框(Edit Control)和列表框(List Box)。通过子类...

    VB单类模块实现子类化消息拦截源码.rar

    子类化(Subclassing)是面向对象编程中的一个概念,但在Windows API中,它通常是指将一个窗口类(即句柄)注册为另一个窗口类的子类,这样就可以拦截并处理原本属于父类窗口的消息。在VB中,这主要通过调用API函数...

    演示如何通过子类化创建自己的窗口类

    在Windows编程中,子类化(Subclassing)是一种常用的技术,用于自定义窗口的行为或扩展标准控件的功能。在Microsoft Visual C++(VC)环境中,我们可以通过子类化来创建自己的窗口类,以实现特定的用户界面需求。本...

    通过子类化方法定制选择路径对话框

    本话题将深入探讨如何通过子类化(Subclassing)技术来实现对“选择路径对话框”的自定义,以控制其内部的树型控件,提供更个性化的用户体验。 首先,子类化是一种编程技巧,它允许程序员接管已存在的窗口类,从而...

    VB 子类化重绘ListBox

    子类化(Subclassing)是一种技术,允许开发者扩展或修改已有的控件功能,使其能够支持自定义的重绘操作。本文将详细介绍如何在VB中子类化ListBox控件,并实现自定义的重绘功能,以达到美化界面的目的。 首先,理解...

    商业编程-源码-本代码演示了如何利用窗口子类化技术隐藏系统图标.zip

    在Windows操作系统中,窗口子类化(Window Subclassing)是一种高级编程技术,常用于定制窗口行为或增强其功能。本代码示例的核心是隐藏窗口内的系统图标,这是通过修改窗口消息处理流程来实现的。下面我们将深入...

    易语言子类化拦截消息

    在IT领域,尤其是在Windows应用程序开发中,"子类化"是一种常见的技术,它允许程序员拦截并处理特定窗口的消息。易语言作为一款中国本土的编程语言,提供了方便的接口来实现这一功能。本篇将深入探讨易语言子类化...

    子类化按钮的软件源码

    在VB(Visual Basic)编程中,子类化是一种常见的技术,用于扩展或修改标准控件的功能,例如这里的“按钮”控件。子类化按钮的软件源码是VB程序员为了实现特定功能,如自定义事件处理、增强外观或交互行为等而采用的...

Global site tag (gtag.js) - Google Analytics