簡體   English   中英

如何阻止命令提示符出現在Win32 C應用程序中?

[英]How do I stop a command prompt from appearing in a Win32 C application?

我真的不知道為什么會發生這種情況......我在emacs中創建了一個win32應用程序,每當我創建它並運行它(而不是通過命令提示符)時,窗口下會彈出一個命令提示符窗口。 如果我在Code :: Blocks中構建一個win32應用程序,並只運行其默認模板,那么它將在沒有命令提示符窗口的情況下運行。 我查看了兩者的代碼,無法弄清楚可能導致這種情況的原因......

我以為是因為我在那里包含了一些printf()語句,但我不希望它們留在那里(它們用於調試),所以我寫了一個宏:

#define DEBUG

在main.c中,和

#ifdef DEBUG
#include<stdio.h>
#define DBG printf
#else
#define DBG
#endif

在標題中(當然包含在#define DEBUG之后)。

當我unf'd DEBUG時,窗口仍然出現......我不知道我在做什么來實現它,有什么樣的東西導致命令提示窗口顯示在win32應用程序中? 我嘗試使用所有****Ex()窗口函數而不僅僅是CreateWindow()等,但這並沒有改變任何東西。 我檢查並重新檢查了類定義和注冊,但沒有用,並確保我沒有忘記printf()語句(即使我這樣做也會導致錯誤,因為除非包含stdio.h否則DEBUG已定義)。

這是我包括的內容:

#include<windows.h>
#include<windowsx.h>
#include"main.h"
#include"windowproc.h"

有誰知道這會導致什么? 我甚至評論了我所有的stdio,DBG,printf垃圾,它仍然出現了,我發誓我的代碼和Code :: Blocks生成的代碼之間沒有區別,除了我使用HANDLE_MSG和一些額外的功能拆分代碼。

更新

我正在使用MinGW 3.4.5。 使用-mwindows開關工作,謝謝

嘗試使用-mwindows開關進行鏈接。

你的程序也應該像這樣讀取主方法:

int WINAPI WinMain(
....
)

而不是傳統的int main()。

相關主題:

Windows在“控制台”和“Windows”應用程序之間有所不同。 控制台應用程序將始終與關聯的終端一起運行。

有關差異的詳細信息,請參閱此問題

不知道你正在使用什么編譯器,但我知道GCC需要-mwindows選項來禁止命令行窗口。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM