现用NPAPI在做Chrome浏览器的一个插件(Win32上用C++开发),插件带有Windows窗口。
问题:当在Chrome中打开测试网页HTML文件,创建插件和窗口,可显示窗口。此时点击浏览器最大化按钮,将其缩小(但没最小化),用鼠标拖动浏览器的标题栏,使得浏览器在桌面上平移,但插件窗口却原地不动,因为获取不到WM_MOUSEMOVE 和 MK_LBUTTON消息(通过Spy++来抓取,才得知这两个消息的),无法用MoveWindow函数来移动窗口。
另外,我用鼠标低级钩子做过试验,拖动操作中可以获取WM_MOUSEMOVE消息,但用钩子的方法并不好,也不想用这种方法来解决问题,不知哪位朋友可以给支个招?

解决方案 »

  1.   

    如果不想用HOOK的话,你可以在你的插件里设置一个间隔时间很短的定时器,去判断GOOGLE浏览器的位置,然后根据位置调整你的插件位置!
      

  2.   


    嗯,这个方法可以解决。但有个问题,我的插件里窗口有四分屏,有透明窗口,有不透明窗口,窗口比较多,并且这些窗口全都是WS_POPUP风格的。定时器函数中执行的频率较高,对每个窗口都要Move,还有实际情况也就是当浏览器被鼠标拖动时需要Move。
      

  3.   

     你不需要频繁移动呀,你要把浏览器的窗口位置进行记录,只有定时器里判断浏览器的位置发生改变的时候你才去移动你的插件窗口如果不动是不移动的,根本没有什么性能的问题,我是开发浏览器的,有时间可以去我的官网看看 http://www.yyexplore.com