Tải bản đầy đủ (.pdf) (5 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (262.93 KB, 5 trang )



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
(
, )
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.

×