|
음...
[원인]
이것은 VCL의 모든폼이 WndParent가 Application->Handle이 되기 때문입니다.
Application->Handle 도 윈도우핸들인데 화면에 보이지 않기 때문에 click할수가 거의 없죠
vcl로 만든 Application에서는
Application->MainForm이 메인폼이기는 하니
실제적으로 메인폼은 Applcation->Handle이 메인폼이 됩니다.
Applcation->Handle 과 Application->MainForm->Handle이 같지 않죠
만약 win32api 인 MessageBox를 띄울때도 첫번째 parameter에 NULL을 주면 ..
껌뻑거림이 없을것입니다.
[해결방법]
Form의 CreateParams에서 Params.WndParent를 현재 ActiveForm.Handle로 설정해주시면 됩니다.
ShowModal되는 폼이 한해서..
ShowMessage나 MessageDlg 의 경우에도
위 메세지박스는 TMessageForm이라는 TForm을 상속받은 폼을 생성해서 modal로 띄워줄뿐인데요
소스코드를 직접수정하지 않고는 불편하므로..
ShowMessage대신 win32api인 MessageBox를 쓰시면 될듯 합니다.
그럼..
심성현 님이 쓰신 글 :
: Win32 API 또는 MFC나 .net 에서 모달창을 띄우거나 메시지박스를 띄웠을때 부모창을 마우스로 클릭하면 제어권에 모달창에 있기 때문에 부모창으로 메시지가 가지 않고 모달창이 깜빡깜빡 거립니다.
:
: 그런데 vcl 폼 어플리케이션으로 만들었을때 모달창이나 메시지박스를 띄우면 부모창에 마우스 메시지가 전달되지 않는건 맞는데 모달창이 깜빡거리지는 않습니다. 깜빡거리게 하고 싶은데..
:
: 원래 vcl에서는 그런건지 그리고 깜빡거리게 동작하게 하는 방법이 있는건지 궁금하네요.
|