Как мне запретить отображение командной строки в приложении Win32 C?

StackOverflow https://stackoverflow.com/questions/963643

  •  12-09-2019
  •  | 
  •  

Вопрос

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

Я думал, это потому, что я включил туда некоторые инструкции printf(), но я не хотел, чтобы они там оставались (они были для отладки), поэтому я написал макрос:

#define DEBUG

в main.c, и

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

в заголовке (включенном после #define 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 сработало, спасибо

Это было полезно?

Решение

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

Ваша программа также должна иметь метод main, читаемый следующим образом:

int WINAPI WinMain(
....
)

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

Связанные темы:

Другие советы

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

Видишь этот вопрос подробнее о различиях.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top