关于IE控件闪烁解决方案
标准系统控件闪烁主要原因,是因为每次重绘时需要绘制两次,第一次擦出背景绘制,第二次绘制内容,两次绘制颜色不一样,导致用户看见控件闪烁!
解决办法就是拦截系统控件背景擦出消息 WM_ERASEBKGND ,不让它擦出背景,这样就不会闪烁!
IE控件比较特殊,所以处理起来也比较麻烦,下面是对IE控件的特殊处理.
LONG prevProc1=NULL;
HHOOK hHook=NULL;
LRESULT CALLBACK MyWndProc1(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{if(WM_ERASEBKGND==message) //拦截背景擦出消息return 0;return CallWindowProc((WNDPROC)prevProc1,hWnd, message, wParam, lParam);
}//对IE控件子类化
LRESULT CALLBACK CallWndProc(int nCode, WPARAM wParam, LPARAM lParam)
{if(HC_ACTION==nCode){PCWPSTRUCT pInfo=(PCWPSTRUCT)lParam;if(WM_CREATE==pInfo->message){char className[101]={0};GetClassNameA(pInfo->hwnd,className,100);if(0==strcmp(className,"Internet Explorer_Server")){prevProc1=GetWindowLong(pInfo->hwnd,GWL_WNDPROC);SetWindowLong(pInfo->hwnd,GWL_WNDPROC,(LONG)MyWndProc1);}}}return CallNextHookEx(hHook,nCode,wParam,lParam);
}
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{XInitXCGUI(); //初始化界面库//.... 您的代码hHook=SetWindowsHookEx(WH_CALLWNDPROC,CallWndProc,NULL,GetCurrentThreadId()); //安装钩子XRunXCGUI(); //运行UnhookWindowsHookEx(hHook); //卸载钩子
}
关于IE控件闪烁解决方案相关推荐
- C#中使用Invalidate()与MouseMove方法刷新控件时,控件闪烁问题解决方法
1. 问题出现场景 当我们在使用C# 中的绘图功能时,如果需要动态改变控件UI的状态,比如绘制了一个圆,点击时填充圆颜色为绿色.那么我们必须使用Invalidate()函数进行刷新.运行程序之后会发现 ...
- c 用户控件 多语言,多语言文本控件重叠解决方案
多语言文本控件重叠解决方案 文本控件重叠问题分析 文本控件重叠解决方案制定 在cocostudio编辑中做好前期基础准备工作 使用UIHelper.bindUIWidget自动化绑定UI布局 视图自动 ...
- C#多线程操作界面控件的解决方案
C#中利用委托实现多线程跨线程操作 - 张小鱼 2010-10-22 08:38 在使用VS2005的时候,如果你从非创建这个控件的线程中访问这个控件或者操作这个控件的话就会抛出这个异常.这是微软为了 ...
- 防止HALCON刷新图像窗口控件闪烁
防止HALCON刷新图像窗口控件闪烁 在其它编程环境下防止图形窗口刷新闪烁的办法是设置双缓冲区域,在HALCON下同样可以采用双缓冲方法. 设置双缓冲防止刷新图像窗口闪烁方法: 1)采用Open_Wi ...
- 64位 regsrv win10_Win10手动注册注册表提示regsvr32加载控件失败解决方案
regsvr32加载控件失败怎么办?当我们在使用计算机时,有时候会发现有些注册表没有注册,需要手动进行注册,但是在cmd命令中,输入命令regsvr32 xx.dll,运行提示模块数据加载失败,这怎么 ...
- html如何滚动闪烁,ActiveX flicker ,ActiveX控件闪烁,在html中,只要有滚动条,一滚动就闪烁...
Q: 一个画图的ActiveX,但是只要一有滚动条,ActiveX控件里面就闪烁,怎么去掉这个闪烁(Web 开发 JavaScript )ActiveX flicker ,ActiveX控件闪烁,在h ...
- C#中跨线程访问控件问题解决方案
net 原则上禁止跨线程访问控件,因为这样可能造成错误的发生,推荐的解决方法是采用代理,用代理方法来间接操作不是同一线程创建的控件. 第二种方法是禁止编译器对跨线程访问作检查,可以实现访问,但是出不出 ...
- 解决TableLayoutPanel控件闪烁
当TableLayoutPanel控件中的需要更新的Label过多的时候,刷新Label的时候会出现闪烁问题,主要解决办法就是增加双缓冲,代码如下 private void MainForm_Load ...
- VS2005中,C#中跨线程访问控件问题解决方案
最近我在做一个项目,遇到了跨线程要去访问页面控件.但是总是提示出错,不能在其它线程中修改创建控件的线程的控件的值,后来采用了匿名代理,结果很轻松地解决了.解决过程如下: 首先在窗体上,创建一个list ...
最新文章
- 面向过程方法学开发软件的特点
- 剑灵服务器延迟时间在哪看,怎么通过任务管理器看剑灵网络延迟
- C# windows身份验证的连接字符串!
- Share Disk、Share Memory和Share Nothing的区别
- 通达OA清空admin管理员账号的密码
- Hadoop 版本与 HBase 版本 之间的对应关系整理
- 江南大学c语言课程绩点评分,江南大学无锡医学院课程考核档案管理办法
- 农产品区块链溯源:疫情催使下的农产品认知升级
- 如何给计算机c盘加内存,win7系统如何给c盘加大10G空间?win7电脑给c盘加大10G空间的方法...
- 【uniapp】如何设置单个页面背景颜色
- VM16Pro安装win7
- 我上了一节小学AI课,发现四年级的小朋友不仅懂AI,还学会了写代码运行
- Spark RDD API详解
- 心流:最优体验心理学-米哈里·契克森米哈赖
- selenium下对指定元素进行截图
- Oracle数据库常见问题处理
- SQL Server Intergration Services(SSIS)
- java毕业设计“西单”甜品线上预定系统mybatis+源码+调试部署+系统+数据库+lw
- 疫情下的情人节 餐饮业再亏700亿!
- 【CQgame】[幸运方块 v1.1.3] [Lucky_Block v1.1.3]
热门文章
- k8s v1.9.6 超详细搭建步骤
- mysql 5.7 解决 set global slow_query_log=on;报错
- 年末盘点 2016 年最严重的 7 起 DDoS 攻击事件
- 软件设计是怎样炼成的(6)——打造系统的底蕴(数据库设计)(上篇)
- dedecms 会员网站UID注册名转MID
- Servlet WEB过滤器
- ASP.NET Core 入门教程 2、使用ASP.NET Core MVC框架构建Web应用
- null 与 undefined 的区别
- ORA-00904 的解决
- hbase2.0 vs hbase1.x 延时比较