Was ist nCmdShow?

8

Ich war schon immer gespannt, was nCmdShow in WinMain eines C-Programms mit Windows-API bedeutet.

Ich habe die formale Erklärung nachgeschlagen: "Steuert, wie das Fenster angezeigt werden soll. Dieser Parameter kann einer der folgenden Werte sein.".

Ich verstehe nicht, was das bedeutet, da ein Windows-Programm mehr als ein Fenster oder gar keine Fenster enthalten kann. Außerdem, wenn das Programm anfängt, gibt es kein Fenster, mit dem ich anfangen könnte, was mich dazu bringt, dieses Argument noch mehr zu hinterfragen.

Auch von dem, was ich gelesen habe, bleibt es immer 10, was nicht einmal auf der Liste der Optionen in " Ссылка " ...

Ist es veraltet? Kann jemand seinen Zweck erklären oder Hinweise zur Verwendung geben? Ich habe versucht zu googeln, aber habe nichts gesehen.

Danke!

REVISITED :

Wenn Sie mit der rechten Maustaste auf eine Verknüpfung klicken und zu Eigenschaften wechseln, gibt es eine Option, um das Fenster Minimiert, Maximiert oder Normal (ly) zu starten.

Windows stellt Ihrem Programm eine nCmdShow bereit, falls es auf eine der drei Arten gestartet werden soll. Beispielsweise kann es sich in der Benachrichtigungsleiste verbergen, wenn es minimiert gestartet wurde.

Für die Vollständigkeit:

Ссылка beschreibt die verschiedenen Möglichkeiten das kann übergeben werden.

    
Dmitry 06.03.2013, 05:58
quelle

4 Antworten

4

Es ist im Grunde ein Hinweis auf die Anwendung, wie es sein Hauptfenster anzeigen soll. Obwohl es Legacy ist, ist es nicht so alt wie der Parameter hPrevInstance . Aber ich schweife ab ...

Der Wert des Parameters nCmdShow ist eine der in ShowWindow 's API-Referenz. Es kann von einem anderen Prozess oder System festgelegt werden, das Ihre Anwendung über CreateProcess . Die STARTUPINFO -Struktur, die optional verwendet werden kann an CreateProcess übergeben enthält eine wShowWindow -Membervariable, die über den Parameter WinMain an nCmdShow übergeben wird.

Eine weitere Möglichkeit, den Parameter nCmdShow zu übergeben, besteht in Aufrufen von ShellExecute .

Von ganz oben kann ich mir kein Szenario (in neueren Windows-Versionen) vorstellen, in dem das Betriebssystem beim Start einer Anwendung explizit einen anderen Wert als SW_SHOW übergibt.

Es ist nicht ungewöhnlich, dass eine Anwendung das nCmdShow -Flag ignoriert, das an WinMain [?] übergeben wurde.

    
selbie 06.03.2013, 06:09
quelle
5

Beachten Sie diesen Abschnitt in der Dokumentation ShowWindow :

  

nCmdShow : Dieser Parameter wird ignoriert, wenn eine Anwendung zum ersten Mal ShowWindow aufruft, wenn das Programm, das die Anwendung gestartet hat, eine STARTUPINFO -Struktur bereitstellt.

Obwohl Ihr Programm beim Start kein Fenster enthält, wird der angegebene Wert implizit verwendet, wenn Sie zum ersten Mal ShowWindow aufrufen. (Es wird jedoch nicht direkt aus der lokalen WinMain -Variablen von nCmdShow gelesen, daher können Sie seinen Wert nicht innerhalb von WinMain ändern und unterschiedliche Ergebnisse erwarten. In diesem Sinne ist es nicht besonders nützlich, es sei denn, Ihr Programm benötigt es etwas Besonderes zu tun, wenn es minimiert oder maximiert gestartet wird.)

    
jamesdlin 06.03.2013 08:28
quelle
1

nCmdShow ist ein Integertyp, dieser Parameter gibt an, wie die Anwendungsfenster angezeigt werden sollen (nach O.S.) Wenn von Ihnen kein Wert angegeben wird als standardmäßig Windows OS. Sage SW_NORMAL Wert dieses Parameters. Sie können Werte für diesen Parameter angeben, jedoch diejenigen, die an WinMain () nur für Windows OS

übergeben wurden     
user7247208 04.12.2016 05:56
quelle
0

Das "n" in nCmdShow bedeutet "Short int".

(Das wollte ich wissen, als ich zu dieser Stack-Überlaufseite kam)

Quelle: Ссылка

    
J MADISON 20.07.2017 17:54
quelle

Tags und Links