Click here to Skip to main content
15,860,861 members
Articles / Desktop Programming / MFC

Resource ID Organiser Add-In for Visual C++ 5.0/6.0/.NET

Rate me:
Please Sign up or sign in to vote.
4.98/5 (71 votes)
10 Jan 2005CPOL25 min read 527.5K   12.1K   201  
An application/add-in to organise and renumber resource symbol IDs
#if !defined(__NGDialog_H__)
#define __NGDialog_H__
/************************************************************************
 *
 *                   Extended dialog classes
 *
 *    Written by Anna Metcalfe (code@annasplace.me.uk)
 *
 ************************************************************************
 *                                                                       
 *  Filename    : NGDialog.h
 *
 *  Compiler    : Microsoft Visual C++ 6.0, Service Pack 3 or later
 *                Microsoft Visual C++.NET
 *                                                                       
 *  Target                                                               
 *  Environment : Win98/Me/NT/2000/XP
 *
 *  NOTE:
 *
 *    Your are free to use this code in your own products, PROVIDED
 *    this notice is not removed or modified.
 *
 ************************************************************************/

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

// NGDialog.h : header file
//


/////////////////////////////////////////////////////////////////////////////
// Classes declared in this file

class CNGDialog;
class CNGPropertyPage;
class CNGPropertySheet;


/////////////////////////////////////////////////////////////////////////////
// CNGDialog dialog


#define	CNGDialog_BASE						CDialog

class NGLIB_EXT_CLASS CNGDialog : public	CDialog
{
			DECLARE_DYNAMIC(CNGDialog);

// Construction
public:
			CNGDialog(UINT uID = 0, CWnd* pParentWnd = NULL);

	virtual	~CNGDialog(void);

// Attributes
public:
			CObject*				m_pServer;
			CDocument*				m_pDoc;
			BOOL					m_bModified;

			CRect					m_rectInitialPosition;
			CRect					m_rectPosition;

// Dialog Data
	//{{AFX_DATA(CNGDialog)
	//}}AFX_DATA


// Operations
public:
			BOOL					SetServer(CObject* pServer);
			BOOL					SetDocument(CDocument* pDocument);
			void					SetModified(BOOL bChanged = TRUE);
			BOOL					EnableDlgControl(UINT nID, BOOL bEnable);
			BOOL					ShowDlgControl(UINT nID, BOOL bShow);
			BOOL					SetReadOnly(UINT uID, BOOL bReadOnly = TRUE);
			BOOL					UpdateData(BOOL bSaveAndValidate = TRUE);

protected:


// Overrides
	// ClassWizard generate virtual function overrides
	//{{AFX_VIRTUAL(CNGDialog)
	protected:
	virtual void					DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	virtual BOOL					OnCommand(WPARAM wParam, LPARAM lParam);
	virtual	void					OnOK(void);
	virtual BOOL					OnInitDialog(void);
		//}}AFX_VIRTUAL

public:
	virtual void					OnInitData(void);

protected:
	virtual	BOOL					OnCtrlValueChanging(UINT uCtrlID, HWND hWnd, int nCode);


// Implementation
protected:
			bool					m_bLockCtrlUpdates;

			void					SetInitialPosition(void);


	// Generated message map functions
	//{{AFX_MSG(CNGDialog)
	afx_msg void					OnMove(int x, int y);
	afx_msg	BOOL					OnHelpInfo(HELPINFO* pHelpInfo);
	afx_msg	void					OnContextMenu(CWnd* pWnd, CPoint point);
	//}}AFX_MSG

	DECLARE_MESSAGE_MAP()

};


// CPropertySheetEx and CPropertyPageEx are depreciated in Visual C++ .NET 2002
//
// Thanks to Thorir Sandholt for pointing this out.
//
#if _MFC_VER >= 0x0700
	#define	CNGPropertyPage_BASE	CPropertyPage		// Visual C++ .NET 2002
#else
	#define	CNGPropertyPage_BASE	CPropertyPageEx		// Visual C++ 6.0
#endif


class NGLIB_EXT_CLASS CNGPropertyPage : public	CNGPropertyPage_BASE
{
			DECLARE_DYNAMIC(CNGPropertyPage)

// Construction
public:
			CNGPropertyPage(	UINT uID = 0,
								UINT uIDCaption = 0,
								UINT uTitleID = 0,
								UINT uSubtitleID = 0);

			CNGPropertyPage(	LPCTSTR pszCaption,
								UINT uIDCaption = 0,
								UINT uTitleID = 0,
								UINT uSubtitleID = 0);

