【发布时间】:2008-12-08 21:23:18
【问题描述】:
我正在开发一个 C#.Net 应用程序,其中有一个令人讨厌的错误。主窗口有许多选项卡,每个选项卡上都有一个网格。当从一个选项卡切换到另一个选项卡时,或在网格中选择不同的行时,它会进行一些后台处理,并且在此期间菜单会在重绘时闪烁(文件、帮助等菜单项以及窗口图标和标题)。
我首先尝试在切换选项卡/行(WM_SETREDRAW 消息)时禁用窗口上的重绘。在一种情况下,它可以完美运行。另一方面,它解决了直接的错误(标题/菜单闪烁),但在禁用重绘和再次启用它之间,窗口对于鼠标点击是“透明的” - 有一个小窗口(
这是我添加的代码。
m = new Message();
m.HWnd = System.Windows.Forms.Application.OpenForms[0].Handle; //top level
m.WParam = (IntPtr)0; //disable redraw
m.LParam = (IntPtr)0; //unused
m.Msg = 11; //wm_setredraw
WndProc(ref m);
m = new Message();
m.HWnd = System.Windows.Forms.Application.OpenForms[0].Handle; //top level
m.WParam = (IntPtr)1; //enable
m.LParam = (IntPtr)0; //unused
m.Msg = 11; //wm_setredraw
WndProc(ref m);
System.Windows.Forms.Application.OpenForms[0].Refresh();
有谁知道 a) 是否有办法解决此处的透明应用程序问题,或者 b) 如果我一开始就做错了,这应该以其他方式解决吗?
【问题讨论】:
标签: c# .net user-interface winapi