none
IE9页面窗口子类化后的重绘问题 RRS feed

  • 问题

  • 大致过程是:
    获取显示网页的窗口,类名为:Internet Explorer_Server
    然后窗口子类化截取WM_PAINT消息,选调用CallWindowProc让IE先画,然后我再在IE画好的基础上画一些额外的东西

    大致代码:C/C++ code
    LRESULT CALLBACK NewWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { LRESULT lRes = CallWindowProc(g_fnOld, hwnd, uMsg, wParam, lParam); if ( uMsg == WM_PAINT ) { hdc = GetDC(hWnd); // 在此画我自己额外的东西 ReleaseDC(hWnd, hdc); return 0; } }


    这样写在IE6/7/8都没有问题,但是在IE9中感觉我一画上去就被擦除了。不知道为什么?
    按道理,只要涉及到绘制界面的操作都会走这个消息,然后我始终都可以画的上呀。
    不明白。
    2011年4月29日 16:08

答案

  • IE9换了Direct3D,

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    • 已标记为答案 spyinsky 2011年5月4日 15:46
    2011年4月29日 23:06
    版主

全部回复

  • IE9换了Direct3D,

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    • 已标记为答案 spyinsky 2011年5月4日 15:46
    2011年4月29日 23:06
    版主
  • 那请问在IE9上我如何实现上述的功能,还请指点,谢谢
    2011年4月30日 8:32
  • 要标注的话,自己加HTML或者用IHighlightRenderingServices 

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2011年5月1日 3:49
    版主
  • 你好,我现在是想在HTML页上任意画些图且不影响原来的DOM结构,

    我查了一下IHighlightRenderingServices,这个接口好像只是针对文本操作的

    加HTML话会对原来的DOM结构产生影响。我还是想通过类似于截取WM_PAINT的方式直接在窗口上画图

    请问可以办到吗?

    2011年5月2日 11:56
  • 不行,IE9没有用GDI,所以不会有WM_PAINT。

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2011年5月2日 17:09
    版主