	virtual	~CNGPropertyPage(void);


protected:
// Dialog Data
	//{{AFX_DATA(CNGPropertyPage)
	//}}AFX_DATA
			CObject*				m_pObject;		// obsolete
			CObject*				m_pServer;
			CDocument*				m_pDoc;
			BOOL					m_bModified;


// Operations
public:
			BOOL					SetObject(CObject* pObject);					// obsolete
			BOOL					SetServer(CObject* pServer);
			BOOL					SetDocument(CDocument* pDocument);
			void					SetModified(BOOL bChanged = TRUE);
			BOOL					EnableDlgControl(UINT nID, BOOL bEnable);
			BOOL					ShowDlgControl(UINT nID, BOOL bShow);
			BOOL					SetReadOnly(UINT uID, BOOL bReadOnly = TRUE);
			BOOL					UpdateData(BOOL bSaveAndValidate = TRUE);

protected:


// Overrides
	// ClassWizard generate virtual function overrides
	//{{AFX_VIRTUAL(CNGPropertyPage)
	protected:
	virtual void					DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	virtual BOOL					OnCommand(WPARAM wParam, LPARAM lParam);
	virtual	BOOL					OnSetActive(void);
	virtual	BOOL					OnKillActive(void);
	virtual BOOL					OnInitDialog(void);
	virtual	BOOL					OnApply(void);
	//}}AFX_VIRTUAL

public:
	virtual void					OnInitData(void);

protected:
	virtual	BOOL					OnCtrlValueChanging(UINT uCtrlID, HWND hWnd, int nCode);


// Implementation
protected:
			bool					m_bLockCtrlUpdates;

	// Generated message map functions
	//{{AFX_MSG(CNGPropertyPage)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()

};


/////////////////////////////////////////////////////////////////////////////
// CNGPropertySheet

// CPropertySheetEx and CPropertyPageEx are depreciated in Visual C++ .NET 2002
//
// Thanks to Thorir Sandholt for pointing this out.
//
#if _MFC_VER >= 0x0700
	#define	CNGPropertySheet_BASE	CPropertySheet		// Visual C++ .NET 2002
#else
	#define	CNGPropertySheet_BASE	CPropertySheetEx	// Visual C++ 6.0
#endif


class NGLIB_EXT_CLASS CNGPropertySheet : public CNGPropertySheet_BASE
{
			DECLARE_DYNAMIC(CNGPropertySheet)

// Construction
public:
			CNGPropertySheet(UINT nIDCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0);

			CNGPropertySheet(LPCTSTR pszCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0);

	virtual ~CNGPropertySheet(void);

// Attributes
public:
			CRect					m_rectInitialPosition;
			CRect					m_rectPosition;


// Operations
public:
			BOOL					EnableDlgControl(UINT uID, BOOL bEnable);
			BOOL					ShowDlgControl(UINT uID, BOOL bShow);
			BOOL					UpdateData(BOOL bSaveAndValidate = TRUE);

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CNGPropertySheet)
	public:
	virtual BOOL					OnInitDialog(void);
	virtual BOOL					OnCommand(WPARAM wParam, LPARAM lParam);
	//}}AFX_VIRTUAL

	virtual	void					OnSetActive(CPropertyPage* pPage);
	virtual	void					OnKillActive(CPropertyPage* pPage);

// Implementation
protected:
			void					SetInitialPosition(void);


	// Generated message map functions
protected:
	//{{AFX_MSG(CNGPropertySheet)
	afx_msg void					OnMove(int x, int y);
	afx_msg	BOOL					OnHelpInfo(HELPINFO* pHelpInfo);
	afx_msg	void					OnContextMenu(CWnd* pWnd, CPoint point);
	//}}AFX_MSG

	DECLARE_MESSAGE_MAP()
};


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

#endif // !defined(__NGDialog_H__)

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
Founder Riverblade Limited
United Kingdom United Kingdom
I haven't always written software for a living. When I graduated from Surrey University in 1989, it was with an Electronic Engineering degree, but unfortunately that never really gave me the opportunity to do anything particularly interesting (with the possible exception of designing Darth Vader's Codpiece * for the UK Army in 1990).
    * Also known as the Standard Army Bootswitch. But that's another story...
Since the opportunity arose to lead a software team developing C++ software for Avionic Test Systems in 1996, I've not looked back. More recently I've been involved in the development of subsea acoustic navigation systems, digital TV broadcast systems, port security/tracking systems, and most recently software development tools with my own company, Riverblade Ltd.

One of my personal specialities is IDE plug-in development. ResOrg was my first attempt at a plug-in, but my day to day work is with Visual Lint, an interactive code analysis tool environment with works within the Visual Studio and Eclipse IDEs or on build servers.

I love lots of things, but particularly music, photography and anything connected with history or engineering. I despise ignorant, intolerant and obstructive people - and it shows...I can be a bolshy cow if you wind me up the wrong way...Laugh | :laugh:

I'm currently based 15 minutes walk from the beach in Bournemouth on the south coast of England. Since I moved here I've grown to love the place - even if it is full of grockles in Summer!

Comments and Discussions