www.pudn.com > Gh0st.rar > InputDlg.h, change:2008-03-24,size:2826b

// PixieLib(TM) Copyright 1997-2005 Paul DiLascia 
// If this code works, it was written by Paul DiLascia. 
// If not, I don't know who wrote it. 
// Compiles with Visual Studio.NET 7.1 or greater. Set tabsize=3. 
// Helper class to build a dialog template in memory. Only supports what's 
// needed for CStringDialog. 
class CDlgTemplateBuilder { 
	WORD* m_pBuffer;							 // internal buffer holds dialog template 
	WORD* m_pNext;								 // next WORD to copy stuff 
	WORD* m_pEndBuf;							 // end of buffer 
	// align ptr to nearest DWORD 
	WORD* AlignDWORD(WORD* ptr) { 
		ptr++;									 // round up to nearest DWORD 
		LPARAM lp = (LPARAM)ptr;			 // convert to long 
		lp &= 0xFFFFFFFC;						 // make sure on DWORD boundary 
		return (WORD*)lp; 
	void AddItemTemplate(WORD wType, DWORD dwStyle, const CRect& rc, 
		WORD nID, DWORD dwStyleEx); 
	// Windows predefined atom names 
	CDlgTemplateBuilder(UINT nBufLen=1024); 
	DLGTEMPLATE* GetTemplate() { return (DLGTEMPLATE*)m_pBuffer; } 
	// functions to build the template 
	DLGTEMPLATE* Begin(DWORD dwStyle, const CRect& rc, LPCTSTR caption, DWORD dwStyleEx=0); 
	WORD* AddText(WORD* buf, LPCTSTR text); 
	void AddItem(WORD wType, DWORD dwStyle, const CRect& rc, 
		LPCTSTR text, WORD nID=-1, DWORD dwStyleEx=0); 
	void AddItem(WORD wType, DWORD dwStyle, const CRect& rc, 
		WORD nResID, WORD nID=-1, DWORD dwStyleEx=0); 
// Class to implement a simple string input dialog. Kind of like MessageBox 
// but it accepts a single string input from user. You provide the prompt. To 
// use: 
//		CStringDialog dlg;						// string dialog 
//		dlg.m_bRequired = m_bRequired;		// if string is required 
//		dlg.Init(_T("Title"), _T("Enter a string:"), this, IDI_QUESTION); 
//		dlg.DoModal();								// run dialog 
//		CString result = dlg.m_str;			// whatever the user typed 
class CInputDialog : public CDialog { 
	CString	m_str;							 // the string returned [in,out] 
	BOOL		m_bRequired;					 // string required? 
	HICON		m_hIcon;							 // icon if not supplied 
	CInputDialog() { } 
	~CInputDialog() { } 
	// Call this to create the template with given caption and prompt. 
	BOOL Init(LPCTSTR caption, LPCTSTR prompt, CWnd* pParent=NULL, 
	CDlgTemplateBuilder m_dtb;				 // place to build/hold the dialog template 
	enum { IDICON=1, IDEDIT };				 // control IDs 
	// MFC virtual overrides 
	virtual BOOL OnInitDialog(); 
	virtual void OnOK(); 
	virtual void DoDataExchange(CDataExchange* pDX) 
		DDX_Text(pDX, IDEDIT, m_str);