转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
VB的子类处理应用两例         ★★★★

VB的子类处理应用两例

作者:闵涛 文章来源:闵涛的学习笔记 点击数:714 更新时间:2009/4/23 14:59:12
 子类处理,熟悉API函数的VB爱好者们一定不会感到陌生,它又称为“子类化”或“子类派生”,是一种功能强大的技术。在应用它之前,我们需要先对之原理进行简单的了解:在WINDOWS中,每一个窗口都有一个默认的窗口函数,它的作用是对发送到窗口的消息进行处理。在VB中,这个默认的窗口函数不是直接公开的,它提供了对VB中的事件进行处理的代码,当接受到一条WINDOWS消息时,这个窗口函数就会响应并产生一个VB事件,换言之,这个窗口函数隐藏了消息处理的细节,用一个VB事件来响应一条WINDOWS消息。然而,VB没有提供对所有WINDOWS消息的支持,许多WINDOWS消息都不会生成一个VB事件,但这不能说是VB的缺点,恰是VB的优点,放弃对那些程序员并不常用的消息的支持,在功能强大和性能稳定之间做了很好的平衡。而且,幸运的是,尽管这个幕后主宰是默认的,但它不是唯一的,我们完全可以用自己定制的一个窗口函数替代它,并保留指向默认窗口函数的指针,当一个消息到达窗口时,自制的窗口函数会拦截它并进行识别处理,对不能识别或不需进行特别处理的消息,就通过指向默认窗口函数的指针传递给默认的窗口函数进行处理,这样便扩充了默认窗口函数的功能。这种用定制的窗口函数代替默认的窗口函数,拦截并处理到达窗口的消息的技术,我们就称之为“子类处理”,定制的函数我们称之为“回调函数”。子类处理的方法主要有三种:忽略消息并传递给默认的窗口函数;截获消息,执行特定操作后,传递给默认的窗口函数或传递给默认的窗口函数处理后,对返回值进行控制;截获消息,执行特定操作并禁止默认的窗口函数对之进行处理。我们将通过下面两个实例对之进行简要说明。

一、实现无标题栏窗口的拖动

  大家都知道,按住窗口的标题栏可以拖动窗口。可如果窗口没有标题栏,怎样拖动它呢?那就按在窗口的客户区上吧,只要让窗口觉得是按在了标题栏上就可以了。

  首先需要在一个模块文件Modulel内输入以下代码,(我们自制的回调函数必须在模块文件中声明,不可将其放到类模块中,也不能附加到窗体中):

  下面声明的是子类处理中最重要的三个函数。

  SetWindowLong函数使用GWL_WNDPROC索引将默认的窗口函数替换成我们自制的回调函数,回调函数的地址由AddressOf操作符得到。SetWindowsLong函数返回值为默认的窗口函数的地址。

  Declare Function SetWindowLong Lib“user32"Alias“SetWindowLingA"(ByValhwnd As Long,ByVal nIndex As Long,By Val dwNewLong As Long)As Long


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台