【发布时间】:2010-11-01 02:36:27
【问题描述】:
我真的不知道为什么会这样...... 我在 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 开关有效,谢谢
【问题讨论】:
标签: c winapi command-prompt