2015-01-21 4 views
0

모덜리스 대화 상자 세트를 열어 놓았지만 그 중 하나를 클릭하면 전경에 나타나지 않습니다. 그것은 초점을 얻지 만 대화 상자는 그들이 생성 된 화면의 순서대로 영원히 남아 있습니다. 마지막으로 생성 된 것은 항상 포 그라운드에 있고 나머지는 가려집니다.Win32 모덜리스 대화 상자를 맨 위로 가져 오는 방법

나는 시도했다 :

  • SetActiveWindow (hDlg);
  • SetForegroundWindow (hDlg);
  • SwitchToThisWindow (hDlg, FALSE);

WM_LBUTTONUP 메시지에 대한 응답으로,하지만 그들이 전화를 받더라도 아무것도하지 않습니다. 'SetForground'또는 'Topmost'매개 변수로 재생하는 것과 같은 대화 상자 속성에서 다른 구성을 시도했지만 아무 것도 수행하지 않습니다.

나는 불가능한 작업을하려고합니까?

답변

1

이 문제의 원인은 창 소유권입니다. 소유 창은 항상 소유자 위에 표시됩니다. 이 내용은 documentation에 설명되어 있습니다.

분명히 모덜리스 대화 상자간에 소유권 관계가 있습니다. 모덜리스 대화 상자 각각을 동일한 창으로 소유함으로써이를 해결할 수 있습니다.

소유권을 제어하는 ​​방법은 대화 상자를 만드는 방법에 따라 다릅니다. CreateDialog을 사용하는 경우 세 번째 매개 변수가 대화 상자 소유자를 지정하는 데 사용됩니다.

+0

축복합니다! 하루 종일 머리카락을 당겨서 풀어 봤습니다. 부모 매개 변수를 NULL로 설정하면됩니다. exe는 부모입니다. 필자는 9 년 전에 작성한 방대한 Win32 프로그램이 효과가 있었기 때문에 한 번에 알았을 것 같습니다. 9 년 동안 한 가지를 기억하지만 전부는 아닙니다. –

+0

메인 윈도우가 있습니까? 일반적으로 모덜리스 대화 상자의 소유자라고 기대할 수 있습니다. –

+0

사실 나는 그렇지 않습니다. 내 메인 윈도우가 모덜리스 대화 상자입니다. –