|
먼저 죄송합니다.
제가 잘못 알고 있었네요
Form이 하나일경우에는 잘돌아가는데..
2개 이상인 경우에 문제가 발생하네요...
아래는 불확실한 방법이긴 한데....
MainForm의 Deactive이벤트에서 Child폼을 tipmost로 SetWindowPos해주시면 되는것 같습니다.
그런데 이방법도 정확한 원인은 모르겠지만 어떤 경우에 TOPMOST가 풀려버리네요
특히 Child에 Focus되어있는상태에서 다른 Application으로 Focus가 움직일때..
void __fastcall TForm1::FormDeactivate(TObject *Sender)
{
// SetWindowPos( Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE );
SetWindowPos( Form2->Handle, HWND_TOPMOST, Form2->Left, Form2->Top, Form2->Width, Form2->Height, SWP_NOACTIVATE );
}
//---------------------------------------------------------------------------
테스트 해보구...
좋은 결과 있으면 다시 답변올리겠습니다.
sad-eyes 님이 쓰신 글 :
: 장성호 님이 쓰신 글 :
: : MDI 메인이 Deactive이벤트에 topmost 코딩을 하느것이 아니라
: :
: : Child 폼이 독립적으로 돌아갈때(Parent를 빠꾼후에...)
: : Child폼의 Deactive이벤트에 코딩해야 합니다.
:
: 안그래도 여기 포럼을 다 뒤져봣었는데 이전에 장성호님이 써놓으신
: 답이 있어서 그렇게도 해봣는데.. 안되더군요
: Child폼의 Deactive이벤트에 무조건 Topmost 코딩을 넣었지만..
: 다른 App가 active가 되면 소용없었습니다.
: 이때 Child폼 속성도 fsStayOnTop으로 되어잇구요..
:
: 혹시요..
: TApplication에서.. 자신이 deactive되면
: 하위에 딸린 모든 윈도우에게 속성여부에 상관없이
: ShowOwnedPopups 처리를 강제로 시키지는 않는지요?
:
: 장성호님 말씀대로 child 폼 속성을 fsStayOnTop으로 주고
: child::Deactive 에서 SetWindowPos (.., HWND_TOPMOST..)
: 로 하는것 이외에 제가 혹시 빠뜨린 사항이 잇는걸까요?
:
: T___T
|