Как остановить появление командной строки в приложении Win32 C? - PullRequest
3 голосов
/ 08 июня 2009

Я действительно понятия не имею, почему это происходит ... Я создал приложение win32 в emacs, и всякий раз, когда я его создаю и запускаю (не через командную строку), под окном появляется окно командной строки. Если я создаю приложение win32 в Code :: Blocks и просто запускаю его шаблон по умолчанию, то оно запускается без окна командной строки. Я просмотрел код обоих и не могу понять, что может вызвать это ...

Я думал, что это потому, что я включил туда несколько операторов 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 не включен, если только Отладка определяется).

Вот что я включил:

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

Кто-нибудь знает, что может вызвать это? Я даже закомментировал все мои stdio, DBG, printf нежелательные, и он все еще обнаружился, и я клянусь, нет никакой разницы между моим кодом и кодом, сгенерированным Code :: Blocks, кроме моего использования HANDLE_MSG и нескольких дополнительных функций для разделите код.

Обновление

Я использую MinGW 3.4.5. с помощью ключа -mwindows работал, спасибо

Ответы [ 3 ]

6 голосов
/ 08 июня 2009

Попробуйте установить связь с ключом -mwindows.

Ваша программа также должна иметь основной метод, читаемый так:

int WINAPI WinMain(
....
)

в отличие от традиционного int main ().

Похожие темы:

2 голосов
/ 08 июня 2009

Не знаю, какой компилятор вы используете, но я знаю, что GCC нужна опция -mwindows для подавления окна командной строки.

2 голосов
/ 08 июня 2009

Windows делает разницу между «консольными» и «Windows» приложениями. Консольные приложения всегда будут запускаться с соответствующим терминалом.

См. этот вопрос для получения подробной информации о различиях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...