当前位置:  开发笔记 > 编程语言 > 正文

我怎么知道WindowsFormsHost何时在WPF中调整大小?

如何解决《我怎么知道WindowsFormsHost何时在WPF中调整大小?》经验,为你挑选了1个好方法。

我在WindowsFormsHost中有一个Windows窗体地图,我需要它来调整窗口大小.

我只是不确定要听哪个事件,这样做.我需要地图只在鼠标启动时调整大小,否则它会滞后,当你非常缓慢地调整窗口大小时,它会尝试绘制一百万次.



1> casperOne..:

等待计时器是一个非常非常糟糕的想法,很简单,它是一个启发式的,你猜测何时完成调整大小操作.

更好的想法是从中派生一个类WindowsFormsHost并覆盖该WndProc方法,处理WM_SIZE消息.这是在大小操作完成时发送到窗口的消息(而不是WM_SIZING在进程期间发送的消息).

您还可以处理WM_SIZING消息,而不是WndProc在收到此消息时调用基本实现,以防止消息被处理并让映射在所有这些时间重绘.

该类WndProc方法的文档Control显示了如何覆盖WndProc方法:

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.wndproc(VS.71).aspx

即使它是针对不同的类,它也是完全相同的主体.

此外,您将需要WM_SIZINGWM_SIZE常量的值,您可以在此处找到:

http://www.pinvoke.net/default.aspx/Enums/WindowsMessages.html

请注意,您不需要上面链接中的所有内容,只需要这两个值的声明:

/// 
/// The WM_SIZING message is sent to a window that
/// the user is resizing.  By processing this message,
/// an application can monitor the size and position
/// of the drag rectangle and, if needed, change its
/// size or position. 
/// 
const int WM_SIZING = 0x0214;

/// 
/// The WM_SIZE message is sent to a window after its
/// size has changed.
/// 
const int WM_SIZE = 0x0005;

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有