vc Edit Box 使用方法詳解和小例項

2021-06-27 00:26:32 字數 4124 閱讀 4355

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)}

armlink使用方法詳解

一 基本術語 在介紹armlink的使用方法之前,先介紹要涉及到的一些術語。1 映像檔案 image 是指乙個可執行檔案,在執行的時候被載入到處理器中。乙個映像檔案有多個執行緒。它是elf executable and linking format 格式的。段 section 描述映像檔案的 或資料...

JS event使用方法詳解

event代表事件的狀態,例如觸發event物件的元素 滑鼠的位置及狀態 按下的鍵等等。event物件只在事件發生的過程中才有效。event的某些屬性只對特定的事件有意義。比如,fromelement 和 toelement 屬性只對 onmouseover 和 onmouseout 事件有意義。下...

bitset詳解 使用方法

關於bitset的一些測試 保留一下免得以後忘記 建構函式 bitsetb b有n位,每位都為0.引數n可以為乙個表示式.如bitset 5 b0 則 b0 為 00000 bitsetb unsigned long u b有n位,並用u賦值 如果u超過n位,則頂端被截除 如 bitset 5 b0...