VC++でウィンドウをアクティブにする

方法を教えてください。SetWindowPosを使用するのでしょうか? MFCです。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:taknt No.1

回答回数13539ベストアンサー獲得回数1198

ポイント10pt

SetForegroundWindowは いかがでしょうか?

SetForegroundWindow();

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

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

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

id:nekomilk

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

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

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

2005/02/16 08:32:59
id:aki73ix No.2

回答回数5224ベストアンサー獲得回数27

ポイント40pt

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();

id:nekomilk

おぉっ。できました!

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

2005/02/16 13:22:29

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません