2012-04-04 8 views
6

Khi tôi kiểm tra biên dịch một chương trình Win32 GUI đơn giản trong MinGW + MSys với dòng lệnh và chạy nó:Làm thế nào để có được đi xe của giao diện điều khiển hộp của một chương trình GUI biên dịch bởi MinGW + Mã :: Khối

$ g ++ chính. cpp -o app -std = C++ 0x

$ ./app

chỉ một hộp thoại hiển thị. Nhưng đặt chương trình này vào Code :: Block IDE và biên dịch nó, nó aways cộng với một hộp giao diện điều khiển màu đen với hộp thoại. Thêm -máy chủ trong tùy chọn liên kết không có hiệu lực.

main.cpp

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

Bạn đã thử các tùy chọn tác giả của bài đăng blog này được sử dụng chưa? Trong Tùy chọn xây dựng> Các tùy chọn khác, chúng có '-Wl, - hệ thống con, cửa sổ' - http://phrasz.blogspot.com.au/2011/05/codeblocks-disable-console-window.html – charlemagne

+0

'-Wl, - -subsystem, windows 'không hoạt động trong IDE mã hóa, tôi thêm nó vào cả hai trình biên dịch và các tùy chọn liên kết vẫn hiển thị cho tôi giao diện điều khiển hộp. – bo0k

+0

@ bo0k, tôi biết đã lâu rồi, nhưng nếu bạn vừa quên điều này, tôi đã hỏi liệu có cách nào để thực hiện điều này mà không có dự án hay không, vì tùy chọn liên kết tôi đã thử không hoạt động, và "vấn đề" với '-Wl, - hệ thống con, cửa sổ' là nó chỉ không hoạt động * bên trong * IDE. Nếu bạn chạy nó từ explorer, nó sẽ không có một cửa sổ console. Tôi chỉ nghĩ rằng bạn muốn biết. – chris

Trả lời

11

Đặt nó trong một dự án, và trong các thiết lập dự án có một tùy chọn để không có một cửa sổ giao diện điều khiển.

Nếu bạn không thể bận tâm để có nó trong một dự án, một cuộc gọi đến ShowWindow (GetConsoleWindow(), SW_HIDE); sẽ làm cho nó flash trên màn hình và sau đó biến mất. Lưu ý rằng bạn phải #define _WIN32_WINNT0x0500 hoặc cao hơn trước khi bao gồm cửa sổ.h để có quyền truy cập vào GetConsoleWindow(). Tôi sẽ quay lại một chút với một vị trí cụ thể để vô hiệu hóa nó.

//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: Tìm thấy nó, dưới đây là cách để không có một cửa sổ giao diện điều khiển:

  1. Bấm dự án trên menu CodeBlocks.
  2. Nhấp vào Thuộc tính.
  3. Nhấp vào tab thứ hai, Xây dựng mục tiêu.
  4. Ở bên phải, trong đó ứng dụng Type: Console, thay đổi nó thành ứng dụng GUI.
  5. Xây dựng lại dự án.
+1

Tùy chọn nào trong mã khóa? OK khi tôi đang sử dụng dòng lệnh. Tôi nghĩ rằng codeblock nên thêm một số tùy chọn biên dịch hoặc liên kết để làm cho giao diện điều khiển xuất hiện, nhưng tôi không biết cách tìm lệnh codeblock đang chạy. – bo0k

+0

Cảm ơn bạn, tôi nghĩ đó là cách đúng đắn! – bo0k

+0

Tôi không chắc chắn về bất kỳ tùy chọn xây dựng dòng lệnh C :: B cụ thể nào. Tôi biết cách này làm việc với GUI mặc dù. – chris