人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VC++でウィンドウをアクティブにする
方法を教えてください。SetWindowPosを使用するのでしょうか? MFCです。

●質問者: nekomilk
●カテゴリ:コンピュータ
✍キーワード:mfc VC++ アクティブ ウィンドウ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● きゃづみぃ
●10ポイント

http://nienie.com/~masapico/api_SetForegroundWindow.html

SetForegroundWindow

SetForegroundWindowは いかがでしょうか?

SetForegroundWindow();

は自分自身をアクティブにします。

http://www.microsoft.com/japan/msdn/library/default.asp?url=/jap...

ご指定のページが見つかりません

http://yokohama.cool.ne.jp/chokuto/urawaza/api/SetForegroundWind...

SetForegroundWindow

◎質問者からの返答

うーん。うまくいかないです。

アクティブにはなるようなんですが、2つアクティブになっているような気がします。

XPだと普通に使っていてもこうなるので仕方ないのでしょうか?


2 ● aki73ix
●40ポイント

http://techtips.belution.com/ja/vc/0012/

http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200310_03100130.html

WindowsNT系と9x系で動作が若干異なるので、ちょっと工夫が必要です

SDKだとHWNDに目的のウィンドウのハンドルを入れます

がMFCの場合とはこの部分がちょっと変わります

以下にソースを書きます

SDK

DWORD DTID,ATID,PID;

DTID = GetWindowThreadProcessId(GetForegroundWindow(), &PID);

ATID = GetWindowThreadProcessId(HWND,&PID);

AttachThreadInput(ATID,DTID, TRUE);

SetForegroundWindow(HWND);

AttachThreadInput(ATID,DTID, FALSE);

SetActiveWindow(HWND);

MFC

DWORD DTID,ATID,PID;

DTID = GetWindowThreadProcessId(GetForegroundWindow(), &PID);

ATID = GetWindowThreadProcessId(pWnd->GetSafeHwnd(),&PID);

AttachThreadInput(ATID,DTID, TRUE);

pWnd->SetForegroundWindow();

AttachThreadInput(ATID,DTID, FALSE);

pWnd->SetActiveWindow();

◎質問者からの返答

おぉっ。できました!

ありがとうございます〜♪

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