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

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[571] [답변] 다른 윈도우 활성화 시키기 답변이 너무 늦었나... ㅎㅎㅎ
박영목 [gsbsoft] 11188 읽음    2006-02-17 22:27
Window2000 부터 인가? 활성화가 잘 되지 않았습니다. 저도 이 게시물이 있을 때 본 것 같은데...해결을 못하고 프로그램을 만들었습니다. Win2000부터는 사용자의 Window에 대해 어떤 이벤트가 있어야 활성화 된다는 문서를 몇년 전에 보았는데... 그 후로 생각하지 않다가 오늘 보니 아이디어가 떠올랐습니다.... 강제로 이벤트를 주면 되겠지요.  사람이 이벤트를 주는 것은 입력장치인 키보드 마우스 이겠지요.... ㅋㅋㅋㅋㅋ
물론 활성화 시키고자 하는 윈도우는 맨 앞으로 보내고.... 그리고 마우스 커서를 이동시키고 마우스를 한번 클릭하면
활성화 됩니다. 그리고 나서 마우스 커서를 다시 월래의 위치로 살짝 이동 그러면 깜쪽같이 끝납니다..

저도 오늘 몇년 전의 한을 풀었습니다.  ㅋㅋㅋㅋㅋ   


::SetWindowPos( hwnd, HWND_TOPMOST, xPos, yPos, dlgRect.Width(), dlgRect.Height(), SWP_SHOWWINDOW );

  POINT pos;

  if( ::GetCursorPos( &pos )==0 )     // address of structure for cursor position
  {
    pos.x=-1;
    pos.y=-1;
  }

  SetCursorPos( xPos+2, yPos+3 );

  mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
  mouse_event(MOUSEEVENTF_LEFTUP, 0,0, 0, 0);

  if( pos.x!=-1 || pos.y!=-1 ) ::SetCursorPos( pos.x, pos.y );

  HWND hhh;
  hhh = ::GetDlgItem( this->HWindow, IDC_SEXTRACT );
  ::PostMessage( hhh, WM_SETFOCUS, 0, 0 );
김태선 [jsdkts]   2006-02-18 12:26 X
좋은 팁이네요.

+ -

관련 글 리스트
571 [답변] 다른 윈도우 활성화 시키기 답변이 너무 늦었나... ㅎㅎㅎ 박영목 11188 2006/02/17
(링크)     C++Builder Q/A > [답변] 다른 윈도우 활성화 시키기 답변이 너무 늦었나... ㅎㅎㅎ
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.