我们如何生成事件,以便框架将在我需要的实例处调用 MFC 中的消息处理程序 OnSize() 函数。
谢谢
我经常重复这句话:Windows 不是事件驱动系统;因此,您不会生成事件。Windows 中的事件是用于同步线程的实体。
每个窗口通过处理来自系统或应用程序的消息并相应地采取行动来工作。它们可以是预定义的消息或专门为应用程序定义的消息。
我恭敬地但强烈不同意以前的帖子。尽管提供信息是出于好意,但它表明了一种糟糕的编程习惯。
您永远不应该使用 Send/Postmessage 来更改窗口大小。使用 Windows API:MoveWindow 或 SetWindowPos。这会将 WM_SIZE(和其他伴随消息)发送到窗口以通知大小更改请求。
一般来说:
切勿发送或发布系统生成的消息,因为这在大多数情况下不起作用,因为系统通常会生成您不发送的附加消息,从而导致意外行为。
使用SendMessage或PostMessage函数并发送WM_SIZE消息
您可以使用 SendMessage 函数,如下所示:
SetWindowPos (NULL, 0,0, myrect. Height (), myrect. Width (), SWP_FRAMECHANGED|SWP_NOZORDER);
更一般地说,在 MFC 中合成事件的方法是使用SendInput
函数:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms646310(v=vs.85).aspx