2012-04-04 2 views
6

Wenn ich eine einfache Win32 GUI-Programm in MinGW + MSys mit Befehlszeile kompilieren testen und ausführen:Wie Fahrt von Konsolebox eines GUI-Programm erhalten kompilieren von MinGW + Code :: Blocks

$ g ++ main. cav -o App -std = C++ 0x

./app $

nur ein Dialogfeld zeigt. Aber setze dieses Programm in Code :: Block IDE und kompiliere es, plus eine schwarze Konsole mit dem Dialog. Fügen Sie -mwindows in den Verbindungsoptionen keinen Effekt hinzu.

main.cpp

#include <windows.h> 
int WinMain(HINSTANCE,HINSTANCE,LPSTR,int) 
{ 
    MessageBox(0,"Hello, Windows","MinGW Test Program",MB_OK); 
    return 0; 
} 
+1

Haben Sie die Optionen ausprobiert, die der Autor dieses Blogposts verwendet? Unter Build Options> Other Options haben sie '-Wl, - subsystem, windows' - http://phrasz.blogspot.com.au/2011/05/codeblocks-disable-console-window.html – charlemagne

+0

'-Wl, - -subsystem, Windows 'funktionieren nicht in der Codeblock-IDE, ich füge es sowohl in den Compiler als auch in den Linker-Optionen hinzu, zeige mir immer noch die Konsolenbox. – bo0k

+0

@ bo0k, Ich weiß, es ist eine lange Zeit, aber wenn Sie das gerade vergessen haben, habe ich nur gefragt, ob es eine Möglichkeit gibt, dies ohne ein Projekt zu tun, da die Linker-Optionen, die ich versuchte, nicht funktionierten Das "Problem" mit "-Wl, - Subsystem, Windows" ist, dass es nur * innerhalb * der IDE nicht funktioniert. Wenn Sie es vom Explorer ausführen, wird es kein Konsolenfenster haben. Ich dachte nur, du würdest es gerne wissen. – chris

Antwort

11

es in einem Projekt Put und in den Projekteinstellungen gibt es eine Option nicht ein Konsolenfenster haben.

Wenn Sie nicht daran interessiert sind, es in einem Projekt zu haben, wird ein Anruf an ShowWindow (GetConsoleWindow(), SW_HIDE); es auf dem Bildschirm blinken lassen und dann verschwinden. Beachten Sie, dass Sie #define _WIN32_WINNT als 0x0500 oder höher haben müssen, bevor Sie windows.h verwenden, um Zugriff auf GetConsoleWindow() zu haben. Ich werde mit einem bestimmten Ort zurückkommen, um es zu deaktivieren.

//hide console window at start 
#define _WIN32_WINNT 0x0501 //this is for XP 
#include <windows.h> 

int main() 
{ 
    ShowWindow (GetConsoleWindow(), SW_HIDE); 
    //rest of program here 
} 

EDIT: es gefunden, hier ist, wie nicht ein Konsolenfenster haben:

  1. Klicken Sie auf Projekt auf dem Menü Codeblocks.
  2. Klicken Sie auf Eigenschaften.
  3. Klicken Sie auf die zweite Registerkarte, Build Targets.
  4. Auf der rechten Seite, wo es Typ sagt: Konsolenanwendung, ändern Sie es in GUI-Anwendung.
  5. Erstellen Sie das Projekt neu.
+1

Welche Option im Codeblock? Es ist OK, wenn ich die Befehlszeile verwende. Ich denke, Codeblock sollte einige Kompilierungs- oder Verknüpfungsoptionen hinzufügen, damit die Konsole angezeigt wird, aber ich weiß nicht, wie ich den Befehlscodeblock finden kann. – bo0k

+0

Danke, ich denke, das ist der richtige Weg! – bo0k

+0

Ich bin mir nicht sicher über irgendwelche der C :: B-spezifischen Befehlszeilen-Build-Optionen. Ich weiß, dass dieser Weg mit der GUI funktioniert. – chris

Verwandte Themen