cyourch
asked on
CPropertySheet in a CFormView
I have run into a problem embedding a CPropertySheet into a CFormView as a child window. What I am doing is implementing a "find" view window, kind of like the find dialog in Windows 95.
I basically create the CPropertySheet as a child window of my view and then add my property pages. In addition, I have a few controls that are part of the underlying CFormView too. Things work fine when I compile for Win 3.x but I get an exception under Win32. The exception cannot be ignored, my application basically crashes.
I am using MSVC 4.2b and I get the exception in CPropertySheet::Create() on the following line:
HWND hWnd = (HWND)PropertySheet(&m_psh );
Any ideas?
I basically create the CPropertySheet as a child window of my view and then add my property pages. In addition, I have a few controls that are part of the underlying CFormView too. Things work fine when I compile for Win 3.x but I get an exception under Win32. The exception cannot be ignored, my application basically crashes.
I am using MSVC 4.2b and I get the exception in CPropertySheet::Create() on the following line:
HWND hWnd = (HWND)PropertySheet(&m_psh
Any ideas?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Using a standard CPropertySheet as a child control can cause
problems (as admitted by Microsoft). Try subclassing from
CPropertySheet and set its style to WS_EX_CONTROLPARENT. This
fixes a focus bug in property sheets.
See "www.microsoft.com/kb/articles/q149/5/01.htm" for specific
instructions.
problems (as admitted by Microsoft). Try subclassing from
CPropertySheet and set its style to WS_EX_CONTROLPARENT. This
fixes a focus bug in property sheets.
See "www.microsoft.com/kb/articles/q149/5/01.htm" for specific
instructions.
Create your CPropertySheet based window without a parent. Once, it is created successfully use SetParent() , to make the property sheet of the FormView.
ASKER
Neither of the above ideas worked! I have decided to scrap the idea of making a property sheet a child of my view. Instead, I think the better approach for me is to embed a CTabCtrl and do my own property pages. This will work better because I still had tabbing problems with the proeprty sheet approach.
Ok , then please get in touch with the webmaster and cancel this question. This will save all experts from entering this expired question.
ASKER
CPropertySheetView::CPrope
CFormView(nIDTemplate)
{
m_PropSheet = new CPropertySheetEx(AFX_IDS_A
}
int CPropertySheetView::OnCrea
{
if (CFormView::OnCreate(lpCre
return -1;
#ifdef WIN32
DWORD dwSheetStyle = DS_MODALFRAME | DS_SETFONT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | DS_3DLOOK | DS_CONTEXTHELP;
#else
// The WS_SYSMENU style is needed because the 16-bit MFC
// property sheet
// class looks for a system menu.
DWORD dwSheetStyle = DS_MODALFRAME|DS_SETFONT|W
#endif
// This causes the following error under win32.
// "First-chance exception in Nman32.exe: 0xC0000005: Access Violation."
if (!m_PropSheet->Create(this
return -1;
// Assign an id to the property sheet window.
::SetDlgCtrlID(m_PropSheet
return 0;
}