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
[40000] Re:application을 항상 위로 해주려면
수야!╋ [sooya23] 1732 읽음    2005-04-29 19:03
항상 위에 있기위해서는 FormStyle을 기본적으로 fsStayOnTop 으로 설정해야하는건 아실거 같습니다.

그러데요 이 작업만으로는 항상 위에 존재하지는 못합니다.

기본적으로 윈도우라는 윈도우에 윈도우들이 생성되어있는것이지요.?

윈도우Xp니 하는 기본적인 윈도우라는 큰 윈도우에서 다른 프로그램들의 윈도우들이 있다는거지요

이는 같은 조건일 경우 나중에 생성된 윈도우를 최종적으로 그리게 되는데요

그럼 fsStrayOnTop의 윈도우들끼리는 우선순위를 정하게 되어집니다.

이 우선순위는 어느 윈도우가 더 마지막에 Active 됐었는가 입니다.

잡다한 설명이네요 ㅋㅋ

최상위로 선언된 윈도우들끼리는 가려질 수 있다는것을 말씀드린것입니다.

폼의 이벤트에보면 OnDeactivate 이벤트가 있습니다.

보통 선택된 윈도우는 타이틀바 부분의 색이 바뀌지요? 파란색으로 바뀌는 순간이 OnActivate
회색등으로 바뀌는 순간이 OnDeactivate 입니다.

그럼 해주실것은? OnDeactivate 가 발생되면 다시 최상위로 뿌려주면 되는 것이지요

간단한 예제이구요..

옵션은 헬프를 보셔서 알맞게 설정하시는게 좋을것입니다.

void __fastcall TForm1::FormDeactivate(TObject *Sender)
{
    SetWindowPos( Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE );
}
//---------------------------------------------------------------------------

보여지는 메시지의 경우에는

MessageBox( Handle, "변경", "나", MB_OK | MB_TOPMOST ); 이렇게 보여지면 되는데요

메시지 박스도 어차피 윈도우입니다.

위에서 말씀드린 경우가 그대로 적용이 되지요.

하지만 Handle 값의 덕택에 Handle이 가르키는 윈도우보다 위에 있게됩니다.

도움이 되셨는지요.

3줄의 질문에 대한 답변의 글이 좀 길었군요.

초보자 님이 쓰신 글 :
: 항상 위 옵션을 체크한 작업관리자처럼
:
: application을 다른 윈도우들보다 위에 있도록 할 수는 없나요?
:
: 그리고 application의 메세지 박스도 항상 위 옵션을 주고 싶은데 어떻게 해야하나요?

+ -

관련 글 리스트
39991 application을 항상 위로 해주려면 초보자 877 2005/04/29
40000     Re:application을 항상 위로 해주려면 수야!╋ 1732 2005/04/29
43310         Re:Re:application을 항상 위로 해주려면 박영목 2187 2006/01/13
40001         Re:Re:application을 항상 위로 해주려면-답변감사합니다 초보자 1135 2005/04/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.