[원문] http://support.microsoft.com/kb/158552/en-us/
http://support.microsoft.com/kb/158552/ko
CPropertySheet::DoModal() 또는 CPropertySheet::Create() 호출하면 예외가 발생할 수 있습니다.
현상
CPropertySheet::DoModal() 또는 CPropertySheet::Create() 호출하면 예외가 발생할 수 있습니다.
출력 창에 다음 메시지가 표시됩니다.
예상되는 예외와 운영 체제에 의해 처리됩니다. 이 경우에만 이러한 방법 중 하나를 호출하면 처음 발생하여 호출에서는 이 첫 번째 예외가 생성되지 않습니다.
원인
CommCtl32.dll 해당 페이지에 대한 리소스를 수정하는 시도합니다. 읽기 전용 섹션에 리소스가 일반적으로 때문에 운영 체제에서 발견되었습니다 첫 번째 기회가 예외를 throw합니다. 운영 체제에서 이 예외를 처리하는 및 리소스를 쓸 수 있도록 모든 다음 정상적으로 완료됩니다. 이 첫 번째 예외가 않고 모든 후속 호출을 완료하려면 리소스를 쓰기 이제 때문에
해결방법
첫 번째 예외가 안전하게 운영 체제에 의해 처리되기 때문에 무시해도 됩니다.
예외를 방지하려면 다음 방법 중 하나를 사용하십시오.
참고 읽기/쓰기 리소스를 변경할 때 리소스는 페이지 파일에 쓸 수 있습니다.
현재상태
이 동작은 의도적으로입니다.
예제
/* Compile options needed: default
*/
/***** this code will cause unpredictable results *****/
try
{
sheet.DoModal();
}
catch(...)
{
}
/***** this code is OK *****/
try
{
if (0 == sheet.DoModal())
throw "DoModal() failed!";
}
catch(char * str)
{
TRACE ("Exception thrown: %s\n", str);
}
참조
자세한, Microsoft 기술 자료에 있는 문서를 보려면 다음 문서 번호를 클릭하십시오.
http://support.microsoft.com/kb/158552/ko
CPropertySheet::DoModal() 또는 CPropertySheet::Create() 호출하면 예외가 발생할 수 있습니다.
현상
CPropertySheet::DoModal() 또는 CPropertySheet::Create() 호출하면 예외가 발생할 수 있습니다.
출력 창에 다음 메시지가 표시됩니다.
<program.exe> (Comctl32.dll) 에서 첫 번째 예외가: 0xC0000005: 액세스 위반.
원인
CommCtl32.dll 해당 페이지에 대한 리소스를 수정하는 시도합니다. 읽기 전용 섹션에 리소스가 일반적으로 때문에 운영 체제에서 발견되었습니다 첫 번째 기회가 예외를 throw합니다. 운영 체제에서 이 예외를 처리하는 및 리소스를 쓸 수 있도록 모든 다음 정상적으로 완료됩니다. 이 첫 번째 예외가 않고 모든 후속 호출을 완료하려면 리소스를 쓰기 이제 때문에
해결방법
첫 번째 예외가 안전하게 운영 체제에 의해 처리되기 때문에 무시해도 됩니다.
예외를 방지하려면 다음 방법 중 하나를 사용하십시오.
- 방법 1 : 읽기/쓰기 리소스를 만들기. 다음과 같이 설정을 링커 추가하여 이렇게 할 수 있습니다:
/SECTION:.rsrc,rw
- 방법 2 : MS Sans 않습니다 페이지의 글꼴 변경. MFC는 페이지의 대화 템플릿 글꼴을 확인합니다. MS Sans 않으면 MFC 읽기/쓰기 메모리 리소스 복사본을 만들어 및 다음 글꼴을 수정하고 C mCtl32.dll 전달합니다. DLL 페이지 서식 파일에 쓸 때 메모리 읽기 쓰기 기록합니다. Therfore, 예외가 throw될 수 없습니다.
- 방법 3 : try/catch(...) 블록을 속성 시트를 만드는 호출이 없는 함. 대신, catch 블록에 특정 예외 catch 합니다.
참고 읽기/쓰기 리소스를 변경할 때 리소스는 페이지 파일에 쓸 수 있습니다.
현재상태
이 동작은 의도적으로입니다.
예제
/* Compile options needed: default
*/
/***** this code will cause unpredictable results *****/
try
{
sheet.DoModal();
}
catch(...)
{
}
/***** this code is OK *****/
try
{
if (0 == sheet.DoModal())
throw "DoModal() failed!";
}
catch(char * str)
{
TRACE ("Exception thrown: %s\n", str);
}
참조
자세한, Microsoft 기술 자료에 있는 문서를 보려면 다음 문서 번호를 클릭하십시오.
126630 (http://support.microsoft.com/kb/126630/ ) 읽기 전용 리소스 섹션이 있습니다.
본 문서의 정보는 다음의 제품에 적용됩니다.
- Microsoft Foundation Class Library 4.2 을(를) 다음과 함께 사용했을 때
- Microsoft Visual C++ 4.0 Standard Edition
- Microsoft Visual C++ 4.1 Subscription
- Microsoft Visual C++ 4.2 Enterprise Edition
- Microsoft Visual C++ 4.2 Professional Edition
- Microsoft Visual C++ 5.0 Enterprise Edition
- Microsoft Visual C++ 5.0 Professional Edition
- Microsoft Visual C++ 6.0 Enterprise Edition
- Microsoft Visual C++ 6.0 Professional Edition
- Microsoft Visual C++, 32-bit Learning Edition 6.0
- Microsoft Visual C++ .NET 2002 Standard Edition
- Microsoft Visual C++ .NET 2003 Standard Edition
'1.소프트웨어 이야기 > 01.MFC(Visual Studio)' 카테고리의 다른 글
Warning: calling DestroyWindow in CDialog::~CDialog -- OnDestroy or PostNcDestroy in derived class will not be called. (0) | 2009.08.03 |
---|---|
[펌] 다중 쓰레드 동기화 (0) | 2009.02.27 |
MFC 자주 쓰이는 녀석들 (0) | 2008.09.05 |