티스토리 뷰


 # 원인

사용하고자 하는 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
 

'개발' 카테고리의 다른 글

c/c++ 간단 토글링  (0) 2007.05.22
XmlLite SDK 관련..  (0) 2007.04.12
도서물 도착!!  (0) 2007.04.09
H.264 white paper(intel)  (0) 2007.04.02
C++에서 ADO를 이용한 Stored Procedure 사용법  (0) 2007.04.01
댓글