1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Visual C-017 Việt hóa Dialog thông dụng pdf

7 300 0
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tài Liệu Visual C-017 Việt Hóa Dialog Thông Dụng
Tác giả Nguyễn Khoa Cụng Nghệ Thông Tin
Trường học Trường Đại Học Khoa Học Tự Nhiên TP.HCM
Thể loại Tài liệu
Năm xuất bản 2005
Thành phố TP.HCM
Định dạng
Số trang 7
Dung lượng 384,8 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Hình nh Open dialog thông d ng.

Trang 1

Vi t hoá m t s Dialog thông d ng

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

Chúng ta đã quá quen v i m t s dialog thông d ng : Open Dialog, Color Dialog, SaveAs Dialog,… ây là nh ng dialog chu n đã đ c MFC h tr t t thông qua các l p CFileDialog, CColorDialog,… Chúng ta c ng đ u bi t nh ng dialog này

đ u s d ng ti ng Anh làm ngôn ng giao ti p, câu h i đ t ra đây, li u chúng ta có

th Vi t hoá nh ng dialog này hay không ? i u đó có ngh a là v n gi nguyên nh ng thành ph n trên các dialog chu n này, ch thay th nh ng ph n hi n th b ng ngôn ng Anh thành ngôn ng Vi t

Trong bài vi t này, tôi s gi i thi u cách th c vi t hoá m t dialog quen thu c: Open Dialog Các dialog khác có cách th c hi n t ng t

Hình nh Open dialog thông d ng

Trang 2

Hình nh Open dialog sau khi đ c Vi t hoá

Bây gi , chúng ta s làm quen v i m t s thao tác c b n đ u tiên

Vi t hoá m t control

Công vi c này lúc m i nghe qua t ng ch ng là khó kh n, nh ng th c ch t không có gì là gay go c , đó ch là công vi c thay đ i thu c tính font c a các control thành font ti ng Vi t (trong tr ng h p này, tôi s d ng font ti ng Vi t VK Sans Serif)

thay đ i thu c tính font c a control, chúng ta có th có các cách sau đây :

+ Th nh t, thay đ i thu c tính font cho toàn b dialog, b ng cách thay đ i

ch n font trong b ng property c a dialog

+ Th hai, thi t l p font cho t ng control có l p d n xu t t CWnd

CFont *font;

LOGFONT logFont;

CWnd* pWnd;

pWnd = GetParent()->GetDlgItem(IDOK);

//l y con tr CWnd c a đ i t ng có ID là IDOK

font = pWnd->GetFont();

//l y font c a đ i t ng

font->GetLogFont(&logFont);

//chuy n đ i CFont v d ng c u trúc LOGFONT

strcpy(logFont.lfFaceName,"VK Sans Serif"); //thay đ i tên font đây

//thay đ i thu c tính tên font c a c u trúc LOGFONT

FontTemp = new CFont;

//FontTemp bi n member thu c tính private c a l p

FontTemp->CreateFontIndirect(&logFont);

Trang 3

pWnd->SetFont(FontTemp);

//gán font m i cho đ i t ng

GetParent()->GetDlgItem(IDOK)->SetWindowText("&Më tËp tin"); //M t p tin

//thay đ i n i dung text c a đ i t ng

L y ID c a m t control trên m t dialog

Thông th ng, khi chúng ta s d ng control, chúng ta đ u đ t cho chúng m t cái tên đ d dàng s d ng sau này Các tên này đôi khi không c n thi t vì m i cái tên

đ c t ng ng b ng m t con s duy nh t do trình biên d ch gán cho và đ c đ t

trong t p tin Resource.h Chúng ta làm vi c v i các control thông qua các cái tên th c

ch t làm vi c v i các con s

V i các dialog do chúng ta t o ra, chúng ta d dàng xác đ nh đ c các con s này, nh ng v i các dialog do ng i khác vi t thì làm sao chúng ta có th xác đ nh

đ c các giá tr này ? Cách đ n gi n là dùng ch ng trình Spy++ có s n trong b

tools khi chúng ta cài VC++ ho c VB

Hình nh c a ch ng trình Spy++ th c thi

l y control ID c a m t control, chúng ta ph i xác đ nh control đó thu c v

dialog nào và nó có tên là gì Khi ch y Spy++ chúng ta s th y hình nh m t Tree

control, m i nhánh s đ i di n cho m t ch ng trình (ho c 1 dialog) hi n đang ch y trên máy C g ng dò tìm dialog thích h p M r ng (expand) nhánh b ng cách b m vào nút “+” M t lo t các control có trên ch n control đó s xu t hi n Ch n control

Trang 4

thích h p c n l y ID (d nhiên là ph i c đoán đó là control nào trong c đ ng control),

nh n phím chu t ph i, ch n ch c n ng Property Ta s th y đ c hình nh sau :

Trên Window Properties có r t nhi u thu c tính, đây, chúng ta ch quan tâm

đ n ID c a nó nên ta ch c n bi t đ n giá tr control ID (d ng Hexa) mà thôi L u ý

r ng giá tr ID này ch duy nh t trên dialog đ c ch n mà thôi

B c 1

T o m t dialog m i

Thi t l p cho nó các thu c tính sau (trong Styles) : style = child ; border =

none; check clip siblings

Thêm trên dialog m i này m t group box control không có caption và ID c a

nó là stc32 = 0x045F (Quan tr ng !!!) (Trên dialog này có th thêm các control khác

tu theo ý ng i thi t k )

