VC中edit控件的使用(轉)

 原文地址: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();

};

發佈了7 篇原創文章 · 獲贊 4 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章