CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

请进。。

楼主showmetheway(雪儿甜心)2003-02-01 23:41:28 在 VC/MFC / 基础类 提问

LRESULT   CALLBACK   WndProc   (HWND   hwnd,   UINT   message,   WPARAM   wParam,   LPARAM   lParam)  
  {  
      …………  
      OldScroll[i]   =   (WNDPROC)   SetWindowLong   (hwndScroll[i],   GWL_WNDPROC,   (LONG)   ScrollProc)   ;  
      …………  
  }  
   
  LRESULT   CALLBACK   ScrollProc   (HWND   hwnd,   UINT   message,    
                                                            WPARAM   wParam,   LPARAM   lParam)  
  {    
    ……  
    return   CallWindowProc   (OldScroll[id],   hwnd,   message,   wParam,   lParam)   ;  
  }  
   
  请问这里的OldScroll[i]   =   (WNDPROC)   SetWindowLong   (hwndScroll[i],   GWL_WNDPROC,   (LONG)   ScrollProc)   ;用意何在?  
  书上是这么说的(不过有点不明白这样做有何意义)  
  现在,函数ScrollProc得到了Windows发送给滚动条的滚动条窗口过程WndProc的全部消息,它使用CallWindowProc调用旧的滚动条窗口过程。。  
  请问这样忙活了半天有什么用? 问题点数:0、回复次数:13Top

1 楼kingcom_xu(冷羽)回复于 2003-02-01 23:47:50 得分 0

这就是所谓的子类化了。。。  
   
  拿滚动条来说,用户在滚动条上单击,这时平常情况下你是收不到单击消息的。。  
  但有的情况下你想得到这个消息并做一些处理,那么你可以改变这个滚动条的窗口函数也就是用上面SetWindowLong的方法。。。  
  这样的话以后所有在滚动条上产生的消息都发向你指定的函数里了(如上例中的ScrollProc)...然后你在ScrollProc里做一些消息的处理,然后把不想处理的消息交给原来的滚动条窗口函数处理(也就是CallWindowProc)  
   
   
  打了这么一大堆也不知道我有没有讲清楚:(  
  Top

2 楼jindayu(Idislikework)回复于 2003-02-02 00:12:09 得分 0

意思就是说先SETWINDOWLONG让你的程序得到滚动条的信息,然后CALLWINDOWPROC把处理过剩下的信息发给旧的滚动条窗口函数处理,这样是为了照顾别的程序(好东西大家分享)Top

3 楼jindayu(Idislikework)回复于 2003-02-02 00:21:54 得分 0

我要自杀了!!!!!!  
  谁告诉我在这里点那里可以发帖!!!!!!!!  
  我为什么找不到发帖的按钮!!!!!!!!!??????Top

4 楼kingcom_xu(冷羽)回复于 2003-02-02 00:26:17 得分 0

就是提问呀。。。笨。。。Top

5 楼jindayu(Idislikework)回复于 2003-02-02 00:50:50 得分 0

"提问""提问""提问""提问""提问""提问""提问""提问""提问""提问""提问""提问""提问""提问""提问""提问""提问""提问""提问""提问""提问""提问""提问""提问""提问""提问""提问""提问""提问""提问""提问""提问""提问""提问"  
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  
  我真地自杀!!!!!!!!!  
  ——————————————————————————————————  
  再请问一下,“提问”在哪里?Top

6 楼kingcom_xu(冷羽)回复于 2003-02-02 00:56:53 得分 0

在各小类的上方呀。。。  
   
  本版我的问题   |     本版我参与问题   |     本版我得分问题   |        
     
    刷新   |   搜索   |   提问|   未解决   |   已解决   |   精华区   |   FAQ   |   专题   |      
         
    订全年杂志,送名家新书  
  玩出电脑“真精彩”  
  大本营8折优惠更送程序员杂志  
     
      VC/MFC   基础类   (未解决问题)    
      版主:panda_w、Kevin_qing、masterz、mahongxi    
      Visual   C++   基础类    
      最新:300篇       1     2     3     4     5     6     7     8     9     10        
     
         
          问   题    
     
   
   
   
   
  注意:是小类才能提问的哦。。。Top

7 楼jindayu(Idislikework)回复于 2003-02-02 01:06:41 得分 0

终于知道了  
  谢谢  
  真是好人  
  会有好报的  
  我会记得你的  
  我会保佑你的  
  谢谢Top

8 楼kingcom_xu(冷羽)回复于 2003-02-02 01:08:42 得分 0

呵呵。。。那倒不用。。。给我点分就行:)Top

9 楼AthlonxpX86(一坨屎)回复于 2003-02-02 01:40:29 得分 0

kingcom_xu(我的刀是杀不了人的)的意思我听得不太懂啊  
  OldScroll[i]   =   (WNDPROC)   SetWindowLong   (hwndScroll[i],   GWL_WNDPROC,   (LONG)   意思是设置新的窗口回调函数并返回原来的窗口回调函数保存到OldScroll[i],  
  其实下面代码的意思应该是对原有回调函数进行一些补充(可能是认为原有回调函数不够强大)  
  LRESULT   CALLBACK   ScrollProc   (HWND   hwnd,   UINT   message,    
                                                            WPARAM   wParam,   LPARAM   lParam)  
  {    
    ……//对原有回调函数的补充  
    return   CallWindowProc   (OldScroll[id],   hwnd,   message,   wParam,   lParam)   ;//最后在调用原有回调函数处理一些必需的消息  
  }  
  (老大,不要每回都发20分的贴啊)Top

10 楼AthlonxpX86(一坨屎)回复于 2003-02-02 01:43:49 得分 0

看kingcom_xu(我的刀是杀不了人的)   两个三角,我都眼红啊我的回答500个20分的问题啊Top

11 楼kingcom_xu(冷羽)回复于 2003-02-02 02:01:23 得分 0

呵呵Top

12 楼showmetheway(雪儿甜心)回复于 2003-02-02 10:01:36 得分 0

(老大,不要每回都发20分的贴啊)  
  ///////////////////////////////  
  明白了,下次改发10的了:)Top

13 楼AthlonxpX86(一坨屎)回复于 2003-02-02 14:11:00 得分 0

to   showmetheway(雪儿甜心)  
  我知道错了,以后一定少说废话多办事Top

相关问题

  • 请进!请进?
  • 请进,请进....
  • 请进
  • 请进。。。。。。。。。
  • 请进
  • 请进
  • 请进
  • 请进
  • 请进
  • 请进

关键词

  • 函数
  • 消息
  • 解决
  • 提问
  • scrollproc
  • oldscroll
  • wndproc
  • callwindowproc
  • hwndscroll
  • setwindowlong

得分解答快速导航

  • 帖主:showmetheway

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo