多くの異なる MFC CDialog 派生ダイアログ ウィンドウを表示するかなり大きなアプリがあります。すべてのダイアログは、次のような中央関数から表示されます。
void ShowDialog(CDialog& dlg)
{
dlg.DoModal();
}
ここで、基本的にすべてのダイアログの OnInitDialog メソッドで関数を呼び出す必要があります。技術的には OnInitDialog 内にある必要はありませんが、ダイアログが表示される前にあることが望ましいです。
強引な方法は、コードを調べて最後のすべてのダイアログを見つけ、関数呼び出しを OnInitDialog メソッドに追加することです (存在する場合は追加し、存在しない場合は追加します)。しかし、もっとエレガントな方法が必要なようです...
dlg は実際には CDialog ではなく、そこから派生したものであることに注意してください。
アイデア、トリック、ハックはありますか? 私はメッセージ マップにパッチを適用する以上のことはしませんが、よりクリーンで安全なものを見つけたいと思っています。