|
|
|
|
Forum
Please
Log In
to post a new message or reply to an existing one. If you are not registered, please
register.
NOTE: Some forums may be read-only if you are not currently subscribed to
our technical support services.
Subject |
Author |
Date |
|
Jase Wolfe
|
Aug 7, 2007 - 8:53 AM
|
I have a mainframe with a splitter window and 2 CFormView representing the panes in the splitter. The CFormView panes are created dynamically with the splitter CreateView function. How would I add anchors to these CFormViews (they are dialog resources with base class CFormView with templates applied)
Here is the code for one of the formviews:
// Header #pragma once #include "extbutton.h"
// CFormRight form view
class CFormRight : public CExtWA < CExtWS < CExtAFV < CFormView > > > { DECLARE_DYNCREATE(CFormRight)
protected: CFormRight(); // protected constructor used by dynamic creation virtual ~CFormRight();
public: enum { IDD = IDD_FORM_RIGHT }; #ifdef _DEBUG virtual void AssertValid() const; #ifndef _WIN32_WCE virtual void Dump(CDumpContext& dc) const; #endif #endif
protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
DECLARE_MESSAGE_MAP() CExtButton m_btnCancel; CExtButton m_btnOK; public: virtual void OnInitialUpdate(); };
// Implementation // FormRight.cpp : implementation file //
#include "stdafx.h" #include "ProfUIS_Split.h" #include "FormRight.h"
// CFormRight
IMPLEMENT_DYNCREATE(CFormRight, CFormView)
CFormRight::CFormRight() : CExtWA < CExtWS < CExtAFV < CFormView > > > ( CFormRight::IDD, ((CWnd *)NULL) ) {
}
CFormRight::~CFormRight() { }
void CFormRight::DoDataExchange(CDataExchange* pDX) { CFormView::DoDataExchange(pDX); DDX_Control(pDX, IDCANCEL, m_btnCancel); DDX_Control(pDX, IDOK, m_btnOK); }
BEGIN_MESSAGE_MAP(CFormRight, CFormView)
END_MESSAGE_MAP()
// CFormRight diagnostics
#ifdef _DEBUG void CFormRight::AssertValid() const { CFormView::AssertValid(); }
#ifndef _WIN32_WCE void CFormRight::Dump(CDumpContext& dc) const { CFormView::Dump(dc); } #endif #endif //_DEBUG
// CFormRight message handlers
void CFormRight::OnInitialUpdate() { CExtWA<CExtWS<CExtAFV<CFormView> > >::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class
ShowSizeGrip( FALSE );
//AddAnchor( IDOK, CPoint( 100, 100 ), CPoint( 100, 100 )); }
|
|
Technical Support
|
Aug 8, 2007 - 10:02 AM
|
Unfortunately the anchoring feature provided by the CExtWA template class and the scrolling feature provided by MFC’s form view are not compatible with each other. We would like to provide you with two possible solutions here:
1) Disable scrolling in your form views. If it is acceptable for you, then you should handle the WM_HSCROLL , WM_VSCROLL and WM_SIZE messages in your form view class and invoke the CWnd::On***() parent class method instead of the CExtWA < CExtWS < CExtAFV < CFormView > > >::On***() nearest parent class method.
2) Replace each form view with a container window and CExtResizableDialog resizable dialog window inside this container. The CExtResizableDialog class is also based on CExtWA template class and supports anchoring. The container window should display scroll bars and scroll the child dialog if the size of this container window is less than the initial dialog size. Otherwise the container window should stretch its children dialog window to cover the entire container’s client area and allow the dialog to apply its anchoring rules. This is preferable solution (it will use Prof-UIS skinned scrollbars and themed dialog background will be compatible with scrolling) but you will have to modify your source code by removing the form view and adding resizable dialog and container. This sample application contains a ready-to-use scrollable container class which you can move into your project without any changes.
|
|
Timofey Smirnov
|
Jun 2, 2008 - 4:18 AM
|
How to change appearing of scrollbars(if the size of this container window is less than the initial dialog size) to fixed size(user can’t resize less than initial dialog size) of container in TestScrollDialog.zip sample?
|
|
Technical Support
|
Jun 3, 2008 - 4:39 AM
|
You don’t need a scrollable dialog container at all if the dialog inside it can be resized to of a smaller size. You should simply use a CExtResizableDialog window without any scrollable container. If the dialog is a child window, its resizing is not limited. If this dialog is a popup window (modal or not), you can invoke its SetMinTrackSize() method to specify the minimum limit less than the initial dialog size.
|
|
Suhai Gyorgy
|
Aug 8, 2007 - 1:23 AM
|
|
|