0
나는 200 줄 이상의 OnCreate 기능을 가진 오래된 MFC 응용 프로그램을 가지고 있습니다.CMainFrame의 메시지 상자 OnCreate
CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
...
PostMessage(LOAD_IMAGES,0,0);
...
ValidatePermissions();
...
}
LOAD_IMAGES
는
ValidatePermissions
함수는 팝업 ... 기본적으로 새로운 CDocument을 만들려고 .. 그 핸들러 마지막 세션에서 저장되지 않은 있던 이미지를로드하려고 사용자 메시지입니다 모달 메시지 상자가 누락 된 권한을 찾으면 ..
모달 메시지 상자가 나타나면 LOAD_IMAGES 처리기가 작동 할 때 충돌이 발생합니다 (CDocument를 만들 수 없기 때문에 CMainFrame이 아직 생성되지 않았습니다.)
어떻게 처리해야합니까? OnCreate에 모달 메시지 박스가 없도록 제안하는 문서가 있습니까?
그래서 기본적으로 PostMessage 호출에서 모달 메시지 상자가 실행되도록하는 모든 항목을 이동해야합니까? – manimatters
메시지 상자에 메시지가 펌프로 전달되어 다른 메시지 처리기에있을 때 MFC 메시지 처리기를 호출하는 등의 이유로 wndproc을 다시 입력 할 수 있습니다. PostMessage가 문제의 원인이 아닙니다. 메시지를 보내는 동안 많은 메시지가 다시 입력 될 수 있습니다 상자. –
그래, 기본적으로 메시지 펌핑이 계속되면 위험 할 수 있습니다. postmessage 호출에서 messagebox를 호출하면 메시지 상자 펌프가 시작되기 전에 OnCreate 메시지 처리기가 완료 될 수 있습니다. – manimatters