4

なぜこれが起こっているのか本当にわかりません... 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 を undef したとき、ウィンドウはまだ表示されました... それを実現するために何をしているのかわかりません。win32 アプリケーションでコマンド プロンプト ウィンドウが表示される原因は何ですか? などの代わりにすべての****Ex()ウィンドウ機能を使用してみましCreateWindow()たが、何も変わりませんでした。クラス定義と登録を確認して再確認しましたが、役に立たず、printf()ステートメントを忘れていないことを確認しました(stdio.hDEBUGが定義されていない限り含まれていないため、忘れたとしてもエラーが発生する可能性があります) )。

これは私が含めたものです:

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

誰がこれを引き起こす可能性があるか知っていますか? stdio、DBG、printf のジャンクをすべてコメントアウトしましたが、それでも表示されました。私のコードと Code::Blocks によって生成されたコードの間に違いはないと断言します。コードを分割します。

アップデート

MinGW 3.4.5 を使用しています。-mwindows スイッチを使用するとうまくいきました、ありがとう

4

3 に答える 3

6

-mwindows スイッチでリンクしてみてください。

プログラムには、次のように読み取られる main メソッドも必要です。

int WINAPI WinMain(
....
)

従来の int main() とは対照的です。

関連スレッド:

于 2009-06-08T06:30:37.510 に答える
2

Windows では、「コンソール」アプリケーションと「Windows」アプリケーションに違いがあります。コンソール アプリケーションは、関連付けられたターミナルで常に実行されます。

違いの詳細については、この質問を参照してください。

于 2009-06-08T06:31:50.190 に答える
2

使用しているコンパイラはわかりませんが、コマンドライン ウィンドウを非表示にするために GCC に -mwindows オプションが必要であることはわかっています。

于 2009-06-08T06:32:05.523 に答える