![]() |
![]() |
![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
To access the contents, click the chapter and section titles.
Fast Track Visual C++ 6.0 Programming
Listing 3.2 TreeViewView.h and TreeViewView.cpp // TreeViewView.h : interface of the CTreeViewView class // ///////////////////////////////////////////////////////////////////////////// #if !defined(AFX_TREEVIEWVIEW_H__093DDFF6_9FB2_11D1_887F_D42B07C10710__INCLUDED_) #define AFX_TREEVIEWVIEW_H__093DDFF6_9FB2_11D1_887F_D42B07C10710__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 class CTreeViewView : public CTreeView { protected: // create from serialization only CTreeViewView(); DECLARE_DYNCREATE(CTreeViewView) HTREEITEM item1; // Attributes public: CTreeViewDoc* GetDocument(); // Operations public: // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CTreeViewView) public: virtual void OnDraw(CDC* pDC); // overridden to draw this view virtual BOOL PreCreateWindow(CREATESTRUCT& cs); protected: virtual void OnInitialUpdate(); // called first time after construct virtual BOOL OnPreparePrinting(CPrintInfo* pInfo); virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo); virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo); //}}AFX_VIRTUAL // Implementation public: virtual ~CTreeViewView(); #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif protected: // Generated message map functions protected: //{{AFX_MSG(CTreeViewView) afx_msg void OnDblclk(NMHDR* pNMHDR, LRESULT* pResult); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; #ifndef _DEBUG // debug version in TreeViewView.cpp inline CTreeViewDoc* CTreeViewView::GetDocument() { return (CTreeViewDoc*)m_pDocument; } #endif ///////////////////////////////////////////////////////////////////////////// //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_TREEVIEWVIEW_H__093DDFF6_9FB2_11D1_887F_D42B07C10710__INCLUDED_) // TreeViewView.cpp : implementation of the CTreeViewView class // #include stdafx.h #include TreeView.h #include TreeViewDoc.h #include TreeViewView.h #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CTreeViewView IMPLEMENT_DYNCREATE(CTreeViewView, CTreeView) BEGIN_MESSAGE_MAP(CTreeViewView, CTreeView) //{{AFX_MSG_MAP(CTreeViewView) ON_NOTIFY_REFLECT(NM_DBLCLK, OnDblclk) //}}AFX_MSG_MAP // Standard printing commands ON_COMMAND(ID_FILE_PRINT, CTreeView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT, CTreeView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW, CTreeView::OnFilePrintPreview) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CTreeViewView construction/destruction CTreeViewView::CTreeViewView() { // TODO: add construction code here } CTreeViewView::~CTreeViewView() { } BOOL CTreeViewView::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return CTreeView::PreCreateWindow(cs); } ///////////////////////////////////////////////////////////////////////////// // CTreeViewView drawing void CTreeViewView::OnDraw(CDC* pDC) { CTreeViewDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here } void CTreeViewView::OnInitialUpdate() { CTreeView::OnInitialUpdate(); // TODO: You may populate your TreeView with items by directly accessing // its tree control through a call to GetTreeCtrl(). HTREEITEM root = GetTreeCtrl().InsertItem(CString(Click Me)); item1 = GetTreeCtrl().InsertItem(CString(Hello), root); GetTreeCtrl().InsertItem(CString(from), root); GetTreeCtrl().InsertItem(CString(tree views!), root); CImageList* pImageList = new CImageList(); pImageList->Create(IDB_BITMAP1, 40, 0, RGB(255, 255, 255)); GetTreeCtrl().SetImageList(pImageList, TVSIL_NORMAL); } ///////////////////////////////////////////////////////////////////////////// // CTreeViewView printing BOOL CTreeViewView::OnPreparePrinting(CPrintInfo* pInfo) { // default preparation return DoPreparePrinting(pInfo); } void CTreeViewView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: add extra initialization before printing } void CTreeViewView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: add cleanup after printing } ///////////////////////////////////////////////////////////////////////////// // CTreeViewView diagnostics #ifdef _DEBUG void CTreeViewView::AssertValid() const { CTreeView::AssertValid(); } void CTreeViewView::Dump(CDumpContext& dc) const { CTreeView::Dump(dc); } CTreeViewDoc* CTreeViewView::GetDocument() // non-debug version is inline { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CTreeViewDoc))); return (CTreeViewDoc*)m_pDocument; } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CTreeViewView message handlers void CTreeViewView::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here if(GetTreeCtrl().GetSelectedItem() == item1){ MessageBox(You clicked the first subitem.); }; *pResult = 0; } Now that weve examined some of our view options, lets look at splitter windows. Splitter WindowsSplitter windows let you divide your view both horizontally and vertically by grasping splitter handles that appear at the top or to the left of the scrollbars and dragging them as you desire. We examine how to put splitters to work next. Although we call this next example SplitterView, and everyone thinks of splitters as a view class, they are really a window class. This means that splitters arent installed through the AppWizard, but by creating a new class with ClassWizard. Create SplitterView now. To make it easy to type something into our view, select CEditView as the view classs base class in AppWizard.
Creating a Splitter Window ClassOpen ClassWizard and click the Add Class button, followed by the New option to open the New Class box, as shown in Figure 3.10. This is where we create our new splitter window class. Give that class the name CSplit and make sure that splitter is selected in the Base class box. Then click OK to create the new class. The next step is to install the new class in our program. Adding Splitter Windows to a ProgramOur new splitter windows are going to take the place of the standard MDI child windows in our document template, so we edit the main application object classs file, SplitterView.cpp. First, we include the Split.h header in that file. // SplitterView.cpp : Defines the class behaviors for the application. // #include stdafx.h #include SplitterView.h #include MainFrm.h #include ChildFrm.h #include SplitterViewDoc.h #include SplitterViewView.h #include Split.h ⇐ . . .
|
![]() |
Products | Contact Us | About Us | Privacy | Ad Info | Home
Use of this site is subject to certain Terms & Conditions, Copyright © 1996-2000 EarthWeb Inc. All rights reserved. Reproduction whole or in part in any form or medium without express written permission of EarthWeb is prohibited. Read EarthWeb's privacy statement. |