Tài liệu Visual C-019 Sử dụng RichEditCtrl ppt

5 271 0
Tài liệu Visual C-019 Sử dụng RichEditCtrl ppt

Đang tải... (xem toàn văn)

Thông tin tài liệu

S DNG RICHEDIT CONTROL Vn Chí Nam – Nguyn c Hoàng H Khoa Công ngh Thông tin, Trng H KHTN TP.HCM ( vcnam@fit.hcmuns.edu.vn, ndhha@fit.hcmuns.edu.vn) Phiên bn cp nht ngày 16/05/2005 RichEdit control là gì ? RichEdit control là mt loi control chun ca Windows, dùng cho vic nhp liu hay hin th các đon vn bn lên dialog. RichEdit control khá ging vi Edit control. im đc bit ca RichEdit control so vi Edit control là : RichEdit control cho phép thit lp tng đnh dng riêng bit trên đn v tng ký t trong control (tc là đi vi mi ký t trong RichEdit control, chúng ta có th thit lp các đnh dng màu, c ch, kiu ch… ) trong khi đi vi Edit control chúng ta ch có th có mt thit lp duy nht đi vi toàn control (không th thit lp đnh dng cho tng ký t riêng l). Lu ý khi s dng RichEdit control Khi s dng RichEdit control trong mt chng trình nào đó, có mt hàm quan trng nu chúng ta quên s dng hay đt hàm đó sai v trí thì s dn đn vic chng trình không th thc thi đc. Do đó : NH DÙNG HÀM AfxInitRichEdit() KHI S DNG RICHEDIT CONTROL VÀ T NÓ TRONG HÀM InitInstance() TRONG C App() Ví d : BOOL CRECDemoApp::InitInstance() { AfxInitRichEdit();//Quan trng CRECDemoDlg dlg; m_pMainWnd = &dlg; int nResponse = dlg.DoModal(); if (nResponse == IDOK) { } else if (nResponse == IDCANCEL) { // TODO: Place code here to handle when the dialog is // dismissed with Cancel } return FALSE; } Mt s lu ý khác o Hin th đc nhiu dòng trong RichEdit control, check Styles\M ultiline. o Hin th scroll, check vào Styles\Horiz ontal scroll,… o S dng đc phím Enter trong RichEdit control, check vào Styles\Want return. o Không b git màn hình khi đnh dng lng ln ký t trong RichEdit control, dùng hai hàm : LockWindowUpdate và UnlockWindowUpdate void CRECDemoDlg::OnDinhdang() { // TODO: Add your control notification handler code here CRichEditCtrl* pRE; int i; pRE = (CRichEditCtrl*)GetDlgItem(IDC_RICHEDIT1); LockWindowUpdate(); … for (i=0;i<tam.GetLength();i++) { … } UnlockWindowUpdate(); } MT S CU TRÚC, HÀM THNG GP Cu trúc CHARFORMAT typedef struct _charformat { UINT cbSize; DWORD dwMask; DWORD dwEffects; LONG yHeight; LONG yOffset; COLORREF crTextColor; BYTE bCharSet; BYTE bPitchAndFamily; TCHAR szFaceName[LF_FACESIZE]; } CHARFORMAT; i vi cu trúc CHARFORMAT này, tham kho thêm trong MSDN phn CHARFORMAT.  đây, chúng tôi ch đ cp mt s vn đ có liên quan xung quanh cu trúc này: o Cu trúc này dùng cho đnh dng các ký t trong RichEdit control sau khi đã đc chn. o Thành phn cbSize luôn đc s dng và nh đt : CHARFORMAT cf; cf.cbSize = sizeof(CHARFORMAT); o Thành phn dwMask cho bit nhng thuc tính (đnh dng) nào có s thay đi: VD : cf.dwMask=CFM_ITALIC|CFM_COLOR|CFM_BOLD; Cho bit 3 thuc tính v đ nghiên (Italic), màu sc (Color), thuc tính đm (Bold) s có s thay đi. o i lin vi thành phn dwMask là thành phn dwEffects. Thành phn này dùng đ gán (hoc loi b) thuc tính đnh dng đã đc đa ra trong thành phn dwMask. Các thuc tính có nh hng t dwEffects là Bold, Italic, Underlined, hay StrikeOut…Nu mun gán mt thuc tính nào thêm ta dùng toán t | và loi b thuc tính nào ta dùng toán t & và toán t ~. Ví d :  thit lp các thuc tính : ch in nghiêng, không đm, và có màu xanh lá cây (Green), font ch là Times New Roman ta gán các thành phn ca cu trúc CHARFORMAT nh sau : CHARFORMAT cf; cf.cbSize = sizeof(CHARFORMAT); cf.dwMask = CFM_ITALIC|CFM_COLOR|CFM_BOLD|CFM_FACE; cf.dwEffects = CFE_ITALIC; cf.dwEffects &= CFE_BOLD; cf.dwEffects &= ~CFE_AUTOCOLOR; cf.crTextColor=RGB(0,255,0); strcpy(cf.szFaceName,"Times New Roman"); HÀM SetSel VÀ HÀM SetSelectionCharFormat  thit lp đnh dng cho mt đon vn bn ta thc hin các bc sau : o Chn đon vn bn đó (dùng hàm SetSel). Lu ý, nu mun chn toàn b ni dung ca control thì dùng SetSel(0,-1). o Thit lp các thuc tính cn thay đi ca đon vn bn thông qua cu trúc CHARFORMAT. Thay đi đnh dng cho đon vn bn thông hàm SetSelectionCharFormat. VÍ D MINH HO Thit k dialog nh hình di đây. Cho phép o Ngi s dng nhp nhng dòng vn bn vào hp RichEditCtrl. o Khi ngi s dng bm nút Dinh Dang, các ký t trong hp Rich Edit Ctrl đc đnh dng theo mt tiêu chun nào đó. Chng hn : các ký t t A đn Z : màu xanh, các ký s (0-9) : màu đ, các ký t đc bit khác : màu đen… Vit hàm đnh dng void CRECDemoDlg::OnDinhdang() { // TODO: Add your control notification handler code here CRichEditCtrl* pRE; int i; pRE = (CRichEditCtrl*)GetDlgItem(IDC_RICHEDIT1); CString tam; pRE->GetWindowText(tam); pRE->SetSel(0,-1); ChangeChar(pRE); for (i=0;i<tam.GetLength();i++) { if (tam[i]!=' ' && (tam[i]<'A'||tam[i]>'Z') && ( tam[i]<'a'||tam[i]>'z')) { pRE->SetSel(i,i+1); if ('0'<=tam[i]&&tam[i]<='9') ChangeNumber(pRE); else ChangeOther(pRE); } } } Hàm ChangeChar : void CRECDemoDlg::ChangeChar(CRichEditCtrl *pRE) { CHARFORMAT cf; cf.cbSize = sizeof(CHARFORMAT); cf.dwMask=CFM_BOLD|CFM_COLOR; cf.dwEffects = CFE_BOLD; cf.crTextColor=RGB(0,0,255); pRE->SetSelectionCharFormat(cf); } Các hàm còn li vit tng t. Tham kho các hàm, các cu trúc có liên quan trong MSDN. . TODO: Add your control notification handler code here CRichEditCtrl* pRE; int i; pRE = (CRichEditCtrl*)GetDlgItem(IDC_RICHEDIT1); LockWindowUpdate();. TODO: Add your control notification handler code here CRichEditCtrl* pRE; int i; pRE = (CRichEditCtrl*)GetDlgItem(IDC_RICHEDIT1); CString tam;

Ngày đăng: 24/01/2014, 02:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan