이전 글 : http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=57169
답해주신 장성호님 감사합니다.
장성호님 말씀대로 시도해보다가. createparams 에서
void __fastcall TfrmF_014::CreateParams(TCreateParams &Params)
{
TForm::CreateParams(Params);
Params.ExStyle = WS_EX_APPWINDOW;
// Params.WndParent = GetDesktopWindow(); //Before
Params.WndParent = Screen->ActiveForm->Handle; //After
}
Before 를 After 로 고쳐서 해결보았습니다.
그러나 여기서 문제가 발생했습니다
메인 폼이 뜨고. 그위에 차일드폼을 띄우고. 그위에 얼럿이 뜨거나. 세부폼이 한번더뜨고 그위에 얼럿이뜨는
그런형식으로 짜여져 있습니다
그러나 createparams 를 고치니 차일드 폼에 액티브가 가있는상태에서 메인폼에 액티브를 줘도, 스크린폼이 뒤로가지 않아 메인폼을 확인할수가 없더군요.(한마디로 차일드폼이 stay on top 이 되어있는 것과 같이 동작)
물론 모든 폼의 FormStyle 은 fsNormal 입니다.
참고로 메인폼은 createparams 를 코딩하지 않았습니다.
게다가 페어런트를 액티브폼으로 바꿔주었는데도. 차일드폼에서 띄운 메시지창이 다른 차일드폼에 의해서 가려졌을때,
메인창을 선택해야만 (윈도우 바 or Alt+Tab) 메시지창이 뜨고, 메시지창을 띄운 차일드폼을 선택해도
메시지창이 뒤에있게됩니다.
페어런트 설정에서 뭔가 잘못이 있었는건지. 순서의 잘못인지. 잘모르겠네요
또다시 염치불구하고 질문을 드립니다. 도와주세요 ^^
|