首先需要注意的是,我最近才开始学习 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()
吗?如果是这样,它如何让窗口显示?此外,所有这些与窗户的实际绘画有何关系?
如果我的问题有点混乱,我很抱歉,但是显示窗口的机制让我感到困惑,并且由于某种原因,很难在网上找到这些问题的明确答案(而不仅仅是零碎的信息)。在澄清所有这些方面的任何帮助将不胜感激!