2

私のプログラムでコンソールを(ウィンドウで)非表示にする方法を探していて、次のコードを見つけました:

#if defined (__WIN32__)
    #include <windows.h>
    HWND hWnd = GetConsoleWindow();
    ShowWindow(hWnd, SW_HIDE);
#endif

ただし、コードブロックは私に与え続けますerror: expected constructor, destructor, or type conversion before '(' token。私は何を間違っていますか?

Mac と Linux でコンソールを非表示にするコードは何ですか? Mac や Linux はあまり使用しませんが、プログラムをプラットフォームに依存しないようにしたいと考えています。すべてのプラットフォームで機能するコードはありますか? コンパイル時に、コンソールは Mac と Linux でも表示されますか?

4

1 に答える 1

4

一般に、コンソールアプリケーションはウィンドウを台無しにしないでください。より高度なもの(ウィンドウの表示/非表示、サイズの決定など)が必要な場合は、おそらくGUIアプリケーションに切り替える必要があります。これは、ウィンドウが必要ない場合でも当てはまります。GUIアプリケーションを作成し、ウィンドウを作成しないでください。

MacとLinuxでは、実行可能ファイルを起動したときにデフォルトでコンソールは表示されません(GUIとコンソールの実行可能ファイルの区別はありません)。ターミナルで起動した場合、アプリケーションはそれをあまり制御できません(エスケープコードを使用している場合を除きますが、テキストの書式設定/配置を制御するためのものです)。ヒューリスティックを使用して、使用されているターミナルエミュレーターを推測し、非表示にするように指示することもできますが、これは醜く、面倒で、コンソールアプリケーションの目的に反します。

コードスニペットに関する限り、それを#include関数本体の中に入れることはできません。そのようなものを2つに分割する必要があります。

ファイルの先頭:

#ifdef __WIN32__
    #define _WIN32_WINNT 0x0500
    #include <windows.h>
#endif

関数本体の内部:

#ifdef __WIN32__
    ShowWindow(GetConsoleWindow(), SW_HIDE);
#endif
于 2011-07-18T00:43:41.097 に答える