什么是nCmdShow?

Dmi*_*try 10 winapi

我一直很好奇nCmdShow在使用Windows API的C程序的WinMain中意味着什么.

我查看了正式的解释:"控制窗口的显示方式.此参数可以是以下值之一."

我不明白这意味着什么,因为Windows程序可以包含多个窗口,或者根本没有窗口.另外,随着程序的开始,没有窗口可以开始显示,这让我更加质疑这个论点.

同样从我读到的,它总是保持10,这甚至不在" http://msdn.microsoft.com/en-us/library/windows/desktop/ms633559%28v=vs.85 "的选项列表中%29.aspx "......

它已经过时了吗?有人可以解释它的用途,或提供任何解释其用途的参考资料吗?我试着谷歌搜索但没有看到任何东西.

谢谢!

重新审视:

右键单击快捷方式并转到属性时,可以选择启动最小化,最大化或正常(ly)窗口.

Windows为您的程序提供了一个nCmdShow,以防它以这三种方式中的任何一种方式启动时以特殊方式执行操作.例如,如果请求以最小化方式启动它,它可能会隐藏在通知栏内.


详尽无遗:

在此输入图像描述

https://msdn.microsoft.com/en-us/library/windows/desktop/ms633548(v=vs.85).aspx描述了可以传递的所有不同方式.

sel*_*bie 7

它基本上是对应用程序应如何显示其主窗口的提示。虽然是legacy,但没有hPrevInstance参数那么legacy 。但是,我离题了……

nCmdShow参数的值将是ShowWindow的 API 参考中指定的常量之一。它可以由另一个进程或系统通过CreateProcess. STARTUPINFO可以选择传递给的结构CreateProcess包含一个wShowWindow成员变量,该变量将WinMain通过nCmdShow参数传递给。

nCmdShow传递参数的另一种方式是通过调用ShellExecute.

在我的头顶上,我想不出任何情况(在最近版本的 Windows 中)操作系统将显式传递一个值而不是SW_SHOW启动应用程序时。

应用程序忽略nCmdShow传递给WinMain[?]的标志并不少见也不是坏事。

  • 如果您要求程序以最大化或最小化(通过快捷方式或通过“开始”)启动,您将获得除“SW_SHOW”以外的值。 (5认同)

jam*_*lin 6

请注意ShowWindow文档中的这一部分:

nCmdShow:ShowWindow如果启动应用程序的程序提供了STARTUPINFO结构,则在应用程序第一次调用时会忽略此参数.

即使您的程序在启动时没有窗口,也会在您第一次调用时隐式使用指定的值ShowWindow.(但是,它不是直接从WinMain局部nCmdShow变量读取的,所以你不能改变它的值,WinMain并期望得到不同的结果.从这个意义上说,除非你的程序需要做一些特殊的事情,如果它开始最小化或者最大化.)