[英]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.