http://www.tamaracka.com/search.htm
여기서 StayOnTop을 키워드로 해서 검색하시면 해결책들이 있습니다.
님의 경우는 테스트 해보지 않았지만 이 경우 역시 아마도
Application->OnActive에서 Application->RestoreTopMosts();를 하고
Application->OnDeactive에서 Application->NormalizeTopMosts();를 하면
해결 될 듯 하군요.
Jun 님이 쓰신 글 :
: 안녕하세요...
:
: 질문이 있어서요.... 너무 이상해서 질문드립니다..
:
: 일단 메인폼의 formstyle을 fsStayOnTop으로 설정하고. formclosequery에서 bool값을 비교해서 false일 경우에는 종료 시키지 않고 tray로 넣어줍니다. trayicon은 rxtrayicon을 사용했구요.
: tray로 넣어주는 방법은 Application->Minimize()한 후에 작업표시줄에서 없애주기 위해 ShowWindow(this->Handle, SW_HIDE);를 해주었습니다.
:
: 그 후가 문제인데요...이걸 프로그램 상에서 trayicon을 클릭하여 Application->restore()를 해주면 정상적으로 작동이 되는데요...
:
: project source인 프로젝트명.cpp에서 mutex를 설정하여 다시 같은 프로그램을 띄웠을 때 현재 지정된 mutex를 사용하는 프로그램이 떠있으면 그 프로그램을 띄워주기 위하여
: ShowWindow(FindWindow("TApplication", "test"), SW_SHOWNORMAL); 이라고 해주는데요..
:
: 이렇게 해주니까 프로그램이 화면상에 나타나기는 하는데 이전의 fsStayOnTop의 속성이 제대로 동작하지를 않습니다... 제대로 동작하지 않는다는 말이 subform까지도 제끼고 위로 올라가버리는 현상이 나타난다는 겁니다...
:
: SW_SHOWNORMAL을 주지 않고 SW_SHOWNA를 주면 위와 같은 이상현상이 일어나지는 않지만 이전에 Minimize를 해서 내려 놓았기 때문에 minimize된 상태로 작업표시줄에만 나타나게 되더라구요...
:
: 어디에 문제가 있는 지 모르겠어요...
:
: 시원한 해결 방법 좀 알려주세요...... SetWindowPos으로 하려고 해도 stayontop의 속성을 바꾸기 때문에 제대로 된 동작이 이루어지질 않아요....
: 사용자가 stayontop을 변경할 수 있거든요...
:
: 답변 부탁드리겠습니다.
|