medit.h

来自「一个很漂亮的数字时钟程序,你一定会喜欢的.」· C头文件 代码 · 共 85 行

H
85
字号
#ifndef __CmEdit_h__
#define __CmEdit_h__

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

class CmEditChar
{
public:    
	CmEditChar() { m_bStaticChar = FALSE; }
	CmEditChar(CString strChars)
	{
		m_strValids = strChars;
		m_bStaticChar = FALSE;
	}
	CmEditChar(CString strChars, BOOL bStaticChar)
	{
		m_strValids = strChars;
		m_bStaticChar = bStaticChar;
	}
    
	CString m_strValids;
	CString m_strData;
	BOOL    m_bStaticChar;
};

#define  MAX_CHARS  256

class CmEdit : public CEdit
{
public:
	CmEdit();
	virtual ~CmEdit();
	
	BOOL    Init(CString strMask, CString strInitialData = "");
	BOOL    SetPromptChar(CString strPromptChar);
	
	void    SetData(const CString& data);
	CString GetData();
	
	//{{AFX_VIRTUAL(CmEdit)
	protected:
	virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
	//}}AFX_VIRTUAL

protected:
	BOOL            m_bInit;
	CString         m_strPrompt;
	CmEditChar*     m_Char[MAX_CHARS];
	int             m_iNumChars;
	int             m_iCurrentChar;
	BOOL            m_bShiftDown;
	
	BOOL    Parse(const CString& strMask);
	BOOL    SetValidChars(const CString& strMask);
	CString GetRange(CString szLow, CString szHigh);
	// CString GetText(BOOL bDataOnly = FALSE);
	// CString GetData() { return GetText(TRUE); }
	int     FindNextChar(int iStartPos, BOOL bStatic, BOOL bForward);

	//{{AFX_MSG(CmEdit)
	afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
	afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnDestroy();
	afx_msg void OnSetFocus(CWnd* pOldWnd);
	afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
	afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
	afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
	//}}AFX_MSG
	
	DECLARE_MESSAGE_MAP()
	DECLARE_DYNCREATE(CmEdit)
};

void AFXAPI DDX_CmEdit(CDataExchange* pDX, int nIDC, CmEdit& rControl, CString& data);

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

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

#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?