私のアプリケーションでは、積み重ねられたダイアログを使用して、いくつかの場所でオプションを選択しています。たとえば、次のダイアログ ボックスでは、2 つの重ねられたダイアログが使用されています。
- 「撮影方法」を選択するには、ユーザーは右下のドロップダウン リストから選択します。これにより、その上の子ダイアログ ボックスが変更されます。
- 「高度なオプション」ボックス (子ダイアログ ボックスにあります) は、単純化されたインターフェイスとより完全なインターフェイスのどちらかを選択します。
いずれの場合も、スタック ダイアログ ボックスは、親ダイアログのプレースホルダーとして画像オブジェクトを使用して実装されます。ページが選択されると、SetWindowPos が呼び出され、プレースホルダーに合わせて子ダイアログ (pNewPage) を移動/サイズ変更します。
// Show the newly selected page
pNewPage->ShowWindow (SW_SHOW) ;
pNewPage->SetFocus () ;
// Position the newly selected page
CRect rcDlgArea ;
GetDlgItem (IDC_DLG_AREA)->GetWindowRect (&rcDlgArea) ;
ScreenToClient (&rcDlgArea) ;
pNewPage->SetWindowPos (this,
rcDlgArea.left, rcDlgArea.top, rcDlgArea.Width (), rcDlgArea.Height (),
SWP_NOACTIVATE) ;
これは今まで非常にうまく機能していましたが、ドイツのユーザーの 1 人が説明できない問題を抱えています。彼がツールを開くと、積み上げられたページが次のように表示されます。
子ダイアログのテキストが親のテキストよりも大きく表示されるように、子ダイアログが引き伸ばされることに注意してください。
視覚的なレイアウトの問題以外に、子ダイアログは、右下の選択ドロップダウン (親ダイアログにあります) を「覆っている」ようにも見えます。ドロップダウンは引き続き表示されますが、ドロップダウン リストをクリックしても CBN_SELCHANGE メッセージは受信されません。
子ダイアログ ボックスのサイズが変更されている理由を説明できません。上記のように、ダイアログ ボックスのサイズ変更について非常に明確にしようとしましたが、うまくいかないようです。
子ダイアログが一部のシステムで再スケーリングされ、他のシステムでは再スケーリングされない理由を考えられる人はいますか? どんな助けでも大歓迎です。
ありがとうございました、
マイケル