C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[22488] Re:Re:[질문] 폼 활성화는 트릭이 좀 있어야합니다. 내용 철저~
Jun [hjuni11] 1283 읽음    2002-11-07 14:26
안녕하세요..

수야님 답변에 감사드려요...^_^

수야님께서 알려주신 방법이 제대로 돌아가는 루틴인 것 같은데요...

저 같은 경우는 다른 창의 WM_CAPTURECHANGED 메시지를 후킹해서 제 창으로 다시 메시지를 보내 제 폼의 메시지 핸들러에서 활성화해주도록 처리를 했는데요...

WM_CAPTURECHANGED가 이전 창의 포커스를 계속 잡고 있는지 아무리 해도 포커스가 제 창으로 오질 않네요...

제 프로그램의 문제인 것 같아 좀 더 고민을 해봐야 될 것 같아요...

답변 감사드립니다...ㅡ.ㅜ



수야!╋ 님이 쓰신 글 :
: 수야랍뉘돳 ㅡ_ㅡ;
:
: 폼 활성화는 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로 풀면 가장 앞으로 보이긴 하지만 활성화가 되지 않구요...
: :
: : 이 부분에 대해서 아시는 분은 답변 좀 부탁드립니다....^^
: :

+ -

관련 글 리스트
22461 [질문] 창을 젤 위로 올리고 활성화 시키려면.... Jun 1082 2002/11/06
22472     Re:[질문] 폼 활성화는 트릭이 좀 있어야합니다. 내용 철저~ 수야!╋ 1792 2002/11/06
22488         Re:Re:[질문] 폼 활성화는 트릭이 좀 있어야합니다. 내용 철저~ Jun 1283 2002/11/07
22462     Re: 이렇게 해 보세염.. 김상구.패패루 1045 2002/11/06
22464         Re:Re: 이렇게 해 보세염.. Jun 1098 2002/11/06
22465             Re:Re:Re: 이렇게 해 보세염.. 김성철.파란 997 2002/11/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.