1

MFC ダイアログ ベースのアプリケーションがあります。ユーザーはダイアログの言語を変更できます。これは、既存のダイアログを閉じて、言語を変更した別のダイアログを開くことで作成しました。問題は、タスクバーで 1 つのアイコンが削除され、その場所に別の同一のアイコンが作成されることです。アプリケーションのアイコンがタスク バーの最後のアイコンでない場合、タスク バー アイコン セットの最後に移動されたものとして認識されます。

タスクバーでのアイコンの位置を保持し、アイコンのちらつきをまったく防止したい。それ、どうやったら出来るの?

アプリケーションは、Windows XP から Windows 7 までの OS をサポートする必要があります。

編集:私が答えを受け入れる別の質問は、それにもかかわらずタスクバーに表示される非表示のウィンドウを作成する方法と、そのウィンドウからメインウィンドウに関連するウィンドウメッセージを転送する方法です?

4

2 に答える 2

1

ダイアログを別の外部親ウィンドウの子にします。親は、ダイアログまたはその他の種類のウィンドウにすることができます。提供されるのはタイトルバーだけです。ユーザーがサイズを変更しようとすると、サイズ変更コマンドをダイアログに転送する必要がありますが、それ以外の場合は、親ウィンドウで多くのことを行う必要はありません。

于 2012-10-29T18:48:54.307 に答える
1

代わりに、ダイアログを CFormView に置き換えてみませんか? このようにして、ダイアログをラップするフレーム ウィンドウ (フォーム ビューに埋め込まれます) があり、タスクバー アイコンを所有するのはフレーム ウィンドウです。

CFormView を表示する SDI アプリケーションを作成します。初期化時にダイアログをデフォルトの言語 (またはユーザーが以前に選択した言語) で表示します。ユーザーが「言語の変更」オプションを選択すると、表示されているフォーム ビューを新しいビューに変更するだけです。

ボーナス機能: この設計では、フレームワークが言語固有のアクセラレーターやメニューなどを処理します。

これを行う方法の詳細については、http://www.codeguru.com/cpp/wd/doc_view/viewmanagement/article.php/c3341/Multiple-Views-Using-SDI.htmを確認してください。

于 2012-11-09T05:01:27.627 に答える