首先需要注意的是,我最近才开始学习 WinAPI。我敢肯定这个问题以前已经被问过很多次了,但由于某种原因,我在网上的任何地方都找不到。问题就是这个;为什么要在执行消息循环之前在ShowWindow()正文中进行初始调用?WinMain()为什么不简单地通过使用WS_VISIBLE标志将窗口设置为最初可见?
ShowWindow()我对函数的机制也有一些疑问。它实际上发送了哪些消息?在 MSDN 中它指出:
如果窗口在
WS_VISIBLE创建时具有样式,则窗口[WM_SHOWWINDOW]在创建后但在显示之前收到此消息。ShowWindow当orShowOwnedPopups函数更改其可见性状态时,窗口也会收到此消息。
这是否意味着ShowWindow()函数和 Windows 之间的主要通信方式是通过WM_SHOWWINDOW消息?它还指出:
以下
WM_SHOWWINDOW情况不发送消息:
WS_MAXIMIZE当使用orWS_MINIMIZE样式创建顶层重叠窗口时。在对函数
SW_SHOWNORMAL的调用中指定标志时。ShowWindow
MSDN 还指出:
应用程序第一次调用
ShowWindow时,它应该使用WinMain函数的nCmdShow参数作为其nCmdShow参数。
Petzold 声明传递给此nCmdShow参数的参数将是SW_SHOWNORMAL,SW_SHOWMAXIMIZED或SW_SHOWMINNOACTIVE。我是否可以从中得出该ShowWindow()函数唯一不发送WM_SHOWWINDOW消息的时间,是我们第一次对它进行初始调用的时候Winmain()吗?如果是这样,它如何让窗口显示?此外,所有这些与窗户的实际绘画有何关系?
如果我的问题有点混乱,我很抱歉,但是显示窗口的机制让我感到困惑,并且由于某种原因,很难在网上找到这些问题的明确答案(而不仅仅是零碎的信息)。在澄清所有这些方面的任何帮助将不胜感激!