2009-09-28 4 views
0

응용 프로그램이 MFC입니다. 때로는 창을 활성화하고 화면이 비활성화되거나 숨겨 지거나 최소화 될 때 화면 맨 위에 표시해야합니다.응용 프로그램의 창을 활성화하고 화면의 맨 위에 표시하는 방법은 무엇입니까?

AfxGetMainWnd()->BringWindowToTop(); 
AfxGetMainWnd()->SetActiveWindow(); 
AfxGetMainWnd()->SetForegroundWindow(); 

if(AfxGetMainWnd()->IsIconic()) 
AfxGetMainWnd()->ShowWindow(SW_SHOWNORMAL); 
else 
    AfxGetMainWnd()->ShowWindow(SW_SHOW); 
AfxGetMainWnd()->UpdateWindow(); 

을하지만 때로는 윈도우가 활성화되지 않았습니다 발견하고 여전히 다른 appliactions의 창에 의해 변환 된 것되었다 : 여기에 내가 무슨 짓을했는지. 내 접근 방식에 문제가 있습니까? 이 문제를 어떻게 해결해야합니까?

대단히 감사합니다!

답변

1

시도 SetWindowPos (hwnd, HWND_TOPMOST, 0,0,0,0, SWP_SHOWWINDOW);

모든 창에는 동일한 핸들 유형이 있으므로 모든 창에서 작동해야합니다.

0

표시하려는 창에서 SetFocus라고도 부르십시오.

그래도 작동하지 않거나 100 % 작동하지 않는 경우 해킹 가능한 해결 방법을 사용하여 스레드 나 창 타이머 (타이머가 더 쉽다)를 실행할 수 있습니다. 주기적으로 확인할 창이 있는지 여부를 확인합니다. 당신은 최상위가되고 싶습니다. 실제로 주문의 맨 위에 올려 놓습니다. 첫 번째 반복에서이 문제가 발생하면 스레드 또는 타이머를 종료합니다.

수량, 귀하의 프로필에서 12 가지 질문을하고 아무 것도 받아 본적이 없습니다. 나는 당신을 위해 응답의 아무도가 일하지 않았다는 것을 믿는 것이 단단한 찾아 낸다. 대답을 살펴보고 답변으로 표시하는 것을 표시하십시오. 0 % 동의하면 사람들이 귀하의 질문에 곧 답할 수 있습니다.

건배.

관련 문제