炫彩界面库论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3975|回复: 1

[帮助]关于IE控件闪烁解决方案

[复制链接]
  • TA的每日心情
    开心
    2022-1-9 18:18
  • 发表于 2012-7-3 17:00:03 | 显示全部楼层 |阅读模式
    标准系统控件闪烁主要原因,是因为每次重绘时需要绘制两次,第一次擦出背景绘制,第二次绘制内容,两次绘制颜色不一样,导致用户看见控件闪烁!

    解决办法就是拦截系统控件背景擦出消息WM_ERASEBKGND,不让它擦出背景,这样就不会闪烁!

    IE控件比较特殊,所以处理起来也比较麻烦,下面是对IE控件的特殊处理.
    1. LONG prevProc1=NULL;
    2. HHOOK hHook=NULL;
    3. LRESULT CALLBACK MyWndProc1(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    4. {
    5.         if(WM_ERASEBKGND==message) //拦截背景擦出消息
    6.                 return 0;

    7.         return CallWindowProc((WNDPROC)prevProc1,hWnd,  message,  wParam,  lParam);
    8. }

    9. //对IE控件子类化
    10. LRESULT CALLBACK CallWndProc(int nCode,   WPARAM wParam,   LPARAM lParam)
    11. {
    12.         if(HC_ACTION==nCode)
    13.         {
    14.                 PCWPSTRUCT pInfo=(PCWPSTRUCT)lParam;
    15.                 if(WM_CREATE==pInfo->message)
    16.                 {
    17.                         char className[101]={0};
    18.                         GetClassNameA(pInfo->hwnd,className,100);
    19.                         if(0==strcmp(className,"Internet Explorer_Server"))
    20.                         {
    21.                                 prevProc1=GetWindowLong(pInfo->hwnd,GWL_WNDPROC);
    22.                                 SetWindowLong(pInfo->hwnd,GWL_WNDPROC,(LONG)MyWndProc1);
    23.                         }
    24.                 }
    25.         }
    26.         return CallNextHookEx(hHook,nCode,wParam,lParam);
    27. }
    28. int APIENTRY _tWinMain(HINSTANCE hInstance,  HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
    29. {
    30.         XInitXCGUI(); //初始化界面库
    31.         //.... 您的代码
    32.         hHook=SetWindowsHookEx(WH_CALLWNDPROC,CallWndProc,NULL,GetCurrentThreadId()); //安装钩子

    33.         XRunXCGUI(); //运行

    34.         UnhookWindowsHookEx(hHook); //卸载钩子
    35. }
    复制代码




    该用户从未签到

    发表于 2012-7-3 20:00:04 | 显示全部楼层
    这个非常好!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    QQ|Archiver|手机版|小黑屋|炫彩界面库 ( 鄂ICP备2023014763号-1 )

    GMT+8, 2024-9-20 05:42 , Processed in 0.099854 second(s), 22 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表