Click here to Skip to main content
15,897,704 members
Articles / Desktop Programming / MFC

The Ultimate Toolbox Home Page

Rate me:
Please Sign up or sign in to vote.
4.97/5 (141 votes)
25 Aug 2007CPOL13 min read 3.2M   91.4K   476  
The Ultimate Toolbox is now Open Source
// MainFrm.h : interface of the CMainFrame class
//
/////////////////////////////////////////////////////////////////////////////

#if !defined(AFX_MAINFRM_H__D2552D12_7143_11D1_A3D5_0080C83F712F__INCLUDED_)
#define AFX_MAINFRM_H__D2552D12_7143_11D1_A3D5_0080C83F712F__INCLUDED_

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000

#include "TreeFilesDlg.h"
#include "DIBManagerDoc.h"

#include "OXFrameWndDock.h"
#include "OXSizeToolBar.h"
#include "OXSizeDlgBar.h"
#include "OXSizeDockBar.h"
#include "OXBitmapMenuOrganizer.h"
#include "xstatus4.h"

#include "OXCoolToolBar.h"
#include "OXCoolBar.h"

#include "OXCaptionPainter.h"
#include "OXTabClientWnd.h"
#include "OXMenuBar.h"

class CMainFrame : public COXMenuBarFrame<COXMDIFrameWndSizeDock,COXSizeDockBar>
{
	DECLARE_DYNAMIC(CMainFrame)
public:
	CMainFrame();

// Attributes
public:
//	CButtonsPaneDlg m_ButtonsPaneBar;
	// TreeFilesDlg - dialog with tree control to show all opened window
	CTreeFilesDlg m_TreeFilesBar;
	// special statusbar with progressbar
	COXStatusBar  m_wndStatusBar;

	// defines if roll-up ZoomLevel Dialog is active
	BOOL m_bShowZoomLevelDlg;

// Operations
public:
	void LoadWorkspace();
	void SaveWorkspace();

	BOOL IniProgress(WORD nToDo, WORD nStep=1);
	void ShowProgress();
	void ResetProgress();
	void GetNumColors();

	void CreateDocumentFromOpenedFile(CString sFileName, 
		CDIBManagerDoc::TypeFile tf=CDIBManagerDoc::TF_DIB);
	void CreateDocumentFromOpenedFile(CFile* pFile, CString sFileName, 
		CDIBManagerDoc::TypeFile tf=CDIBManagerDoc::TF_JPEG); 
	BOOL CheckFileAlreadyOpened(CString sFileName, BOOL bNotify);
// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CMainFrame)
	public:
	virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
	//}}AFX_VIRTUAL

// Implementation
public:
	virtual ~CMainFrame();
#ifdef _DEBUG
	virtual void AssertValid() const;
	virtual void Dump(CDumpContext& dc) const;
#endif

protected:  // control bar embedded members
	COXCaptionPainter m_Caption;
	COXCoolToolBar m_wndToolBar;
//	COXCoolToolBar m_wndToolBar1;
//	COXCoolBar m_wndCoolBar;
	// to show bitmaps in menu
	COXBitmapMenuOrganizer Organizer;
	// to trace the progress of some process
	// tightly tied witn mainframe and statusbar window
	class CShowProgress* m_pShowProgress;

	// MTI client window
	COXTabClientWnd m_MTIClientWnd;

// Generated message map functions
protected:
	//{{AFX_MSG(CMainFrame)
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnClose();
	afx_msg BOOL OnQueryNewPalette();
    afx_msg void OnPaletteChanged(CWnd*);
	afx_msg void OnWindowSynchronize();
	afx_msg void OnUpdateWindowSynchronize(CCmdUI* pCmdUI);
	afx_msg void OnUpdateFileSave(CCmdUI* pCmdUI);
	afx_msg void OnUpdateZoom(CCmdUI* pCmdUI);
	afx_msg void OnUpdateSize(CCmdUI* pCmdUI);
	afx_msg void OnUpdateParameters(CCmdUI* pCmdUI);
	afx_msg void OnFileImport();
	afx_msg void OnUpdateFileProtected(CCmdUI* pCmdUI);
	afx_msg void OnUpdateViewZoomLevelDlg(CCmdUI* pCmdUI);
	afx_msg void OnHandleDummy();
	//}}AFX_MSG
	afx_msg BOOL OnRollupMessage(CWnd* pWndRollup,UINT message,UINT rollupID);
	afx_msg void OnDropDown(NMHDR* pNotifyStruct, LRESULT* pResult);
	DECLARE_MESSAGE_MAP()
};

// Progress Class to iterates step of working of some cycle process 
// and showing it in progress bar of COXStatusBar control
class CShowProgress
{
public:
	CShowProgress() {}
	CShowProgress(CMainFrame* pMainFrame, WORD nProgressIndex) 
	{ 
		m_pMainFrame=pMainFrame; 
		m_nProgressIndex=nProgressIndex; 
	}
	~CShowProgress() {}

protected:
	// the size of step
	UINT m_nStep;
	// iterator within 0 to m_nStep-1
	UINT m_nStepIterator;
	// steps done
	UINT m_nDone;
	// steps to do
	UINT m_nToDo;

	// index of progressbar pane in statusbar
	UINT m_nProgressIndex;
	// owner window
	CMainFrame* m_pMainFrame;

public:
	void SetStep(UINT nStep) { m_nStep=nStep; }
	void SetStepIterator(UINT nStepIterator) { m_nStepIterator=nStepIterator; }
	void SetDone(UINT nDone) { m_nDone=nDone; }
	void SetToDo(UINT nToDo) { m_nToDo=nToDo; }
	void Initialize(UINT nToDo, UINT nStep=1)
	{
		SetStep(nStep);
		SetToDo(nToDo/nStep);
		SetStepIterator(0);
		SetDone(0);
		m_pMainFrame->m_wndStatusBar.ResetBar(m_nProgressIndex);
	}
	void Reset()
	{
		SetStep(0);
		SetToDo(0);
		SetStepIterator(0);
		SetDone(0);
		m_pMainFrame->m_wndStatusBar.ResetBar(m_nProgressIndex);
	}
	void Iterate()
	{
		m_nStepIterator++;
		if(m_nStepIterator==m_nStep)
		{
			SetStepIterator(0);
			m_nDone++;
			DWORD wPercent=((DWORD)m_nDone*(DWORD)100)/(DWORD)m_nToDo;
			if(wPercent>100)
			{
				wPercent=100;
			}
			m_pMainFrame->m_wndStatusBar.
				SetBarProgress(m_nProgressIndex,TRUE,100,wPercent);
		}
	}
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_MAINFRM_H__D2552D12_7143_11D1_A3D5_0080C83F712F__INCLUDED_)


By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Web Developer
Canada Canada
In January 2005, David Cunningham and Chris Maunder created TheUltimateToolbox.com, a new group dedicated to the continued development, support and growth of Dundas Software’s award winning line of MFC, C++ and ActiveX control products.

Ultimate Grid for MFC, Ultimate Toolbox for MFC, and Ultimate TCP/IP have been stalwarts of C++/MFC development for a decade. Thousands of developers have used these products to speed their time to market, improve the quality of their finished products, and enhance the reliability and flexibility of their software.
This is a Organisation

476 members

Comments and Discussions