多层继承画面重叠,动作时遇到闪屏问题,求助高手指点迷津!!!!

wcazp 2007-08-21 11:05:43

复杂的界面有多层窗口组成,当windows在窗口改变大小的时候是先重画父窗口,然后重画子窗口,子父
窗口重画的过程一般无法在一个刷新周期内完成,所以会呈现闪烁。
我们知道父窗口上被子窗口挡住的部分其实没必要重画的
解决方法:给窗口加个风格 WS_CLIPCHILDREN ,这样父窗口上被子窗口挡住的部分就不会重画了。
如果同级窗口之间有重叠,那么需要再加上 WS_CLIPSIBLINGS 风格


我们的程序就是上诉的问题,但是小弟是新手,没做过这样的问题,请高手指教,WS_CLIPCHILDREN 和 WS_CLIPSIBLINGS 这两个风格到地怎么加进去啊,最好给发点实际的代码,小弟在这里先谢了!!!
...全文
290 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
于之 2007-12-29
  • 打赏
  • 举报
回复
我也遇上此问题啊!!! VB.NET2005 闪屏问题,,如何搞定啊!!! 求高手帮忙
wcazp 2007-08-23
  • 打赏
  • 举报
回复
真郁闷,好几天了也没个明白人。
wcazp 2007-08-22
  • 打赏
  • 举报
回复
问题没解决啊,帖子不能沉啊。
北京的雾霾天 2007-08-21
  • 打赏
  • 举报
回复
你要使用如下两个API来改变窗口的风格:
[DllImport("user32.dll", EntryPoint = "GetWindowLong", CharSet = CharSet.Auto)]
public static extern int GetWindowLong(HandleRef hWnd, int nIndex);
[DllImport("user32.dll", EntryPoint = "SetWindowLong", CharSet = CharSet.Auto)]
public static extern IntPtr SetWindowLong(HandleRef hWnd, int nIndex, int dwNewLong);


参考如下的代码:
protected override void CreateHandle()
{
base.CreateHandle();
int windowLong = (GetWindowLong(new HandleRef(this, this.Handle), -16));
SetWindowLong(new HandleRef(this, this.Handle), -16, windowLong | WS_CLIPSIBLINGS);
}
wcazp 2007-08-21
  • 打赏
  • 举报
回复
没人知道么?

zhchg6666 2007-08-21
  • 打赏
  • 举报
回复
up
wcazp 2007-08-21
  • 打赏
  • 举报
回复
谁有没有VB.Net的代码啊?

16,721

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