Assertion when embedding CPropertySheet into a CScrollView
Allen Mavel -- AllenLM@datastorm.com
Tuesday, April 09, 1996
Operating system: Windows 95
MFC version 4.0
I'm embedding a property sheet into a view (essentially establishing a
CFormView that happens to be a property sheet). When looking through the
archives of the MFC mailing list, I noticed that the recommendation was
to embed the property sheet into a CScrollView in the OnCreate function.
I've done this as follows:
int CMyView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CScrollView::OnCreate(lpCreateStruct) == -1)
return -1;
m_Sheet.AddPage(&m_Page1);
m_Sheet.AddPage(&m_Page2);
m_Sheet.Create(this, WS_CHILD | WS_VISIBLE, 0);
return 0;
}
This does work as promised, but it seems to be generating a non-fatal
assertion in the CPropertySheet.Create() function. The message is:
"First-chance exception in ProperView.exe (COMCTL32.DLL): 0xC0000005:
Access Violation"
The specific line in CPropertySheet::Create() is:
HWND hWnd = (HWND)PropertySheet(&m_psh);
This calls the AfxThunkPropertySheet() function in ccdata.cpp, which in
turn calls:
return _afxCommCtrl.pfnPropertySheet[1](pHeader);
which is generating the error message. Aside from the assertion, the
code seems to work just fine and it is giving me what I want. For
obvious reasons, though, I'd prefer not to have that assertion. Can
anyone give me a clue as to why it is occurring and what I can do to fix
it?
Thanks,
Paul Bartholomew
pauldb@datastorm.com
Allen Mavel
Research and Development
David W. Gillett -- DGILLETT@expertedge.com
Thursday, April 11, 1996
[Mini-digest: 3 responses]
> This does work as promised, but it seems to be generating a non-fatal
> assertion in the CPropertySheet.Create() function. The message is:
>
> "First-chance exception in ProperView.exe (COMCTL32.DLL): 0xC0000005:
> Access Violation"
...
> Aside from the assertion, the code seems to work just fine and it
> is giving me what I want. For obvious reasons, though, I'd prefer
> not to have that assertion. Can anyone give me a clue as to why it
> is occurring and what I can do to fix it?
This behaviour appears to be normal, actually. I once thought I
understood what was going on at this point, but I'm less certain now.
I believe it has something to do with manipulation of the dialog
resources associated with the individual pages.
Bottom line is that you will get this message when creating a
CPropertySheet, but it's nothing to worry about.
Dave
-----From: "Mike Blaszczak"
> Operating system: Windows 95
> MFC version 4.0
Thanks.
> This does work as promised, but it seems to be generating a non-fatal
> assertion in the CPropertySheet.Create() function. The message is:
> "First-chance exception in ProperView.exe (COMCTL32.DLL): 0xC0000005:
> Access Violation"
This message is an exception, not an assertion. There's a pretty big
difference.
> The specific line in CPropertySheet::Create() is:
> HWND hWnd = (HWND)PropertySheet(&m_psh);
This assertion is benign. It is discussed in an MSKB article. If you search
for "exception near PropertySheet", I think you'll find it. Maybe someone
else knows the Q-number from the top of their head.
> Aside from the assertion, the
An assertion is generated by a line of source code which will say something
like ASSERT(x), where "x" is actually a conditional expression. If the
expression evaluated to non-zero, the assertion doesn't trip. If the
expression evaluates to zero, the assertion will trip. The expression is only
compiled and evaluated in debug builds. This is one of the many reasons that
debug builds are so much larger than release builds. An ASSERT() message pops
up a dialog box while your program is running.
An exception is a special condition generated by the operating system. It
might be in response to hardware memory protection catching a problem, or it
might be in response to a program generated problem, like using the "throw"
keyword in C++. Exceptions exist in release builds and debug builds alike.
> Paul Bartholomew
> pauldb@datastorm.com
.B ekiM
TCHAR szSpringtime[] = _T("Check twice and save a life: motorcycles are
everywhere!");
> Allen Mavel
> Research and Development
Richard M. Nixon
Ex-President Of The United States
TCHAR szDisclaimer[] = _T("People ought to know if thier president's a
crook.");
| Вернуться в корень Архива
|