子ウィンドウをアクティブにするには

[戻る]
はな 2003/02/14(金) 16:36:37
いつもお世話になります。
MDIで子ウィンドウが複数あり、メニューを選択したときに
ある子ウィンドウをアクティブにしたいのですがうまくいきません。
CFrameWnd::SetActiveView()を使ったところ、
キーボードの入力などはその指定した子ウィンドウに届いてるようなのですが
他の子ウィンドウの下に隠れたままだし、見た目がぜんぜんアクティブになっていません。
CWnd::SetActiveWindow()やCWnd::SetFocus()なども試したのですが
どれも思い通りにいきませんでした。
何かいい方法があればおしえてください。
お願いします。

Windows 2000
VC++ 6.0
MFC

dairygoods 2003/02/14(金) 16:48:50
CWnd::SetForegroundWindow()では?

はな 2003/02/14(金) 16:54:03
子ウィンドウのViewに対してCMainFrameから
m_pTestView->SetForegroundWindow() ;
とやっても何の反応もありませんでした。
Viewに対してやってもだめなのでしょうか。。。

dairygoods 2003/02/14(金) 16:59:17
ViewはMDIの枠の中に張り付いているウィンドウなので、
枠そのものをアクティブにするには、
m_pTestView->GetParent()->何か();
とします。

はな 2003/02/14(金) 17:10:42
なるほど。
でも↓これでもやっぱり反応ないです。。。
m_pTestView->GetParent()->SetForegroundWindow() ;

m_pTestView->GetParent()->SetActiveWindow() ;
というのもやってみましたがやっぱりだめです。

どとう 2003/02/14(金) 17:21:17
MDIのMainFrameの基本クラスは、CMDIFrameWndでしょう?
なら、CMDIFrameWnd::MDIActivate()じゃないでしょうか?
外していたら、ごめんなさい。

はな 2003/02/14(金) 17:59:25
[[解決]]
((CMDIChildWnd*)m_pTestView->GetParent())->MDIActivate() ;
でうまくいきました。
dairygoodsさん、どとうさん、どうもありがとうございました。

古いスレッドには追加発言できません。