2011-01-17 2 views
10

C++ Builder 2009で作成されたネイティブアプリケーションとMDIの両方、および同じプログレスバーユーティリティーコードを使用する2つのアプリケーションがあります。そのうちの1人は、Windows 7のタスクバーの進行状況を適切に更新します。もう一つはそうしない。Windows 7のタスクバーの進捗状況は1つのアプリケーションでは機能しますが、別のアプリケーションでは機能しません。

2つのアプリケーションの間に明らかな違いはありません。エラーが発生したアプリケーションでは、ITaskbarList3::SetProgressValueITaskbarList3::SetProgressStateの呼び出しはS_OKに戻りますが、Windows 7のタスクバーでは何も起こりません。

Windows 7のタスクバーのプログレスバーが機能するのに問題がありますか?私が欠けている可能性のある要件はありますか?

+0

同じマシンで実行していますか?あなたはそれを言及していない。そうでない場合は、1台のマシンがタスクバーと小さなアイコンを使用しますか?大きなアイコンのオーバーレイ(進行状況バーを含む)だけを取得します。 –

+0

@Kate:はい、それらは同じマシン上で実行されており、どちらも大きなタスクバーアイコンを使用しています。 –

+0

このユーティリティコードは、両方のアプリケーションの同じ部分に配置されていますか、それともわずかな違いがありますか?両方のアプリケーションがMDIであると述べたので、進捗状況を更新するためのウィンドウメッセージが両方の場合に必要なパスをトレースしてみてください。私は、意図したとおりに動作しないアプリケーションの場合、進行状況更新メッセージがメイン(アプリケーション)メッセージループに到達していないと推測しています。しかし、私はこの機能について実際に経験がないので、これは単なる推測です。 – LightBulb

答えて

0

私の問題はDelphi/C++ Builderに固有の可能性が高く、VCLのトップレベルウィンドウの処理方法が異なるためです。

Application.MainFormOnTaskBarがtrueの場合、ITaskbarList3は、Application.MainFormHandleがHWNDパラメータとして使用されている場合にのみ機能します。

Application.MainFormOnTaskBarがfalseの場合、ITaskbarList3は、Application.HandleがHWNDパラメータとして使用されている場合にのみ機能します。

私の場合、1つのプロジェクトはMainFormOnTaskBarで、1つはfalseでした。

-1

私はWindows 7のプログレスバーを使ってアプリを書いていませんが、ライブアニメーションを使用して進行状況を更新する必要のある多くの.Netアプリを書いています。私の経験から最大の落とし穴は、メインスレッド

関連する問題