VC中edit控制項使用

2021-05-27 13:37:54 字數 4119 閱讀 8502

setsel(start,end)作用:

定製edit的所選擇內容.間接地可以用於定位游標位置.

使用例子:

exp1:設定游標

cedit*      pedit=(cedit*)getdlgitem(idc_edit1);  

pedit->setsel(2,2);  

pedit->setfocus();

exp2:選擇內容

cedit*      pedit=(cedit*)getdlgitem(idc_edit1);  

pedit->setsel(0,2);//兩個字元  

說明:如果出現游標設定失效的情況,可能是由於以下情況:因為updatedata()的作用也會重置游標,所以用於設定游標時一定要放在updatedata()之後.

如果用於選擇內容:setsel(0,-1)表示全選;setsel(-1,i)表示刪除所有.     

1.怎麼在cedit執行回車換行顯示的功能?

cedit控制項設定want return 屬性 並設定multiline屬性,此時用

cedit* pedit = (cedit*)getdlgitem(idc_edit1);

pedit->setwindowtext("第一\r\n第二\r\n第三");

將顯示3行。

2。作為密碼輸入控制項使用。

m_wndedit4.setpasswordchar('*');

int nlength = m_wndedit4.sendmessage(wm_gettextlength);

m_wndedit4.setsel(nlength, nlength);

m_wndedit4.replacesel( " abc " );

1.如果文字框和變數建立了關聯直接

updatedata(true) //用於獲得文字框中的內容;

updatedata(false) //用於更新文字框的內容並和更新關聯的變數

例如:ddx_text(pdx, idc_edit1, m_sedit1);//把變數m_sedit1與idc_edit1建立聯絡

//讓文字框中顯示「hello」

m_sedit1 = "hello";

updatedata(false);

//獲得文字框的使用者輸入內容

updatedata(true);//如果使用者寫入的是"mingfei",那麼m_sedit1的值應該是"mingfei"

if (m_sedit1 == "mingfei")

2.cstring str;

getdlgitemtext(idc_edit1, str);//獲得文字框中的內容,儲存在str中

setdlgitemtext(idc_edit1, str);//向文字框中寫入str

3.麻煩點,其實就是第二種方法

cedit *edit=(cedit*)getdlgitem(idc_edit1);

cstring dir;

edit->getwindowtext(dir);

(47) 如何限制編輯框中的准許字元

如果使用者在編輯控制項中只允許接收數字,可以使用乙個標準的編輯控制項並指定新的建立標誌es_numbers,它是windows 95新增加的標誌,該標誌限制 編輯控制項只按收數字字元。如果使用者需要複雜的編輯控制項,可以使用microsoft 的遮蔽編輯控制項,它是乙個很有用的ole定製控制項。

如果希望不使用ole 定製控制項自己處理字元,可以派生乙個cedit類並處理wm_char訊息,然後從編輯控制項中過濾出特定的字元。首先,使用classwizard建立乙個 cedit的派生類,其次,在對話類中指定乙個成員變數將編輯控制項分類在oninitdialog 中呼叫cwnd: : subclassdlgitem .

//in your dialog class declaration (.h file )

private : cmyedit m_wndedit // instance of your new edit control .

//in you dialog class implementation (.cpp file )

bool csampledialog : : oninitdialog ( )

使用classwizard處理wm_char訊息,計算nchar參量並決定所執行的操作,使用者可以確定是否修改、傳送字元。下例說明了如何顯示字母字元,如果字元是字母字元,則呼叫cwnd onchar,否則不呼叫onchar.

//only display alphabetic dharacters .

void cmyedit : : onchar (uint nchar , uint nrepcnt , uitn nflags )

如果要修改字元,則不能僅僅簡單地用修改過的nchar呼叫cedit: : onchar,然後cedit: : onchar呼叫cwnd: : default獲取原來的wparam 和lparam 的值,這樣是不行的。要修改乙個字元,需要首先修改nchar,然後用修改過的nchar呼叫cwnd: : defwindowproc。下例說明了如何將字元轉變為大寫:

//make all characters uppercase

void cmyedit : : onchar (uint nchar , uint nrepcnt , uint nflags )

列舉所有字型

logfont lf;

lf.lfcharset = default_charset; // initialize the logfont structure

strcpy(lf.lffacename,"");

cclientdc dc (this);

// enumerate the font families

::enumfontfamilie***((hdc) dc,&lf, (fontenumproc) enumfontfamproc,(lparam) this,0);

//列舉函式

int callback enumfontfamproc(lpenumlogfont lpelf,

lpnewtextmetric lpntm,dword nfonttype,long lparam)

在對話方塊的初始化函式oninitdialog()中新增以下程式:

systemtime st;

getlocaltime(&st);

cstring str_temp;

str_temp.format("%u/%u/%u %u:%u:%u:%u\n", st.wyear, st.wmonth, st.wday, st.whour, st.wminute, st.wsecond, st.wmilliseconds);

cedit* edt = (cedit*)getdlgitem(idc_edit_time);

edt->setwindowtext(str_temp);

用edit box 顯示系統當前時間

在對話方塊的初始化函式oninitdialog()中新增以下程式:

cstring str;

ctime tm;

tm = ctime::getcurrenttime(); //把獲得的當前時間儲存到變數tm中

str = tm.format("%y年%m月%d日 %x");

this->getdlgitem(idc_edit1)->setwindowtext(str);

用edit box 只接受數字輸入:

在對話方塊初始化函式中新增以下**:

cedit* m_edit = (cedit*)getdlgitem(idc_edit1);

long wl = getwindowlong(m_edit->m_hwnd, gwl_style);   //獲得edit box的視窗風格

setwindowlong(m_edit->m_hwnd, gwl_style, wl | es_number); //

設定edit box新風格

自定義edit box的可輸入內容:

過載對話方塊的pretranslatemessage函式,並且新增以下**:

bool clangzidlg::pretranslatemessage(msg* pmsg)}

VC中edit控制項使用

vc中edit控制項使用 setsel start,end 作用 定製edit的所選擇內容.間接地可以用於定位游標位置.使用例子 exp1 設定游標 cedit pedit cedit getdlgitem idc edit1 pedit setsel 2,2 pedit setfocus exp2...

vc中edit控制項使用總結

通過類嚮導可以生成兩種類成員變數,一種是cstring型別,一種是cedit型別。在程式中使用時如果只是簡單的獲取 edit控制項內容,或設定簡單的內容建議使用cstring型別成員變數。示例 cstring m stredit 獲得edit框內容 updatedata true 此時m stred...

VC 之Edit控制項自動換行

vc 中edit控制項中的文字換行標誌是 r n,而不是一般的 n。所以說,如果想在edit控制項中顯示兩行文字,可以使用如下方法 cstring str name r n pedit setwindowtext str 這樣就可以在edit空間中顯示兩行文字。前提是 該edit控制項必須設定為es...