订阅所有文章
文章搜索

高级搜索这是社么?这是顶尖最新推出的文章增强型搜索功能!
全网 本站
您现在的位置: 顶尖设计 >> IT学院 >> 编程开发 >> VC >> 文章正文

让VB开发环境支持鼠标滚轮

作者:yangang0…  来源:CSDN  点击  更新:2006-12-19 7:03:38  编辑: 画王w  字体

        Visual Basic 6.0的集成开发环境中的代码编辑器不支持鼠标滚轮的操作,这给使用VB的人带来了很多不便,为了使它能支持鼠标滚轮操作,我制作了一个小程序帮它实现该功能。

       这个程序实现的原理是,使用全局钩子截获窗口消息,通过相应滚轮消息,向VB编辑窗口发送视图滚动消息实现VB编辑窗口对鼠标滚轮的响应。

       首先,建立一个MFC的Dll工程,向工程中添加下列函数:

       下面这个函数用于安装钩子,之所以将其声明为这种形式,主要是考虑到其可扩展性。

BOOL __declspec(dllexport)__stdcall InstallHook(int nIDHook,const HINSTANCE hMod,DWORD dwThreadId)

{

         AFX_MANAGE_STATE(AfxGetStaticModuleState());

        

         BOOL bResult;

         HINSTANCE hInstance=NULL;

         if(hMod==NULL)

         {

                  hInstance=AfxGetInstanceHandle();

         }else

         {

                  hInstance=hMod;

         }

         switch(nIDHook)

         {

         case WH_CALLWNDPROC:

                  if(g_hWinProc!=NULL)

                  {

                          bResult=TRUE;

                          break;

                  }

                  g_hWinProc=SetWindowsHookEx(WH_CALLWNDPROC,(HOOKPROC)ProcessWndProc,hInstance,dwThreadId);

                  if(g_hWinProc!=NULL)

                  {

                          bResult=TRUE;

                  }

                  break;

         case WH_GETMESSAGE:

                  if(g_hMsgProc!=NULL)

                  {

                          bResult=TRUE;

                          break;

                  }

                  g_hMsgProc=SetWindowsHookEx(WH_GETMESSAGE,(HOOKPROC)ProcessMsgProc,hInstance,dwThreadId);

                  if(g_hMsgProc!=NULL)

                  {

                          bResult=TRUE;

                  }

                  break;

         default:

                  bResult=FALSE;

                  break;

         }

         return bResult;

}

       下面这个函数用于卸载钩子,与前一个函数对应。

BOOL __declspec(dllexport)__stdcall  UninstallHook(int nIDHook)

{    

         BOOL bResult;

         switch(nIDHook)

         {

         case WH_CALLWNDPROC:

                  bResult=UnhookWindowsHookEx(g_hWinProc);

                  g_hWinProc=NULL;

                  break;

         case WH_GETMESSAGE:

                  bResult=UnhookWindowsHookEx(g_hMsgProc);

                  g_hMsgProc=NULL;

                  break;

         default:

                  bResult=TRUE;

         }

         return bResult;

[1] [2] [3] 下一页

  • 上一篇文章:

  • 下一篇文章:
  •      
    热门文章  
    推荐文章  
    相关文章    
     发表评论
      关于我们 | 联系我们 | 站点地图 | 广告投放 | 友情链接 | 在线留言 | 版权申明
    版权所有 © 2004-2007 顶尖设计(bobd.cn)
    未经授权禁止转载,摘编,复制本站内容或建立镜像. 沪ICP备05002835号