안녕하세요....
먼저 메인폼을 띄웁니다...
물론 작업표시줄에도 안 나타나게
SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW); 를 사용했습니다.
그리고 그런다음 메인폼에서 메뉴폼을 Form2.Show로 띄웠습니다...
그래서 그런지 최상위 윈도우루 안뜹니다....
그런데 메뉴폼에서 다른 외부프로그램을 띄우고 그 외부프로그램이 종료할때
윈도우 메세지를 이용해서 메인폼에 메시지를 전달하면 메뉴폼이 최상위 윈도우루
나타나거든요...
처음 메뉴폼을 띄울때 최상위 윈도우로 띄우려면 어떻게 해야되나요????
꼭 좀 갈켜 주세요....
이때 StayOnTop 프로퍼티를 이용해서 최상위 윈도 처리를 구현하려면 다음과
같은 문제가 있습니다. 한 어플리케이션에서 한개 이상의 stay on top이 있다면 폼의 stay on top기능은 무시 됩니다. 즉 다른 화면 아래로 숨어버리죠. 따라서 2개 이상의 폼에 stayontop기능을 이용하려면 SetWindowPos함수를 이용해야합니다.
설정시
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE)
해제시
SetWindowPos(Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE);
이 SetWindowPos를 쓰는데도 제약이 따릅니다. StayOnTop을 하려는 각각의 폼을 dll로
구현해서 정적으로 로딩해야합니다. LoadLibrary함수를 이용해서 사용하려면 물론 안
되지요. 반드시 dll로, 그리고 정적으로
델초보 wrote:
> 안녕하세요....
> 먼저 메인폼을 띄웁니다...
> 물론 작업표시줄에도 안 나타나게
> SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW); 를 사용했습니다.
> 그리고 그런다음 메인폼에서 메뉴폼을 Form2.Show로 띄웠습니다...
> 그래서 그런지 최상위 윈도우루 안뜹니다....
> 그런데 메뉴폼에서 다른 외부프로그램을 띄우고 그 외부프로그램이 종료할때
> 윈도우 메세지를 이용해서 메인폼에 메시지를 전달하면 메뉴폼이 최상위 윈도우루
> 나타나거든요...
> 처음 메뉴폼을 띄울때 최상위 윈도우로 띄우려면 어떻게 해야되나요????
> 꼭 좀 갈켜 주세요....