Trang 5

B c 2

T o m t l p m i cho dialog này, l p m i này ban đ u d n xu t t CDialog và

đ c đ t tên là CSpecialFileDialog

Trong file Header thay đ i :

class CSpecialFileDialog : public CFileDialog

//d n xu t t CFileDialog thay vì t CDialog

CSpecialFileDialog(BOOL bOpenFileDialog, LPCTSTR lpszDefExt =

NULL,

LPCTSTR lpszFileName = NULL,

DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL,

CWnd* pParentWnd = NULL);

//constructor

Trong file th c thi.CPP :

CSpecialFileDialog::CSpecialFileDialog(BOOL bOpenFileDialog,

LPCTSTR lpszDefExt, LPCTSTR lpszFileName, DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd)

: CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName,

dwFlags, lpszFilter, pParentWnd)

{

//{{AFX_DATA_INIT(CSpecialFileDialog)

// NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT

m_ofn.Flags |= OFN_ENABLETEMPLATE;

m_ofn.lpTemplateName = MAKEINTRESOURCE(IDD_DIALOG1);

m_ofn.lpstrTitle = "Mo tap tin";//thay đ i n i dung caption bar

c a dialog

}

Thêm vào l p CSpecialDialog m t bi n private là m t đ i t ng con tr

FontTemp thu c l p CFont, con tr này có nhi m v l u gi thu c tính font c a các

control trong Dialog, c n ph i hu b con tr khi không s d ng dialog n a

Trang 6

B c 3

Thêm vào l p CSpecialDialog hàm OnInitDialog có n i dung nh sau :

BOOL CSpecialFileDialog::OnInitDialog()

{

BOOL bRet = CFileDialog::OnInitDialog();

CFont *font;

LOGFONT logFont;

if (bRet == TRUE)

{

//xác đ nh và thay đ i font ti ng Vi t cho các control c n thi t

CWnd* pWnd;

pWnd = GetParent()->GetDlgItem(IDOK);

font = pWnd->GetFont();

font->GetLogFont(&logFont);

strcpy(logFont.lfFaceName,"VK Sans Serif");

FontTemp = new CFont;

FontTemp->CreateFontIndirect(&logFont);

pWnd->SetFont(FontTemp);

GetParent()->GetDlgItem(IDOK)->SetWindowText("&Më tËp tin");/*M t p

tin*/

GetParent()->GetDlgItem(0x442)->SetFont(FontTemp);

GetParent()->GetDlgItem(0x442)->SetWindowText("&Tªn tËp tin");/*Tên

t p tin*/

GetParent()->GetDlgItem(0x443)->SetFont(FontTemp);

CRect rect;

pWnd = GetParent()->GetDlgItem(0x443);

// -

// đo n ch ng trình này dùng đ đi u ch nh v trí c a control

pWnd->GetClientRect(&rect);

rect.right += 30;

pWnd-> SetWindowPos

(&wndTop,rect.left,rect.top+10,rect.Width(),rect.Height(), SWP_SHOWWINDOW);

//

GetParent()->GetDlgItem(0x443)->SetWindowText("Th- môc");//Th m c

GetParent()->GetDlgItem(0x441)->SetFont(FontTemp);

GetParent()->GetDlgItem(0x441)->SetWindowText("&Lo¹i tËp tin");//Lo i

t p tin

GetParent()->GetDlgItem(IDCANCEL)->SetFont(FontTemp);

GetParent()->GetDlgItem(IDCANCEL)->SetWindowText("&Hñy chän");//H y

ch n

}

return bRet;

}

Ghi chú : các giá tr ID 0x441,0x442,0x443 đ c xác đ nh b ng Spy++ theo

cách đã trình bày trên

Trang 7

B c 4

Xoá b con tr FontTemp khi không còn s d ng dialog n a

BOOL CSpecialFileDialog::DestroyWindow()

{

// TODO: Add your specialized code here and/or call the base class

if (FontTemp) delete FontTemp;

return CDialog::DestroyWindow();

}

Do CSpecialDialog d n xu t t CFileDialog nên ta có th thêm cho nó m t s

hàm c n thi t c a riêng chúng ta nh :

CString CSpecialFileDialog::Layduongdan()

{

return CFileDialog::GetPathName();

}

Cách s d ng không khác gì so v i CFileDialog, khai báo m t đ i t ng thu c

l p CSpecialDialog và s d ng hàm DoModal đ kích ho t dialog ho t đ ng

Ví d :

CSpecialDialog dlg(TRUE);

if (dlg.DoMoDal() == IDOK)

{

}

Các dialog d n xu t t các l p còn l i có cách th c hi n không khác l m

Tài Li u Tham Kh o :

- Programming VC++6.0 Fifth Edition

- MSDN Library

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

HÌNH ẢNH LIÊN QUAN

Hình  nh Open dialog thông d ng - Tài liệu Visual C-017 Việt hóa Dialog thông dụng pdf
nh nh Open dialog thông d ng (Trang 1)
Hình  nh Open dialog sau khi  đ c Vi t hoá - Tài liệu Visual C-017 Việt hóa Dialog thông dụng pdf
nh nh Open dialog sau khi đ c Vi t hoá (Trang 2)
Hình  nh c a ch ng trình Spy++ th c thi - Tài liệu Visual C-017 Việt hóa Dialog thông dụng pdf
nh nh c a ch ng trình Spy++ th c thi (Trang 3)

TỪ KHÓA LIÊN QUAN

w