CEdit獲取編輯框的內容

2021-07-03 23:46:38 字數 1567 閱讀 5647

cedit

獲取編輯框的內容

大家對獲取編輯框的內容可能已經很熟悉了,無非是先定義乙個cstring型別的變數m_str,然後呼叫getdlgitem(編輯框id)->getwindowtext(str),這樣就可以輕鬆獲取到編輯框的內容。但如果我要設定此編輯框為唯讀模式,要求我們獲取編輯框的內容,那該怎麼辦呢?

我們知道,readonly是cedit的成員變數,顯然定義cstring型別的變數不能完成既定目標。這時我們就必須為編輯框繫結乙個cedit型別的控制項變數m_string。將此編輯框設定為唯讀模式就很簡單了,直接呼叫函式m_string.setreadonly();就可以了。

獲取單行文字相對比較簡單,這裡簡單介紹下,關於獲取多行文字,msdn有詳細介紹,還有例項,大家可以參考下。具體方法如下:

首先,我們定義乙個cstring型別的變數str_data,用來儲存獲取到的編輯框的內容。然後計算編輯框文字的長度,使用cedit的成員函式getline即可得到編輯框的內容,最後要記得釋放字串緩衝區,否則有關cstring的操作將不可用!**如下:

m_string.setreadonly();

cstring str_data;

int len = m_string.linelength();

m_string.getline(0,str_data.getbuffer(len), len);

str_data.releasebuffer(len);

如果想把編輯框的文字轉化為int型,只需呼叫函式atoi,如下所示:

int num = atoi(str_data);

則num中儲存的就是int型的資料。

最後與網友分享兩篇別人總結的相關知識。 1

、cedit獲取一行的文字

cedit

的介面linelength(ncharindex) 的引數並不是指cedit的第幾行,需要通過函式lineindex來進行轉換。

int nindex = 4 ; //

假設要獲取cedit的第4行的文字

int ncharindex = ncharindex = this->lineindex(nindex) ;

int nlen = this->linelength(ncharindex) ;

cstring strtext ;

this->getline(nindex, strtext.getbuffer(nlen), nlen) ;

strtext.releasebuffer() ; 2

、獲取滑鼠雙擊cedit的那行文字

void myedit::onlbuttondblclk(uint nflags, cpoint point)

cstring strtext ;

int ncharindex = this->lineindex(nindex) ;

int nlen = this->linelength(ncharindex) ;

this->getline(nindex, strtext.getbuffer(nlen), nlen) ;

strtext.releasebuffer() ; }

CEdit編輯框透明的實現

只是為了存下來,慢慢研究 實現方法1 直接在對話方塊中 hbrush clogindlg onctlcolor cdc pdc cwnd pwnd uint nctlcolor if nctlcolor ctlcolor static return hbr 如果只是這樣的話,編輯框無法回格刪除,所以...

重繪編輯框CEdit 繼承CEdit方式

編輯框是常用控制項之一,同時也是一種完全自實現較為繁瑣的控制項。本例實現了對編輯框的簡單的自繪製,在保留其自身的強大功能的前提下,實現了編輯框的邊框 背景 文字顏色以及禁用態的各種顏色的替換。要想重繪,我們必須知道要繪什麼。通過觀察預設的編輯框我們可以很清楚的看到編輯框有三個最基礎的部分需要我們繪製...

編輯框CEdit的EN CHANGE通知訊息

編輯框控制項給其父視窗傳送訊息來報告多種輸入事件。在mfc應用程式中使用 on en 訊息對映巨集將這些通知傳遞給了處理函式。當控制項的文字被修改後,編輯框控制項會向其父視窗傳送en change通知訊息。在父視窗中用 on en change 訊息對映巨集來註冊乙個訊息響應函式來處理 en cha...