none
在ActiveX项目中的重载WindowPro函数里面居然截取不到自定义的消息 RRS feed

  • 问题

  • 开发平台:Visual Studio 6.0/Visual Studio 2008
    项目类型:MFC ActiveX
    部分说明:已添加代码将ActiveX标记为安全脚本
    参考文章:
    COM组件开发实践(八)---多线程ActiveX控件和自动调整ActiveX控件大小(下)
    http://www.cnblogs.com/phinecos/archive/2008/12/29/1364791.html
    问题描述:

    在重载的WindowProc里面拦截不到自定义的消息
    在函数里面直接操作可以成功
    代码如下:

    #define WM_ONMSG WM_APP + 101

    LRESULT MyActiveXCtrl::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
    {
     switch(message)
     {
      case WM_ONMSG:
      { 
       AfxMessageBox("拦截到了消息");//此处没有执行
       return 0;
      }
     }
     
     return COleControl::WindowProc(message, wParam, lParam);
    }

    猜想:
    我在公司的电脑中使用同样的方法却能成功拦截,由于我调整了IE的安全设置,会不会对此造成影响?

    2009年3月14日 3:45

答案

  •  
    songsu 说:

    开发平台:Visual Studio 6.0/Visual Studio 2008
    项目类型:MFC ActiveX
    部分说明:已添加代码将ActiveX标记为安全脚本
    参考文章:
    COM组件开发实践(八)---多线程ActiveX控件和自动调整ActiveX控件大小(下)
    http://www.cnblogs.com/phinecos/archive/2008/12/29/1364791.html
    问题描述:

    在重载的WindowProc里面拦截不到自定义的消息
    在函数里面直接操作可以成功
    代码如下:

    #define WM_ONMSG WM_APP + 101

    LRESULT MyActiveXCtrl::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
    {
     switch(message)
     {
      case WM_ONMSG:
      { 
       AfxMessageBox("拦截到了消息");//此处没有执行
       return 0;
      }
     }
     
     return COleControl::WindowProc(message, wParam, lParam);
    }

    猜想:
    我在公司的电脑中使用同样的方法却能成功拦截,由于我调整了IE的安全设置,会不会对此造成影响?



    楼主,您好,

    您是不是把您的程序放置在别的机器上呢? 根据我的经验,MFC对系统平台的依赖性很强,如果您要是移植您的程序到不同的系统平台下,就必须把这些类库和头文件统统打包。
    2009年3月17日 7:49
    版主

全部回复

  • 楼主,你好

    不知道你是否测试了是否是IE的设置导致的,如果问题解决了请分享下你的经验,谢谢!

    Microsoft Online Community Support
    2009年3月17日 4:24
  •  
    songsu 说:

    开发平台:Visual Studio 6.0/Visual Studio 2008
    项目类型:MFC ActiveX
    部分说明:已添加代码将ActiveX标记为安全脚本
    参考文章:
    COM组件开发实践(八)---多线程ActiveX控件和自动调整ActiveX控件大小(下)
    http://www.cnblogs.com/phinecos/archive/2008/12/29/1364791.html
    问题描述:

    在重载的WindowProc里面拦截不到自定义的消息
    在函数里面直接操作可以成功
    代码如下:

    #define WM_ONMSG WM_APP + 101

    LRESULT MyActiveXCtrl::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
    {
     switch(message)
     {
      case WM_ONMSG:
      { 
       AfxMessageBox("拦截到了消息");//此处没有执行
       return 0;
      }
     }
     
     return COleControl::WindowProc(message, wParam, lParam);
    }

    猜想:
    我在公司的电脑中使用同样的方法却能成功拦截,由于我调整了IE的安全设置,会不会对此造成影响?



    楼主,您好,

    您是不是把您的程序放置在别的机器上呢? 根据我的经验,MFC对系统平台的依赖性很强,如果您要是移植您的程序到不同的系统平台下,就必须把这些类库和头文件统统打包。
    2009年3月17日 7:49
    版主