原文地址:http://hi.baidu.com/whyspai/blog/item/b79cd0bf7c0ea20c18d81f3d.html
通過類嚮導可以生成兩種類成員變量,一種是cstring類型,一種是cedit類型。
在程序中使用時如果只是簡單的獲取 edit控件內容,或設置簡單的內容建議使用cstring類型成員變量。
示例:
CString m_strEdit;
//獲得edit框內容
UpdateData(TRUE);
此時m_strEdit就是edit框內容的字符串變量。
//要更新edit的話只要對m_strEdit進行賦值然後
UpdataData(FALSE);//即可
如果是一些對edit框的複雜操作建議用cedit類型。
示例:
CEdit m_ctrlEdit;
//將光標移到開頭
m_ctrlEdit.SetSel(0,0);
//將光標移到末尾
m_ctrlEdit.SetSel(-1);
//選中所有內容
m_ctrlEdit.SetSel(0,-1);
//寫入值
m_ctrlEdit.ReplaceSel("替換內容");
//得到當前edit框中的所有字符數
int iStart,iCount;//iCount 爲字符數
m_ctrlEdit.SetSel(0,-1);
m_ctrlEdit.GetSel(iStart,iCount);
還一種可以直接用控件的id值來進行操作
示例:
(CEdit*)GetDlgItem(IDC_EDIT)
他類似於上邊的m_ctrlEdit
這樣寫的好處是可以在消息傳遞中使用,便於不同窗口間傳遞edit內容
例如:下面的消息響應函數中
SetEditContent(WPARAM wPARAM, LPARAM lPARAM)
IDC_EDIT可以通過wPARAM傳遞近來,而字符傳內容可以直接通過lPARAM傳遞近來
CString Msg="要傳遞的消息";
::SendMessage(m_hParent,WM_SENDMSG_EDIT,(WPARAM) IDC_EDIT, (LPARAM)(LPSTR)(LPCTSTR)Msg)
如:
((CEdit*)GetDlgItem(wPARAM))->SetSel(-1);
((CEdit*)GetDlgItem(wPARAM))->ReplaceSel((LPCSTR)lPARAM);
MFC中提供的CEdit 的接口函數如下:
class CEdit : public CWnd
{
DECLARE_DYNAMIC(CEdit)
// Constructors
public:
CEdit();
BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
// Attributes
BOOL CanUndo() const;
int GetLineCount() const;
BOOL GetModify() const;
void SetModify(BOOL bModified = TRUE);
void GetRect(LPRECT lpRect) const;
DWORD GetSel() const;
void GetSel(int& nStartChar, int& nEndChar) const;
HLOCAL GetHandle() const;
void SetHandle(HLOCAL hBuffer);
#if (WINVER >= 0x400)
void SetMargins(UINT nLeft, UINT nRight);
DWORD GetMargins() const;
void SetLimitText(UINT nMax);
UINT GetLimitText() const;
CPoint PosFromChar(UINT nChar) const;
int CharFromPos(CPoint pt) const;
#endif
// NOTE: first word in lpszBuffer must contain the size of the buffer!
int GetLine(int nIndex, LPTSTR lpszBuffer) const;
int GetLine(int nIndex, LPTSTR lpszBuffer, int nMaxLength) const;
// Operations
void EmptyUndoBuffer();
BOOL FmtLines(BOOL bAddEOL);
void LimitText(int nChars = 0);
int LineFromChar(int nIndex = -1) const;
int LineIndex(int nLine = -1) const;
int LineLength(int nLine = -1) const;
void LineScroll(int nLines, int nChars = 0);
void ReplaceSel(LPCTSTR lpszNewText, BOOL bCanUndo = FALSE);
void SetPasswordChar(TCHAR ch);
void SetRect(LPCRECT lpRect);
void SetRectNP(LPCRECT lpRect);
void SetSel(DWORD dwSelection, BOOL bNoScroll = FALSE);
void SetSel(int nStartChar, int nEndChar, BOOL bNoScroll = FALSE);
BOOL SetTabStops(int nTabStops, LPINT rgTabStops);
void SetTabStops();
BOOL SetTabStops(const int& cxEachStop); // takes an 'int'
// Clipboard operations
BOOL Undo();
void Clear();
void Copy();
void Cut();
void Paste();
BOOL SetReadOnly(BOOL bReadOnly = TRUE);
int GetFirstVisibleLine() const;
TCHAR GetPasswordChar() const;
// Implementation
public:
virtual ~CEdit();
};