2012-01-30 12 views
0

C++でWindowsアプリケーションを作成する必要があり、TaskDialoghttp://msdn.microsoft.com/en-us/library/windows/desktop/bb760540(v=vs.85).aspxを参照)を表示する必要があります。 TaskDialogには、パラメータとしてコマンドラインに渡されたテキストが表示されます。C++でTaskDialogだけを表示するWindowsアプリケーションを作成する方法

「Win32コンソールアプリケーション」を作成してTaskDialogと呼ぶことができますが、コンソールの黒いウィンドウが表示されます。

WinMainの中にTaskDialogを呼び出すだけで、この解決策に問題はありますか?

他のアイデアはありますか?

+1

私はあなたがVisual Studioを使用していると仮定しています。ウィンドウやダイアログを表示する場合は、コンソールアプリケーションを作成する必要はありません。あなたは 'TaskDialog'または' TaskDialogIndirect'を使うことができますが、VistaでもWindows 7でも構いません。 – AJG85

答えて

4

「Windowsアプリケーション」を作成し、WinMain内でTaskDialogを呼び出すだけで、この解決策に問題はありますか?

つまり、そのようなアプリを実装する方法です。すべての問題はありません。もちろん、コード内に明示的にウィンドウを作成せず、メッセージループを実行しないでください。ちょうどTaskDialogに電話してください。

主なポイントは、既定ではコンソールウィンドウが表示されているため、コンソールアプリケーションを必要としないことです。コンソールサブシステムとGUIサブシステムの2つの主要なサブシステムがあります。後者はやや紛らわしい名前です。あなたはGUIサブシステムのアプリでGUIを表示するように強制されていません。あなたがそうするかどうかは、あなた次第です。本当にあなたがコンソールを望むかどうかは、選択肢になります。したがって、サブシステムはコンソールとコンソール以外の名前にすることができます!

+0

ありがとう。はい、私が "単にTaskDialogを呼び出す"と書くと、私はウィンドウを作成せず、メッセージループを実行しないということです。 –

+0

これで問題は既に正しく解決されています! –

+1

'TaskDialog'はあなたのためにメッセージループを実行することに注意してください:" TaskDialog関数はタスクダイアログを作成し、表示し、**動作させます** "。おそらくここであなたを傷つけることはありませんが、いくつかの機能がこれを行うことを理解することが重要です。 (MessageBoxは同じことをします) – MSalters

1

空のウィンドウアプリケーションを作成する必要があります。 Windowsアプリケーションの

エントリポイントはcallesのWinMainで、次のようになります。これは、あなたのソリューションが正しいことを意味し

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) 
{ 
    //Place your code here 
} 

。アプリケーションでバージョン6のComctl32.dllが使用されていることを確認するだけです。それ以外の場合、TaskDialogは失敗します。

+3

マイナーな補正。 'TaskDialog'はビジュアルスタイルなしで正常に動作します。 comctl v6が必要です。 2つは全く同じものではありません。たとえば、Windows Classicのテーマを考えてみましょう。 –

関連する問題