|
수야랍뉘돳 ㅡ_ㅡ;
폼 활성화는 SetFocus나 기타 BrindWindowToTop 이런걸로는 좀 벅찹니다.
준님이 하시려는건 아마도 그러리라 봅니다
해당폼을 최상위로 올린뒤 다시 평범한 폼으로 바꾸어야합니다.
별로 어려운 함수는 아니지만 함수명만으론 이 함수가 이쪽에 사용되라라곤 잘 생각하지 않으시나봅니다.
자세한건 SDK Help를 참고하시구요
SetWindowPos(MainForm->Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE |SWP_SHOWWINDOW);
SetWindowPos(MainForm->Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE |SWP_SHOWWINDOW);
SetForegroundWindow(MainForm->Handle);
SetForegroundWindow는 왜 해주느냐하면 SetWindowPos 함수에 HWND_NOTOPMOST 사용후 반듯이(must)해주라해서 했습니다 ㅡ_ㅡ; ( 천년 만년 허접 수야 ㅡ_ㅡ; )
이렇게 하시면 해당폼이 최상위로 올라옵니다. (말그대로 최상위 NT의 작업창보다 위로 옵니다)
그후 다시 평범한 폼으로 변경하는거죠
원하시는 부분까지 왔는지 모르겠네요
참고하세욥~
( 천년 만년 허접 수야 여쑴뮈돳~ )
Jun 님이 쓰신 글 :
: 안녕하세요... 오랜만에 글을 올리는 것 같네요..^_^;
:
: 매 번 도움만 받고 가네요...^^;
:
: 프로그램이 A,B 두 개가 있다고 가정하고 B에서 이벤트가 발생하면 A에서 그 이벤트를 읽어서(후킹이라고 하져...) A에서 다른 프로그램들보다 젤 앞에 보이게 하구(최상위로 셋팅하는 게 아님.) 활성화 시키려구 하는데요.
:
: API함수를 써서 여러가지를 시도해 봤습니다.
:
: 근데 모든 것이 A자기 자신에서 처리를 하면 활성화 상태까지 오지 않는 것 같더라구요.
:
: 하지만 A에서 처리해야 하거든여..ㅡ.ㅡ;
:
: 다른 연습 프로젝트를 만들어서 그 창에서 처리를 해주면 모두 잘 되는 것 같은데요...
:
: 처리 API는 아래와 같이 해주었습니다.
:
: HWND hWnd = FindWindow("TApplication", this->Caption);
: ::BringWindowToTop(hWnd);
: ::SetForegroundWindow(hWnd);
: ::SetActiveWindow(hWnd);
:
: SetWindowPos을 써서 TOPMOST를 주고 NOTOPMOST로 풀면 가장 앞으로 보이긴 하지만 활성화가 되지 않구요...
:
: 이 부분에 대해서 아시는 분은 답변 좀 부탁드립니다....^^
:
|