2012-01-13 5 views
4

VC++에서 응용 프로그램을 만들었습니다. 문제가 발생하면 오류가 발생하면 MessageBox가 표시됩니다. 그 MessageBox는 전면에 표시되지 않습니다. 나는 ALT 키를 눌러 해당 응용 프로그램의 전면에 있어야합니다. ALT를 누를 때까지 내 응용 프로그램이 비활성 상태가됩니다. MessageBox에서 OK를 누릅니다.MFC MessageBox가 모든 윈도우 상단에 표시되지 않음

다음은 첨부 된 코드입니다.

MessageBox(NULL,"Invalid File, Parsing is going to be terminate"); 
AfxMessageBox("Win32 MessageMessage",MB_OK | MB_ICONEXCLAMATION | MB_TOPMOST);

내가 줘야 누군가가 나에게 당신은 당신은 HWND WINAPI GetDesktopWindow (무효)를 사용하여, 화면에 을 메시지 박스를 표시하는 처리 통과해야

+2

어느 것을 사용하고 계십니까? 'MessageBox' 또는'AfxMessageBox'? 그리고 두 가지를 모두 사용하고 있다면 ... 왜 * 두 가지를 사용하고 있습니까? –

+1

다른 스레드에서 이것을 호출합니까? Win32 API 버전을 사용하는 경우 부모 창의 핸들을 전달해야합니다. – zar

+0

코드 그레이 : 나는 둘 다 사용했고 둘 다 똑같이 행동했다. 부모 클래스가 대화 상속 클래스에서 상속 받았고 OpenGL 윈도우를 사용했다. Windows 핸들러 사용 방법을 익히 알고있다. 만약 내가 넣어 : : getWindows() 첫 번째 매개 변수로 컴파일 실 거예요. 친절하게 도와주세요 – DareDevil

답변

1

을 할 수 있다면 매우 감사; 함수를 사용하여 Desktop Handle을 가져 와서 MessageBox() 함수에 전달합니다.

당신은 GetDesktopWindoe은 바탕 화면 창에 대한 핸들을 검색

http://msdn.microsoft.com/en-us/library/windows/desktop/ms633504%28v=vs.85%29.aspx

에서 더 많은 도움을받을 수 있습니다. 데스크탑 창은 전체 화면을 덮습니다. 데스크탑 윈도우는 그 위에 다른 윈도우가 그려진 영역입니다. 이것은 OpenGL에서도 작동합니다.

+0

나는 그런 식으로 행동했다. 이제는 특정 Dialog Window에서 버튼을 누르면 선행시에 표시됩니다. 답장을 보내 주셔서 감사합니다 – DareDevil

관련 문제