MFC: モードレスで開いた子ダイアログをアクティブにする
WindowsのMFCアプリをメンテナンスしています。
ダイアログAがモーダルで表示され、そのとき子ダイアログBをモードレスで隣に開いています。
ダイアログAがアクティブになるのですが、ダイアログBを(ユーザーのクリックによらずに)アクティブにしたく、SetFocus
やSetActiveWindow
などいろいろ試したのですが、どうしてもうまくいきません。
いい方法があれば教えてください m(_ _)m
ダイアログAを開く(モーダル)
CDialogA dialogA(this);
dialogA.DoModal();
ダイアログAがダイアログBを作成してモードレスで隣に表示する
CDialogA::CDialogA(CWnd* pParent) : CDialog(CDialogA::IDD, pParent)
{
m_dialogB = new CDialogB(this);
}
BOOL CDialogA::OnInitDialog()
{
CDialog::OnInitDialog();
return TRUE;
}
void CDialogA::OnShowWindow(BOOL bShow, UINT nStatus)
{
CDialog::OnShowWindow(bShow, nStatus);
if (m_dialogB) {
m_dialogB->Create(IDD_B, this);
RECT rect;
GetWindowRect(&rect);
m_dialogB->SetWindowPos(this, rect.right + 1, rect.top, 0, 0, SWP_NOSIZE);
}
}