子ウィンドウをアクティブにするには – プログラミング – Home

子ウィンドウをアクティブにするには
 
通知
すべてクリア

[解決済] 子ウィンドウをアクティブにするには


はな
 はな
(@はな)
ゲスト
結合: 23年前
投稿: 123
Topic starter  

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

Windows 2000
VC++ 6.0
MFC


引用未解決
トピックタグ
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

CWnd::SetForegroundWindow()では?


返信引用
はな
 はな
(@はな)
ゲスト
結合: 23年前
投稿: 123
Topic starter  

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


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

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


返信引用
はな
 はな
(@はな)
ゲスト
結合: 23年前
投稿: 123
Topic starter  

なるほど。
でも↓これでもやっぱり反応ないです。。。
m_pTestView->GetParent()->SetForegroundWindow() ;

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


返信引用
どとう
 どとう
(@どとう)
ゲスト
結合: 22年前
投稿: 7
 

MDIのMainFrameの基本クラスは、CMDIFrameWndでしょう?
なら、CMDIFrameWnd::MDIActivate()じゃないでしょうか?
外していたら、ごめんなさい。


返信引用
はな
 はな
(@はな)
ゲスト
結合: 23年前
投稿: 123
Topic starter  

((CMDIChildWnd*)m_pTestView->GetParent())->MDIActivate() ;
でうまくいきました。
dairygoodsさん、どとうさん、どうもありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました