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