Why does CPropertySheet->Create cause Access Violation?
Jeff Wishnie -- jwishnie@swellsoft.com Thursday, February 15, 1996 In VisC++ 4.0 when I insert a Property Sheet from the Component Gallery I get the following output in the debugger every time I open the sheet: First-chance exception in PropTest.exe (COMCTL32.DLL): 0xC0000005: Access Violation The exception _is_ handled and the app runs fine. This didn't make me feel good so I tracked the access violation to: CPropertySheet::Create This method does a bunch of work to prepare to create the WinAPI window, then it calls: // hook the window creation process AfxHookWindowCreate(this); HWND hWnd = (HWND)PropertySheet(&m_psh); The "HWND hWnd = (HWND)PropertySheet(&m_psh)" line causes the access violation. Is this a problem? Should I worry about it? What are they doing that causes an "acceptable" access violation? Thanks for any illumination! - Jeff jwishnie@swellsoft.com 415 552-3125(w)
LeRoy Baxter -- lbaxter@cinfo.com Saturday, February 17, 1996 >From the on-line VC++4.0 documentation (Readme): The first time a property page is created from its corresponding dialog = resource, it may cause a first chance exception deep within = COMCTL32.DLL. This is caused as a result of the property page changing = the style of the dialog resource to the required style prior to creating = the page. Because resources are generally read-only, this causes an = exception. The exception is handled by the system, and a copy of the = modified resource is made automatically by the system. The first-chance = exception can thus be ignored. =20 Note Since this exception must be handled by the operating system, do = not wrap calls to CPropertySheet::DoModal with a C++ try/catch block in = which the catch handles all exceptions, for exemaple, "catch (...)". = This will handle the exception intended for the operating system, = causing unpredictable behavior. Using C++ exception handling with = specific exception types or using structured exception handling where = the Access Violation exception is passed through to the operating system = is safe, however. =20 On Thursday, February 15, 1996 12:35 PM, Jeff = Wishnie[SMTP:jwishnie@swellsoft.com] wrote: >In VisC++ 4.0 when I insert a Property Sheet from the Component Gallery = I >get the >following output in the debugger every time I open the sheet: > >First-chance exception in PropTest.exe (COMCTL32.DLL): 0xC0000005: = Access >Violation > >The exception _is_ handled and the app runs fine. > >This didn't make me feel good so I tracked the access violation to: > >CPropertySheet::Create > >This method does a bunch of work to prepare to create the WinAPI = window, >then it calls: > > // hook the window creation process > AfxHookWindowCreate(this); > HWND hWnd =3D (HWND)PropertySheet(&m_psh); > >The "HWND hWnd =3D (HWND)PropertySheet(&m_psh)" line causes the access = violation. > >Is this a problem? Should I worry about it? What are they doing that = causes >an "acceptable" access violation? > >Thanks for any illumination! > >- Jeff >jwishnie@swellsoft.com >415 552-3125(w) > > > ------ =_NextPart_000_01BAFD18.7D8328A0 Content-Type: application/ms-tnef
| Вернуться в корень Архива |