intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Lập trình windows với MFC Micrisoft visual C++6.0- P7

Chia sẻ: Cong Thanh | Ngày: | Loại File: PDF | Số trang:10

102
lượt xem
19
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Thông số dạng nút (BS_PUSHBUTTON) DWORD dwStyle, const RECT& rect, // Tọa độ, kích thước nút chọn // Con trỏ cửa sổ cha CWnd* pParentWnd, UINT nID // Số hiệu nút chọn ); Khởi tạo thông số cho đối tượng nút chọn. HBITMAP GetBitmap( ) const ;

Chủ đề:
Lưu

Nội dung Text: Lập trình windows với MFC Micrisoft visual C++6.0- P7

  1. - Thöïc hieän thao taùc Drag treân bieân cuûa - File name = OptDlg : Teân taäp tin, - Base class = CDialog ñoái töôïng ñeå ñaït kích thöôùc mong muoán. : Lôùp cô sôû - Dialog ID = IDD_OPTION : Soá hieäu dialog resource. • Canh chænh vò trí, kích thöôùc moät nhoùm ñoái töôïng: Sau cuøng choïn OK. - Ñaùnh daáu nhoùm ñoái töôïng Ñoùng maøn hình thieát keá dialog. Trong maøn hình Workspace, choïn - Choïn coâng cuï phuø hôïp treân thanh coâng cuï: ClassView, ta coù lôùp COptionDlg trong danh saùch caùc lôùp cuûa döï aùn. Canh thaúng theo bieân: Treân lôùp COptionDlg, ta coù theå thöïc hieän boå sung thuoäc tính, caøi ñaët caùc Canh thaúng giöõa dialog: haønh vi thoâng thöôøng cuõng nhö caùc haønh vi xöû lyù message. Caùc thao taùc Caùc ñeàu nhau: hoaøn toaøn töông töï nhö ñaõ thöïc hieän vôùi caùc lôùp CEmpApp vaø CEmpWnd. Baèng côõ ñoái töôïng choïn cuoái cuøng trong nhoùm: 9.3.3 Söû duïng dialog trong chöông trình: 9.3.2 Khai baùo lôùp keá thöøa CDialog söû duïng dialog resource: Khai baùo ñoái töôïng thuoäc lôùp dialog môùi taïo. Duøng chæ thò #include taäp Thoâng qua lôùp naøy, ta thöïc hieän caøi ñaët caùc xöû lyù phuø hôïp treân dialog vaø tin (.H) chöùa khai baùo lôùp ôû ñaàu chöông trình: caùc ñoái töôïng nhaäp lieäu ñöôïc moâ taû trong dialog resource ôû treân. Trong maøn hình thieát keá dialog, choïn View / ClassWizard (Ctrl+W). #include "Optdlg.h" // EmpWnd.cpp : implement file ... // Ñoái töôïng COptionDlg COptionDlg dlg (this); Goïi haønh vi DoModal hoaëc Create cuûa ñoái töôïng dialog moät caùch phuø hôïp tuøy theo yeâu caàu duøng dialog khoùa hay khoâng khoùa. dlg.DoModal(); // Dialog hoaït ñoäng ôû cheá ñoä khoùa Thöïc haønh: Boå sung döï aùn VD25: Caøi ñaët haønh vi xöû lyù muïc choïn Option treân menu cho CEmpWnd vôùi noäi dung thöïc hieän dialog COptionDlg. Boå sung haønh vi xöû lyù muïc choïn Option cho lôùp CEmpWnd. Trong phaàn caøi ñaët haønh vi naøy, ta khai baùo ñoái töôïng COptionDlg vaø Choïn OK ñeå taïo lôùp môùi öùng vôùi dialog resource. goïi haønh vi DoModal cuûa noù: void CEmpWnd::OnGameOption () { COptionDlg dlg(this); dlg.DoModal(); } 9.4 LIEÂN KEÁT GIÖÕA DIALOG VAØ CAÙC THAØNH PHAÀN KHAÙC: Dialog laø coâng cuï giao dieän raát tieän lôïi vôùi ngöôøi duøng. Taïo moái lieân keát giöõa dialog vaø caùc thaønh phaàn khaùc cuûa öùng duïng ñeå trao ñoåi thoâng tin töø ngöôøi duøng laø vaán ñeà thöôøng gaëp. Vaán ñeà naøy coù theå giaûi quyeát nhö sau: Ñoái töôïng nhaän thoâng tin seõ chuyeån con troû (handle) quaûn lyù mình cho ñoái töôïng cung caáp thoâng tin. - Name = COptionDlg : Nhaäp teân lôùp môùi Hoäp hoäi thoaïi 104 Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com 103
  2. Haønh vi xöû lyù choïn nuùt OK cuûa lôùp COptionDlg: Thöïc hieän vieäc laáy Ñoái töôïng cung caáp thoâng tin seõ duøng handle cuûa ñoái töôïng nhaän tin ñeå xaùc ñònh caùc oâ chöùa tin cuûa ñoái töôïng naøy, sau ñoù ñieàn caùc thoâng tin thoâng tin töø hoäp nhaäp cuûa noù ñeå gaùn cho ñoái töôïng hoäp nhaäp m_editName treân cöûa soå cha CEmpWnd. cuûa mình vaøo caùc oâ chöùa tin cuûa ñoái töôïng nhaän tin. Thöïc haønh: Taïo öùng duïng VD26 nhö VD25. Thöïc hieän caùc boå sung: Khi void COptionDlg::OnOK() option dialog hoaït ñoäng, ngöôøi duøng goõ thoâng tin vaøo hoäp nhaäp. Neáu ngöôøi { duøng choïn OK thì thoâng tin nhaäp chuyeån vaøo hoäp nhaäp YourName treân CString name; // Laáy thoâng tin nhaäp trong hoäp nhaäp cuûa dialog cöûa soá chính, ngöôïc laïi muïc choïn Cancel seõ khoâng xöû lyù gì caû. GetDlgItemText( IDC_NAME, name ); HD: Muïc nhaäp YourName ñöôïc quaûn lyù bôûi thuoäc tính m_editName cuûa // vaø chuyeån thoâng tin naøy sang hoäp nhaäp treân cöûa soá chính ñoái töôïng CEmpWnd, ñaây laø oâ chöùa tin cuûa ñoái töôïng nhaän tin CEmpWnd. m_parent->m_editName.SetWindowText( name ); Ñoái töôïng COptionDlg laø ñoái töôïng cung caáp tin. Xöû lyù ñieàn thoâng tin chæ // Duøng haønh vi lôùp cô sôû ñeå keát thuùc dialog. xaûy ra khi ngöôøi duøng choïn OK. Xöû lyù naøy ñöôïc caøi ñaët trong haønh vi maø CDialog::OnOK(); ñoái töôïng COptionDlg duøng ñeå traû lôøi thao taùc click treân nuùt OK. } Caùc böôùc thöïc hieän döï aùn VD26: Haønh vi OnOK cuûa lôùp COptionDlg bò loãi do truy xuaát thuoäc tính kieåu Taïo döï aùn VD26 töông töï döï aùn VD25. protected m_editName cuûa lôùp CEmpWnd. Ñeå khaéc phuïc loãi naøy, ta Haønh vi thöïc hieän OptionDlg trong CEmpWnd söû duïng duøng con troû chæ khai baùo lôùp COptionDlg laø moät lôùp baïn (friend) cuûa lôùp CEmpWnd. ñeán noù laøm tham soá cho haønh vi taïo laäp cuûa ñoái töôïng COptionDlg: class CEmpWnd : public CWnd void CEmpWnd::OnGameOption () { { friend class COptionDlg; // COptionDlg is a friend COptionDlg dlg( this ); public: dlg.DoModal(); CEmpWnd(); } Boå sung thuoäc tính protected m_parent kieåu con troû CEmpWnd* cho ... // other declarations }; lôùp COptionDlg. Thuoäc tính naøy ñöôïc duøng ñeå chöùa con troû ñeán cöûa soå cha cuûa COptionDlg (CEmpWnd). Boå sung #include "EmpWnd.h" vaøo 9.5 SÖÛ DUÏNG DIALOG LAØM GIAO DIEÄN CHÍNH CUÛA ÖÙNG DUÏNG: ñaàu taäp tin khai baùo (.h) cuûa lôùp COptionDlg. Keá thöøa töø CWnd, lôùp CDialog vaø caùc lôùp keá thöøa töø noù coù theå duøng khai Haønh vi taïo laäp cuûa COptionDlg löu giöõ giaù trò con troû cöûa soå cha ñöôïc baùo caùc ñoái töôïng cöûa soå giao dieän chính cuûa öùng duïng. truyeàn cho noù vaøo thuoäc tính m_parent. 9.5.1 Thöïc hieän öùng duïng vôùi giao dieän chính laø dialog: COptionDlg::COptionDlg ( CWnd* pParent ) Taïo döï aùn VD27 töông töï VD03 (döï aùn chæ coù lôùp keá thöøa CWinApp). : CDialog( COptionDlg::IDD, pParent ) Taïo dialog resource coù noäi dung tuøy yù laøm giao dieän chính. { Taïo lôùp quaûn lyù dialog resource. Giaû söû lôùp coù teân laø CMainDlg coù maõ m_parent = (CEmpWnd*) pParent; nguoàn trong caùc taäp tin MainDlg.H vaø MainDlg.CPP. //{{AFX_DATA_INIT(COptionDlg) Ñaêng kyù söû duïng lôùp CMainDlg cho phaàn caøi ñaët cuûa lôùp quaûn lyù öùng // NOTE: the ClassWizard will add member initialization here duïng: Boå sung vaøo ñaàu taäp tin caøi ñaët cuûa lôùp (VD27.cpp): //}}AFX_DATA_INIT } #include "maindlg.h" // at the begin of program Haønh vi InitInstance cuûa lôùp CEmpApp taïo dialog giao dieän. Hoäp hoäi thoaïi 106 Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com 105
  3. Ñieàn caùc thoâng tin trong hoäp hoäi thoaïi New, Sau ñoù choïn OK. BOOL CEmpApp::InitInstance () { // Khai baùo ñoái töôïng dialog CMainDlg main; // Duøng dialog laøm cöûa soå chính m_pMainWnd = &main; // Thöïc hieän dialog main.DoModal(); return TRUE; } * Caøi bieåu töôïng öùng duïng treân tieâu ñeà cuûa dialog: Khai baùo style laø Popup hoaëc Overlap cho dialog resource. Haønh vi OnInitDialog cuûa dialog seõ thöïc hieän caøi ñaët icon BOOL CMainDlg::OnInitDialog() { CDialog::OnInitDialog(); SetIcon(AfxGetApp()->LoadIcon(IDR_MAINFRAME), TRUE); return TRUE; } 9.5.2 Duøng MFC wizard taïo öùng duïng vôùi giao dieän chính laø dialog: Ñeå ngöôøi duøng coù ngay moät döï aùn côõ VD27 maø khoâng phaûi maát coâng thöïc hieän caùc vieäc nhö treân, MFC wizard cung caáp chöùc naêng hoã trôï taïo nhanh döï aùn vôùi dialog laøm cöûa soå chính. Caùch söû duïng chöùc naêng hoã trôï naøy nhö sau: Choïn muïc Dialog Based, sau ñoù choïn Next. Choïn menu File / New. Hoäp hoäi thoaïi 108 Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com 107
  4. AÁn ñònh caùc muïc choïn nhö treân. Sau ñoù choïn Next. Ñeå thöïc hieän ñoàng boä hai noäi dung khi moät trong hai hieän töôïng noùi treân xaûy ra, ta söû duïng haønh vi sau maø lôùp CDialog keá thöøa töø CWnd: BOOL UpdateData( BOOL bSaveAndValidate = TRUE ); Tham soá bSaveAndValidate coù yù nghóa nhö sau: TRUE : Chuyeån giaù trò trong control vaøo bieán giaù trò. FALSE : Chuyeån giaù trò trong bieán giaù trò vaøo control. Söû duïng bieán ñieàu khieån: Bieán ñieàu khieån laø ñoái töôïng thuoäc moät lôùp ñoái töôïng nhaäp lieäu (xem chöông 8) coù kieåu phuø hôïp vôùi control. Thoâng qua caùc haønh vi cuûa bieán ñoái töôïng naøy, ta coù theå thöïc hieän caùc taùc ñoäng cho pheùp leân control. Thöïc hieän öùng duïng vôùi giao dieän chính laø dialog, moät muïc nhaäp vaø hai nuùt View vaø Set ñeå hieån thò vaø ñaët noäi dung trong hoäp nhaäp. AÙp duïng muïc (9.5.2), taïo döï aùn VD27A vôùi giao dieän chính laø dialog. Môû resource cuûa dialog giao dieän chính, caøi ñaët caùc control sau: - Hoäp nhaäp lieäu : Edit Soá hieäu IDC_NHAP - Nuùt leänh hieån thò noäi dung hoäp nhaäp : Button IDC_XEM - Nuùt leänh ñaët noäi dung hoäp nhaäp : Button IDC_DAT Choïn cô cheá lieân keát vôùi thö vieän MFC. Sau ñoù choïn next. Khai baùo bieán m_szNhap kieåu CString, duøng löu giaù trò hoäp nhaäp lieäu. Cuoái cuøng, aán ñònh teân taäp tin chöùa khai baùo caùc lôùp. Choïn Finish. Caùch thöïc hieän nhö sau: Bieân dòch vaø chaïy thöû öùng duïng. • Môû resource cuûa dialog chính, choïn muïc View/ClassWizard. 9.6 KHAI BAÙO BIEÁN CHO CONTROL TREÂN DIALOG: Khai baùo bieán cho control treân dialog laø thöïc hieän ñònh nghóa bieán ñoái töôïng coù kieåu phuø hôïp vaø thieát laäp moái quan heä giöõa bieán ñoái töôïng vaø control lieân quan. Thoâng qua bieán ñoái töôïng, ta deã daøng tieán haønh caùc xöû lyù caàn thieát ñeå taùc ñoäng hoaëc laáy giaù trò cuûa control. Coù hai loaïi bieán: - Bieán giaù trò (value variable): Bieán ñöôïc söû duïng ñeå löu tröõ giaù trò cuûa control. - Bieán ñieàu khieån (control variable): Bieán ñoái töôïng, coù kieåu phuø hôïp vaø caùc haønh vi xöû lyù caàn thieát, ñöôïc söû duïng ñeå taùc ñoäng leân control. Ñoàng boä noäi dung nhaäp trong control vaø noäi dung bieán giaù trò: Khi ngöôøi duøng thao taùc nhaäp lieäu treân control, noäi dung nhaäp chöa thöïc söï trôû thaønh giaù trò cuûa bieán. Ngöôïc laïi, vieäc gaùn trò cho bieán cuõng khoâng laøm thay ñoåi ngay noäi dung hieån thò trong control. Hoäp hoäi thoaïi 110 Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com 109
  5. • Choïn trang Member Variables, choïn muïc coù soá hieäu IDC_NHAP. void CEmpDlg::OnDat() Sau ñoù choïn muïc Add Variable…. { m_editNhap.SetWindowText( "Mr.Emp, Hello !" ); } Bieân dòch vaø chaïy thöû öùng duïng. Haønh vi OnDat coù theå caøi ñaët nhö sau: void CEmpDlg::OnDat() { m_szNhap = "Mr.Emp, Hello !"; // Caäp nhaät giaù trò bieán cho control UpdateData(FALSE); } 9.7 KHAI THAÙC CAÙC TIEÄN ÍCH HOÃ TRÔÏ: ÖÙng duïng phaùt trieån trong VC coù theå deã daøng khai thaùc caùc tieän ích hoã trôï - Meber variable name = m_szNhap : Teân bieán bôûi VC (VC Components) hoaëc bôûi caùc öùng duïng khaùc ñöôïc caøi ñaët trong heä - Category = Value : Loaïi bieán thoáng (ActiveX Controls). Vieäc boå sung vaø khai thaùc caùc tieän ích naøy trong - Variable type = CString : Kieåu cuûa bieán. Choïn OK. öùng duïng ñöôïc thöïc hieän thoâng qua caùc böôùc sau: Khai baùo bieán m_editNhap kieåu CEdit. Bieán naøy ñöôïc söû duïng ñeå taùc Môû döï aùn cuûa öùng duïng trong VC. ñoäng giaù trò hoäp nhaäp lieäu. Thöïc hieän nhö khai baùo bieán m_szNhap: Ñaêng kyù söû duïng tieän ích: Choïn muïc: Project / Add to Project / Components and Controls… Haønh vi OnXem öùng vôùi nuùt choïn IDC_XEM hieån thò noäi dung nhaäp: void CEmpDlg::OnXem() { // Caäp nhaät giaù trò control vaøo bieán UpdateData(TRUE); MessageBox( m_szNhap, "Ban da nhap", MB_OK ); } • Choïn nhoùm tieän ích: Double-click muïc nhoùm tieän ích caàn duøng. Haønh vi OnDat öùng vôùi nuùt choïn IDC_XEM ñaët giaù trò cho hoäp nhaäp: Hoäp hoäi thoaïi 112 Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com 111
  6. Thöïc hieän öùng duïng TipApp vôùi giao dieän chính laø dialog. Moãi khi thöïc hieän, öùng duïng hieån thò hoäp thoâng baùo "Tip of the Day". Duøng MFC Wizard taïo döï aùn TipApp vôùi giao dieän chính laø dialog. Ñaêng kyù söû duïng tieän ích: • Nhoùm tieän ích = Visual C++ Components. • Tieän ích = Tip of the day • Khai baùo thoâng tin lôùp ñoái töôïng quaûn lyù tieän ích: Choïn OK, Choïn Close ñeå ñoùng hoäp hoäi thoaïi tieän ích. (Danh saùch caùc tieän ích cuûa MS Visual C++) • Vôùi tieän ích "Tip of the Day", lôùp ñoái töôïng quaûn lyù tieåu trình chính • Choïn tieän ích: cuûa öùng duïng laø lôùp söû duïng. Hai haønh vi boå sung töï ñoäng cho lôùp: Choïn muïc thích hôïp trong danh saùch tieän ích chi tieát. Choïn Insert. - void CTipAppApp::ShowTipAtStartup(void); - void CTipAppApp::ShowTipOfTheDay(void); Haønh vi ShowTipAtStartup ñöôïc thöïc hieän bôûi haønh vi InitInstance. Haõy thöû quan saùt caùc lôùp cuûa döï aùn TipApp ñeå töï nhaän xeùt. Bieân dòch vaø chaïy thöû öùng duïng. Thöïc hieän öùng duïng XemLich vôùi giao dieän chính laø dialog. Boå sung vaøo öùng duïng coâng cuï xem vaø choïn lòch Calendar 8 (ActiveX Control). Caøi ñaët control naøy leân dialog giao dieän. Choïn OK ñeå khaúng ñònh thao taùc. Duøng MFC Wizard taïo döï aùn XemLich vôùi dialog giao dieän chính. • Khai baùo thoâng tin lôùp ñoái töôïng quaûn lyù tieän ích boå sung (neáu coù). Ñaêng kyù söû duïng tieän ích: • Khai baùo thoâng tin lôùp ñoái töôïng trong öùng duïng söû duïng tieän ích. • Nhoùm tieän ích = Registered ActiveX Controls. Keát thuùc quaù trình boå sung moät tieän ích vaøo öùng duïng. • Tieän ích = Calendar Control 8.0 Hoäp hoäi thoaïi 114 Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com 113
  7. • Khai baùo thoâng tin lôùp ñoái töôïng quaûn lyù tieän ích: THÖÏC HAØNH: 1. Nhö VD26, khi option dialog ñöôïc thöïc hieän, hoäp nhaäp cuûa noù chöùa saün thoâng tin laø noäi dung ñaõ ñöôïc nhaäp treân maøn hình chính CEmpWnd. HD: Haønh vi OnInitDialog cuûa COptionDlg thöïc hieän laáy thoâng tin töø thuoäc tính m_editName cuûa ñoái töôïng CEmpWnd vaø gaùn cho hoäp nhaäp cuûa noù. 2. Vieát öùng duïng vôùi option dialog cho pheùp nhaäp 4 thoâng soá toïa ñoä (left-top, right-bottom). Khi choïn OK, caùc thoâng soá naøy ñöôïc aùp ñaët cho cöûa soå chính. 3. Vieát öùng duïng vôùi n chuù böôùm bay trong vuøng client cuûa cöûa soå chính vaø option dialog cho pheùp aán ñònh soá löôïng (n), vaän toác cuûa böôùm. 4. Vieát öùng duïng thöïc hieän chöùc naêng cuûa moät caùi maùy tính boû tuùi. Giao dieän laø moät dialog, caùc nuùt baám soá vaø pheùp tính ñöôïc caøi ñaët baèng caùc control. 5. Vieát öùng duïng kính luùp vôùi giao dieän chính laø dialog. Khi di chuyeån dialog treân maøn hình desktop, thoâng tin cuûa desktop beân döôùi dialog ñöôïc phoùng to (vôùi tæ leä aán ñònh ñöôïc) vaø hieån thò trong vuøng client cuûa dialog. 6. Thöïc hieän öùng duïng vôùi giao dieän chính laø dialog coù hình ngoâi sao. 7. Thöïc hieän öùng duïng vôùi giao dieän chính laø dialog maø khuoân daïng cuûa noù ñöôïc hình thaønh töø moät aûnh bitmap baát kyø. Choïn OK, Choïn Close ñeå ñoùng hoäp hoäi thoaïi tieän ích. 8. Thöïc hieän öùng duïng vôùi giao dieän chính laø dialog. Dialog naøy cho pheùp • Lôùp ñoái töôïng CXemLichDlg quaûn lyù dialog giao dieän chính cuûa döï thay ñoåi vò trí baèng caùch drag chuoät ôû baát kyø vò trí naøo treân beà maët cuûa noù. aùn laøm nhieäm vuï söû duïng control boå sung naøy: 9. Thöïc hieän dialog vôùi maøu neàn tuøy choïn, moät muïc thoâng baùo coù noäi dung - Môû resource dialog giao dieän, caøi ñaët control sau: "Mailto: emp@hcmueco.edu.vn". Hình aûnh chuoät ñoåi thaønh khi di chuyeån - Hoäp xem vaø choïn ngaøy CCalendar IDC_DATE chuoät leân vò trí muïc. Click choïn muïc cho pheùp göûi mail. - Taïo bieán ñieàu khieån m_Lich kieåu CCalendar cho control. HD: - Haønh vi OnInitDialog cuûa lôùp ñaët giaù trò cho control: - Xöû lyù WM_CTLCOLOR ñeå ñaët maøu neàn cuûa dialog vaø maøu chöõ muïc. - Muïc caøi ñaët vôùi soá hieäu xaùc ñònh, thoâng soá daïng chöùa WM_NOTIFY. BOOL CXemLichDlg::OnInitDialog() { - Xöû lyù BN_CLICKED treân muïc, vaø göûi mail thoâng qua haøm sau: CDialog::OnInitDialog(); HINSTANCE ShellExecute ( SetIcon(m_hIcon, TRUE); HWND hWnd, // Handle cöûa soå cha. SetIcon(m_hIcon, FALSE); LPCTSTR lpOperation, // Chuoãi noäi dung taùc vuï m_Lich.SetDay( 19 ); LPCTSTR lpFile, // Ñöôøng daãn taäp tin chöông trình m_Lich.SetMonth( 11 ); LPCTSTR lpParameters, // Chuoãi tham soá doøng leänh m_Lich.SetYear( 2002 ); LPCTSTR lpDirectory, // Ñöôøng daãn thö muïc laøm vieäc return TRUE; int nShowCmd // Thoâng soá hieån thò cöûa soå } ); Leänh thöïc hieän moät chöông trình öùng duïng trong windows. Coù theå söû duïng caùc haønh vi: GetDay, GetMonth, GetYear cuûa VÍ DUÏÏ: Ñeå göûi mail, ta söû duïng haøm treân nhö sau. ñoái töôïng m_List ñeå laáy thoâng tin veà ngaøy ñöôïc choïn. ShellExecute( NULL, "open", "Mailto:emp@hcmueco.edu.vn","","", SW_SHOW ); Bieân dòch vaø chaïy thöû öùng duïng. Hoäp hoäi thoaïi 116 Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com 115
  8. CHÖÔNG 10: CStatusBar( ); Taïo laäp ñoái töôïng roãng. BOOL Create ( KHUNG CÖÛA SOÅ GIAO DIEÄN CHÍNH CWnd* pParentWnd, /* Con troû ñoái töôïng cöûa soå cha */ /* Thoâng soá daïng cuûa statusbar vaø giaù trò maëc nhieân */ 10.1 KHUNG CÖÛA SOÅ GIAO DIEÄN (FRAME WINDOW): DWORD dwStyle WS_CHILD | WS_VISIBLE | CBRS_BOTTOM, Frame window laø loaïi cöûa soå chuyeân duøng laøm maøn hình chính cuûa öùng /* Soá hieäu statusbar, giaù trò maëc nhieân cho statusbar chính */ duïng. Frame window coù caùc ñaëc ñieåm nhö sau: UINT nID = AFX_IDW_STATUS_BAR ); Khôûi taïo thoâng soá cho ñoái töôïng statusbar. BOOL SetIndicators ( const UINT* lpIDArray, // Maûng chöùa soá hieäu panes int nIDCount // Soá pane treân statusbar ); Qui ñònh soá pane vaø soá hieäu cuûa chuùng. Caùc soá hieäu pane ñaëc bieät nhö sau: ID_SEPARATOR : Duøng cho pane thoâng tin traïng thaùi, ID_INDICATOR_CAPS : Pane traïng thaùi phím capslock. ID_INDICATOR_NUM : Pane traïng thaùi phím numslock Cho pheùp loàng vaøo frame window thanh traïng thaùi (statusbar), thanh ID_INDICATOR_SCRL : Pane traïng thaùi phím scrolllock coâng cuï (toolbar), menu vaø caùc phím taét treân menu. void SetWindowText ( Cho pheùp loàng moät ñoái töôïng view (thuoäc lôùp keá thöøa töø CWnd) vaøo LPCTSTR lpszString // Noäi dung thoâng baùo caäp nhaät vuøng client cuûa frame window ñeå hoaït ñoäng phoái hôïp trong vieäc hieån ); Caäp nhaät thoâng baùo cho pane coù soá hieäu laø 0. thò noäi dung trao ñoåi cuûa öùng duïng. Haønh vi OnSetFocus cuûa frame BOOL SetPaneText ( window thöïc hieän haønh vi OnSetFocus cuûa view ñeå taïo söï ñoàng boä giöõa int nIndex, // Soá hieäu pane frame vaø view khi kích hoaït. Thoâng qua haønh vi OnCmdMsg, frame LPCTSTR lpszNewText, // Noäi dung thoâng baùo caäp nhaät window coù theå ñieàu phoái command message cho view. BOOL bUpdate=TRUE // Veõ laïi thoâng tin caäp nhaät Phoái hôïp, ñoàng boä vieäc thöïc hieän xöû lyù vaø thay ñoåi traïng thaùi cuûa caùc ); Caäp nhaät noäi dung thoâng baùo trong pane moät pane. ñoái töôïng tröïc thuoäc: menu, toolbar, statusbar, view. void SetPaneInfo ( Cho pheùp cô cheá thöïc hieän WinHelp vaø töï ñoäng keát thuùc WinHelp khi int nIndex, // Soá thöù töï pane trong statusbar frame window chaám döùt hoaït ñoäng. UINT nID, // Soá hieäu gaùn cho pane UINT nStyle, // Thoâng soá daïng cuûa pane 10.2 THANH TRAÏNG THAÙI (STATUSBAR) & LÔÙP CStatusBar: int cxWidth // Ñoä roäng pane (tính baèng pixel) StatusBar laø khung bao goàm caùc hoäp (pane) chöùa thoâng baùo. Thoâng qua ); AÁn ñònh caùc thoâng soá lieân quan hoaït ñoäng hieån thò cuûa pane. statusbar, öùng duïng coù theå thoâng tin cho ngöôøi duøng veà caùc hoaït ñoäng cuûa öùng Giaù trò nStyle coù theå laø: duïng vaø caùc thoâng soá lieân quan. Statusbar thöôøng ñöôïc ñaët ôû caïnh döôùi cuûa SBPS_NOBORDERS : Khoâng vieàn. frame window. Moãi pane treân statusbar coù theå ñöôïc aán ñònh moät kieåu daïng SBPS_POPOUT : Vieàn noåi. theå hieän vaø noäi dung thoâng tin rieâng. SBPS_DISABLED : Caám. Vieäc quaûn lyù statusbar trong öùng duïng ñöôïc MFC hoã trôï thoâng qua lôùp ñoái SBPS_STRETCH : Töï chænh kích thöôùc (cho 1 pane duy nhaát ). töôïng CStatusBar. Caùc haønh vi ñaëc tröng cuûa lôùp naøy nhö sau: 118Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com Khung cöûa soå giao dieän chính 117
  9. void SetHeight( int cyHeight ); AÁn ñònh chieàu cao cuûa toolbar. SBPS_NORMAL : Khoâng coù kieåu daùng ñaëc bieät, void SetPaneStyle ( void EnableDocking ( int nIndex, DWORD dwStyle // Soá thöù töï pane trong statusbar // Caùch keát toolbar vaøo frame window UINT nStyle // Thoâng soá daïng cuûa pane // xem EnableDocking() cuûa CFrameWnd ); AÁn ñònh thoâng soá daïng cuûa pane. ); AÁn ñònh kieåu keát cho pheùp cuûa toolbar vôùi cöûa soå cha cuûa noù. CToolBarCtrl& GetToolBarCtrl( ); Traû veà ñoái töôïng quaûn lyù caùc nuùt 10.3 THANH COÂNG CUÏ (TOOLBAR) & LÔÙP CToolBar: choïn treân toolbar. Vôùi ñoái töôïng naøy ta coù theå thöïc hieän caùc chænh söûa Toolbar laø khung chöùa caùc muïc choïn coù hình aûnh gôïi nhôù vaø ñöôïc keát vaøo phuø hôïp treân töøng nuùt choïn. caïnh cuûa frame window. Moãi muïc choïn cuûa toolbar coù moät soá hieäu rieâng Thöïc hieän toolbar trong öùng duïng: Ta tieán haønh caùc böôùc sau ñaây. hoaëc gaén vôùi moät muïc choïn xaùc ñònh trong heä thoáng menu. CToolBar laø lôùp 10.3.1 Thieát keá toolbar resource: do MFC cung caáp nhaèm hoã trôï vieäc quaûn lyù toolbar trong öùng duïng. Toolbar resource chöùa thoâng tin veà hình aûnh, soá hieäu, noäi dung thoâng baùo CToolBar( ); Taïo laäp ñoái töôïng roãng. vaø caùc höôùng daãn cho töøng muïc choïn treân thanh toolbar. BOOL Create ( Môû döï aùn caàn boå sung toolbar resource trong VC. CWnd* pParentWnd, /* Con troû ñoái töôïng cöûa soå cha */ Taïo môùi toolbar resource: Thöïc hieän töông töï taïo môùi icon (2.8). /* Thoâng soá daïng cuûa toolbar vôùi giaù trò maëc nhieân */ Löu yù: Choïn Resource Type = ToolBar. DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP, Ñaët soá hieäu cho toolbar (ví duï IDR_MAINFRAME cho toolbar chính). /* Soá hieäu cuûa toolbar, giaù trò maëc nhieân cho toolbar chính */ Thieát keá toolbar thoâng qua maøn hình thieát keá maø ta vöøa nhaän ñöôïc töø UINT nID = AFX_IDW_TOOLBAR böôùc treân. Caùc thao taùc cô baûn nhö sau: ); Khôûi taïo thoâng soá cho ñoái töôïng toolbar. • Khai baùo thoâng soá cho nuùt choïn: dwStyle coù theå nhaän caùc thoâng soá sau: - Double-click treân nuùt: CBRS_GRIPPER : Toolbar di chuyeån ñöôïc CBRS_FLOAT_MULTI : Cho pheùp nhieàu toolbar trong 1 frame CBRS_TOOLTIPS : Coù tiptext cho moãi muïc choïn CBRS_FLYBY : Ñoàng boä tooltip vaø message info CBRS_SIZE_DYNAMIC : Kích thöôùc thay ñoåi ñöôïc CBRS_SIZE_FIXED : Kích thöôùc coá ñònh BOOL CreateEx ( CWnd* pParentWnd, DWORD dwCtrlStyle = TBSTYLE_FLAT, // Daïng phaúng DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP - AÁn ñònh caùc thoâng soá cho nuùt: CRect rcBorders = CRect ( 0, 0, 0, 0 ), ID : Soá hieäu cuûa nuùt choïn, coù theå laø soá hieäu cuûa muïc menu. UINT nID = AFX_IDW_TOOLBAR Width, Height : Chieàu roäng vaø chieàu cao cuûa nuùt. ); Khôûi taïo ñoái töôïng toolbar vôùi thoâng soá daïng môû roäng. Prompt : Töông töï nhö Prompt cuûa muïc choïn treân menu. dwCtrlStyle coù theå laø TBSTYLE_TRANSPARENT (trong suoát). • Theâm moät nuùt môùi: Double-click treân . Sau ñoù thöïc hieän khai BOOL LoadToolBar ( baùo thoâng soá cho nuùt nhö treân. UINT nIDResource // Soá hieäu cuûa toolbar resource • Chuyeån vò trí cuûa nuùt: Drag nuùt ñeán vò trí thích hôïp. ); Taïo daïng cho toolbar töø toolbar resource. 120Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com Khung cöûa soå giao dieän chính 119
  10. • Taùch nhoùm nuùt: Drag nuùt ra xa vò trí nuùt keá caän. DWORD dwStyle = WS_OVERLAPPEDWINDOW, • Xoùa nuùt: Drag nuùt ra khoûi thanh toolbar. /* Toïa ñoä, kích thöôùc cuûa frame • Trang trí nuùt: Thöïc hieän nhö trang trí icon. rectDefault: Giaù trò maëc nhieân */ const RECT& rect = rectDefault, Khi thieát keá xong, choïn muïc Save vaø ñoùng maøn hình thieát keá toolbar. // Con troû ñoái töôïng cöûa soå cha 10.3.2 Duøng toolbar resource cho ñoái töôïng CToolBar cuûa FrameWnd: CWnd* pParentWnd = NULL, Khai baùo ñoái töôïng thuoäc tính kieåu CToolBar trong lôùp CFrameWnd // Chuoãi teân menu resource cuûa öùng duïng: LPCTSTR lpszMenuName = NULL, CToolBar m_toolbar; // Ñaët trong khai baùo lôùp CFrameWnd DWORD dwExStyle // Thoâng soá daïng frame môû roäng Haønh vi OnCreate cuûa FrameWnd khôûi taïo thoâng soá cho ñoái töôïng ); Khôûi taïo thoâng soá cho frame window. toolbar . Sau ñoù keát ñoái töôïng toolbar vaøo frame window. afx_msg int OnCreate( LPCREATESTRUCT lpCreateStruct ); Haønh vi keá thöøa cho pheùp khôûi taïo thoâng soá caùc ñoái töôïng tröïc thuoäc. int CEmpFrame::OnCreate( LPCREATESTRUCT lpCreateStruct ) { virtual BOOL LoadFrame ( if (CFrameWnd::OnCreate(lpCreateStruct) == -1) UINT nIDResource, // Soá hieäu caùc resource lieân quan: icon, return -1; // cursor, baûng phím taét, menu (baét buoäc). // Create the main toolbar for frame window DWORD dwDefaultStyle // Thoâng soá daïng frame window m_toolbar.CreateEx(this, TBSTYLE_FLAT, = WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, WS_CHILD | WS_VISIBLE | CBRS_TOP CWnd* pParentWnd // Con troû ñoái töôïng cöûa soå cha | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY); ); Khôûi taïo thoâng soá cho frame window. // Initiate toolbar’s appearance by toolbar resource BOOL LoadAccelTable ( m_toolbar.LoadToolBar(IDR_MAINFRAME); LPCTSTR Baûng_phím_taét // Teân baûng phím taét trong resource m_toolbar.EnableDocking(CBRS_ALIGN_ANY); ); Naïp baûng phím taét, chæ duøng khi frame ñöôïc khôûi taïo bôûi Create. // attach the toolbar to frame window this->EnableDocking(CBRS_ALIGN_ANY); virtual void ActivateFrame ( this->DockControlBar(&m_toolbar, AFX_IDW_DOCKBAR_TOP); int nCmdShow = -1 // Thoâng soá veà traïng thaùi kích hoaït return 0; ); Haønh vi keá thöøa ñeå aán ñònh thoâng soá traïng thaùi frame khi kích hoaït. } void EnableDocking ( 10.4 LÔÙP CFrameWnd: DWORD dwDockStyle // Thoâng soá aán ñònh CFrameWnd laø lôùp ñoái töôïng keá thöøa töø CWnd cho pheùp quaûn lyù frame ); Qui ñònh caùch keát thanh coâng cuï vaøo frame window. window trong öùng duïng. Ngoaøi caùc thuoäc tính vaø haønh vi keá thöøa public töø dwDockStyle coù theå nhaän moät trong caùc giaù trò sau: CWnd, CFrameWnd coù caùc thuoäc tính vaø haønh vi ñaëc tröng giuùp vieäc aán ñònh CBRS_ALIGN_TOP : Keát ôû caïnh treân vuøng client. vaø ñieàu khieån frame window ñöôïc deã daøng vaø hieäu quaû. CBRS_ALIGN_BOTTOM : Keát ôû caïnh döôùi CFrameWnd( ); Haønh vi taïo laäp. CBRS_ALIGN_LEFT : Keát ôû caïnh traùi BOOL Create ( CBRS_ALIGN_RIGHT : Keát ôû caïnh phaûi LPCTSTR lpszClassName, // Teân lôùp ñaõ ñaêng kyù cuûa frame CBRS_ALIGN_ANY : Keát ôû moïi vò trí noùi treân. LPCTSTR lpszWindowName, // Teân, tieâu ñeà cuûa frame window /* thoâng soá daïng cuûa frame */ 122Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com Khung cöûa soå giao dieän chính 121
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2