以编程方式发送WM_SIZE消息

时间:2015-09-25 09:27:22

标签: c winapi

以编程方式发送WM_SIZE消息是否有问题,例如:

SendMessage(hWnd, WM_SIZE, 0, 0);

我不关心wParamlParam的值(我的WM_SIZE事件处理程序不使用它们。)

我想要做的是在我的程序中的其他地方使用WM_SIZE事件处理程序中的代码,但我不想复制它,所以我想只发送一个{{1}消息。

3 个答案:

答案 0 :(得分:1)

  

我想要做的是在我的程序中的其他地方使用WM_SIZE事件处理程序中的代码,但我不想复制它,所以我想只发送一个WM_SIZE消息。

你可能会这样做,但在我看来,这将是一个糟糕的设计。

更好的方法是将窗口WM_SIZE处理程序中的代码移动到单独的函数中。然后,您可以从程序中的任何位置调用该函数,包括WM_SIZE处理程序。

作为一般规则,您应该尽量避免将所有代码放在窗口过程中。如果你采用这种方法,你会发现你的窗口程序成了一个巨大的代码墙,你很难阅读和理解它。正如您所发现的那样,以这种方式重新使用代码变得很困难。尝试将窗口过程的所有情况移动到单独的函数中。然后窗口过程只是打开消息并调用那些单独的函数。

答案 1 :(得分:0)

没有错,但更好的方法是使用SetWindowPos()使用正确的标记,它会调用<style> .datepicker{z-index:1151 !important;} </style> 而不是你。

答案 2 :(得分:0)

您始终可以通过编程方式发送或发布任何消息,它将由窗口过程处理。

但是你应该知道WM_SIZE只是系统发送的通知消息,告诉窗口它的大小被修改了。 发送该消息不会使窗口改变其大小。邮件通常在调用SetScrollPosMoveWindow时发送。