小编Seb*_*Seb的帖子

使用大量控件调整窗口大小时的WPF性能问题

我有一个WPF窗口,其中包含一个花式图像,大约有200个控件(从按钮派生),所有这些都使用我的5个模板之一(路径,阴影效果等).同意,这是一个沉重的窗口.我可以忍受这一点.

我的问题来自调整窗口大小.最大化/恢复大约需要1-2秒,但手动拖动左下角会导致系统挂起约5-10秒.在该延迟中,窗口为黑色并包含部分剩余部分,直到显示最终结果.它看起来业余和,我不能忍受.

远程连接:使用远程帐户,我发现窗口调整大小总是需要1-2秒,但在拖动窗口边框时不会绘制"中间"阶段.结果像我期望的那样快活.

我的结论是:调整大小期间的重绘是瓶颈.

不可避免的问题是:如何在重新调整大小之前阻止重绘窗口?

提前感谢任何想法......

wpf performance controls resize window

5
推荐指数
1
解决办法
3944
查看次数

C#中的PreTranslateMessage用于托管的MFC窗口

我们开发了一个MFC应用程序,其中主窗口是在DLL中实现的.为了对其进行修改,我们正在考虑将其更改为WPF应用程序,其中"旧"本机窗口在Wpf窗口中被重新托管.到现在为止还挺好.

但是,我们的旧MFC应用程序在应用程序级别捕获了一些消息(例如:防止鼠标单击或键盘输入).要重新托管WPF应用程序中的MFC窗口,我们需要一种方法从WPF应用程序中捕获这些窗口,并要求旧的MFC窗口预翻译它们......

这有可能吗?

我想在HwndHost中重新托管MFC窗口,然后添加一个消息钩子.我的桥接CLR-DLL中的代码看起来像这样(并没有实现我想要的):

MyHwndHost ^handle = gcnew MyHwndHost(pContentWnd);
handle->MessageHook += gcnew HwndSourceHook(&CVSimCoreNat::ControlMsgFilter);
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

c# hosting mfc interop windows-messages

5
推荐指数
0
解决办法
1244
查看次数

标签 统计

c# ×1

controls ×1

hosting ×1

interop ×1

mfc ×1

performance ×1

resize ×1

window ×1

windows-messages ×1

wpf ×1