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...