Click here to Skip to main content
15,886,788 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 530.8K   12.1K   201  
An application/add-in to organise and renumber resource symbol IDs
/////////////////////////////////////////////////////////////////////////////
// BXFileDialog.h : header file
// 
// Windows 2000 / Office 2000 style file dialog.
// 
// This WILL work on Win 95 / 98 / NT 4 / NT 5 (2000) / WinME
// 
/////////////////////////////////////////////////////////////////////////////

#if !defined(__BXFileDialog_H__)
#define __BXFileDialog_H__

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

// for backward compatability:
#define COffice2KDlg BXFileDialog
#define BXOffice2kDlg BXFileDialog

/////////////////////////////////////////////////////////////////////////////
// BXFileDialog dialog
#include "BXCoolBtn.h"
#include "BXSelBtn.h"

#define ID_START			34220
#define ID_END				34250

extern BOOL bDotNetUI;

/////////////////////////////////////////////////////////////////////////////
// BXFileEdit window

class BXFileEdit : public CEdit
{
// Construction
public:
	BXFileEdit();

// Implementation
public:
	virtual ~BXFileEdit();

	// Generated message map functions
protected:
	//{{AFX_MSG(BXFileEdit)
	afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
	//}}AFX_MSG

	DECLARE_MESSAGE_MAP()
};

class BXFILEDLG_EXT_CLASS BXFileDialog : public CFileDialog
{
	DECLARE_DYNAMIC(BXFileDialog)

public:
	CListCtrl* GetListCtrl();
	void SetListCtrlView(DWORD dwNewStyle);
	enum eAppearance
	{
		APPEARANCE_DEFAULT = 0,
		APPEARANCE_VSDOTNET,

		NUM_APPEARANCES
	};
	
	virtual ~BXFileDialog();

	BOOL DrawImage(CDC*    pDC,					//Device context
               CString csFile,					//Pathname to image file
               CPoint  ptCenter,				//Center point for image
               HWND    hWnd,					//Handle to view window
               CRect   rectImage);				//Display area rectangle

	BOOL LoadPictureFile(LPCTSTR szFile,		//Image file pathname
                     LPPICTURE* pgpPicture);	//Ptr to PICTURE for image

	BOOL ResolveShortcut(CString& strFile);
	void CenterWindowOnOwner(CWnd *pWndToCenterOn);
	void OnMyOk(UINT nID);
	void DoPopupHelp(CString strString, CPoint pt);
	void DoPopupHelp(int nID, CPoint pt);
	void SetAppearance(eAppearance eApp = eAppearance::APPEARANCE_DEFAULT);
	
	void SetActiveButton(BXSelBtn *btn);
	BXFileDialog(BOOL bOpenFileDialog = TRUE,
		BOOL bPreview = FALSE,
		BOOL m_bSizing = TRUE,
		LPCTSTR lpszDefExt = NULL,
		LPCTSTR lpszFileName = NULL,
		DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
		LPCTSTR lpszFilter = NULL,
		CWnd* pParentWnd = NULL);

	void SetSpecialDirectory(int nFolder);
	
	BXCoolBtn		m_btn;

	BXSelBtn*		m_pCurrent;
	BXSelBtn		m_btnHistory;
	BXSelBtn		m_btnPersonal;
	BXSelBtn		m_btnDeskTop;
	BXSelBtn		m_btnFavourites;
	BXSelBtn		m_btnWebFolders;

	CImageList		m_IL;

	BXFileEdit		m_edtFile;

	static BOOL		m_bClear;
	static TCHAR	m_szFile[MAX_PATH];

	int				m_btnHeight;
	int				m_nPreviewBoxWidth;
	int				m_SBWidth;
	
	CString			m_csFileName;
	CString			m_strPreviewPath;
	
	CButton			checkBox;
	CButton			m_ToolbarBtn;
	
	CRect			PreviewRect;
	
	BOOL			m_bCanResize;
	BOOL			m_IsOpen;
	BOOL			m_bPreview;
	BOOL			m_bShowPreview;
	BOOL			m_bSizing;
	bool			m_bFirst;
	
	eAppearance		m_eAppearance;

private:

	BXSelBtn* GetActiveButton();

protected:
	//{{AFX_MSG(BXFileDialog)
	afx_msg void OnClickedPreview();
	afx_msg void OnShowPreview();
	afx_msg void OnPaint();

	virtual BOOL OnInitDialog();
	virtual void OnOk();
	afx_msg void OnSize(UINT nType, int cx, int cy);
	afx_msg BOOL OnHelpInfo(HELPINFO* pHelpInfo);
	//}}AFX_MSG

	virtual void OnFileNameChange();
	virtual void OnFolderChange();
	virtual void OnFileTypeChange(DWORD dwNewFilterIndex);

	afx_msg void OnHistoryClicked();
	afx_msg void OnPersonalClicked();
	afx_msg void OnDesktopClicked();
	afx_msg void OnFavoritesClicked();
	afx_msg void OnWebFoldersClicked();
	
	BOOL OnNotify( WPARAM wParam, LPARAM lParam, LRESULT* pResult );
	void InitialReSize(int x, int y, int cx, int cy);
	void ReSize(int x, int y, int cx, int cy);

	DECLARE_MESSAGE_MAP()
};



/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(__BXFileDialog_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