MFC COM 클라이언트 애플리케이션에서 "서버 작업 중" 메세지 박스 처리법


 # 원인

사용하고자 하는 ActiveX 컨트롤또는 DCOM 클라이언트가 어떤 이유로 인해 응답하지 못하고 있는 상태입니다. 다음과 같은 이유에서 발생할 수 있습니다.

1. ActiveX 컨트롤이 초기화되기 전에 클라이언트 애플리케이션이 이를 사용하려고 시도할 때  

2. 시스템이 느리거나 동시에 많은 애플리케이션이 동작 중이어서 ActiveX 컨트롤이 응답하지 못하는 경우  

3. ActiveX 컨트롤의 설계에 문제가 있어서 응답이 늦도록 제작되어 있을 때  



# 해결 방법

다음과 같이 CWinApp::InitInstance()의 파생 함수에서 COleMessageFilter::SetMessagePendingDelay() 함수를 이용하여 ActiveX 컨트롤의 응답을 기다리는 시간을 길게 설정하면 됩니다.


#include "AfxOle.h"

BOOL CMyApp::InitInstance() {

     // ...

    AfxOleInit();

    COleMessageFilter* pFilter=AfxOleGetMessageFilter();

    pFilter->SetMessagePendingDelay(15000);      // Default는 5000ms입니다.

    pFilter->EnableBusyDialog(FALSE);               // 메세지박스를 화면에 나타나게 하지 않게 합니다.

    pFilter->EnableNotRespondingDialog(FALSE);

     // ...



관련 링크

http://support.microsoft.com/kb/602164/ko
 

Trackbacks 2 / Comments 0

Leave Comments