我真的不知道为什么会这样……我在 emacs 中创建了一个 win32 应用程序,每当我创建并运行它(不是通过命令提示符)时,窗口下方就会弹出一个命令提示符窗口。如果我在 Code::Blocks 中构建一个 win32 应用程序,并且只运行它的默认模板,那么它会在没有命令提示符窗口的情况下运行。我查看了两者的代码,无法弄清楚可能导致这种情况的原因......
我认为是因为我在其中包含了一些 printf() 语句,但我不希望它们留在那里(它们用于调试),所以我写了一个宏:
#define DEBUG
在 main.c 中,和
#ifdef DEBUG
#include<stdio.h>
#define DBG printf
#else
#define DBG
#endif
在标题中(#define DEBUG
当然包括在后面)。
当我取消DEBUG时,窗口仍然出现......我不知道我正在做什么来实现它,什么样的事情会导致命令提示符窗口出现在win32应用程序中?我尝试使用所有的****Ex()
windows 功能,而不是仅仅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 开关有效,谢谢