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

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

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

Tham khảo tài liệu 'lập trình windows với mfc micrisoft visual c++6.0- p9', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả

Chủ đề:
Lưu

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

  1. - Printing and print preview: Cho pheùp chöùc naêng in aán. AÁn ñònh teân caùc taäp tin chöùa khai baùo vaø caøi ñaët cuûa caùc lôùp. - MAPI: Söû duïng dòch vuï mail cho döõ lieäu cuûa öùng duïng. Löu yù: Choïn lôùp CTxtDVFView, khai baùo lôùp cô sôû laø CEditView ñeå Choïn Next. maøn hình view cho pheùp soaïn thaûo. Sau cuøng choïn Finish. ÖÙng duïng nhaän ñöôïc coù theå soaïn thaûo vaø quaûn lyù döõ lieäu vaên baûn. Keá thöøa haønh vi Serialize( CArchive ar ) cuûa lôùp view, döïa treân giaù trò traû veà töø haønh vi IsStoring() cuûa ñoái töôïng tham soá ar, chuùng ta coù theå töï xöû lyù ñoïc/ghi döõ lieäu theo caáu truùc löu tröõ rieâng. 11.8 RICH TEXT FORMAT (RTF) DOCUMENT APPICATION: Choïn File / New: Trong hoäp hoäi thoaïi New: - Project type = MFC AppWizard. - ProjectName = rtfDVF ( teân döï aùn ). - Location = Thö muïc chöùa döï aùn. Sau ñoù choïn OK. Choïn MFC Standard: ÖÙng duïng coù giao dieän bình thöôøng hoaëc Windows Explorer: ÖÙng duïng coù giao dieän nhö windows explorer. Choïn cô cheá lieân keát vôùi thö vieän MFC. Choïn Next. AÁn ñònh nhö treân. Choïn Next. 142 Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com Caùc kieán truùc Document & View 143
  2. Choïn None (khoâng söû duïng cô sôû döõ lieäu). Choïn Next. Choïn caùc muïc caàn thieát (11.7). Choïn Next. ÖÙng duïng söû duïng OLE (Container) töø öùng duïng khaùc. Choïn Next. Choïn caùc muïc caàn thieát (11.7). Choïn Next. 144 Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com Caùc kieán truùc Document & View 145
  3. AÁn ñònh teân caùc taäp tin chöùa khai baùo vaø caøi ñaët cuûa caùc lôùp. Löu yù: Choïn lôùp CRtfDVFView, khai baùo lôùp cô sôû laø CRichEditView ñeå maøn hình view cho pheùp soaïn thaûo vaø lieân keát vôùi caùc ñoái töôïng OLE. Sau cuøng choïn Finish. ÖÙng duïng laøm vieäc vôùi döõ lieäu rtf. Choïn None (khoâng söû duïng cô sôû döõ lieäu). Choïn Next. 11.9 HTML DOCUMENT VIEW APPICATION: Choïn File / New. Khôûi ñaàu nhö (11.8); ProjectName = HtmlDVF. AÁn ñònh nhö treân. Choïn Next. Choïn None. Choïn Next. 146 Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com Caùc kieán truùc Document & View 147
  4. AÁn ñònh teân caùc taäp tin chöùa khai baùo vaø caøi ñaët cuûa caùc lôùp. Löu yù: Choïn lôùp CHtmlDVFView, khai baùo lôùp cô sôû laø CHtmlView ñeå maøn hình view hieån thò ñöôïc noäi dung trang HTML. Choïn Finish. AÁn ñònh URL: Haønh vi OnInitialUpdate cuûa lôùp CHtmlDVFView thöïc AÁn ñònh caùc muïc caàn thieát; choïn chöùc naêng in aán. Choïn Next. hieän aán ñònh URL (ví duï: www.hcmueco.edu.vn) cho Navigate2. ÖÙng duïng nhaän ñöôïc coù theå ñaûm nhaän coâng vieäc Browser ñôn giaûn. Ñeå caøi ñaët thanh coâng cuï nhö chöông trình Internet Explorer cho öùng duïng, ôû böôùc ‘Step 4 of 6’ ta choïn muïc: Internet Explorer Rebars. 11.10 MOÄT SOÁ LÔÙP VIEW ÑAËC BIEÄT: 11.10.1 CListView: CListView laø lôùp ñoái töôïng quaûn lyù view daïng danh saùch (list). CListView(); Taïo laäp ñoái töôïng view. CListCtrl& GetListCtrl ( ); Traû veà ñoái töôïng CListCtrl laøm cô sôû cho caùc taùc vuï lieân quan ListView. Caùc haønh vi ñaëc tröng cuûa CListCtrl: BOOL SetBkColor( COLOREF cr ); Ñaët maøu neàn cho listview. COLORREF GetBkColor(); Traû veà giaù trò maøu neàn cuûa listview. Choïn caùc muïc caàn thieát (11.7). Choïn Next. 148 Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com Caùc kieán truùc Document & View 149
  5. CImageList* pImagelist, // Con troû ñoái töôïng imagelist CImageList* SetImageList ( CImageList* pImagelist, // Ñoái töôïng imagelist int imgStyle // Thoâng soá qui ñònh caùch söû duïng int imgStyle // Thoâng soá qui ñònh caùch söû duïng ); Choïn ñoái töôïng imagelist chöùa aûnh duøng cho caùc muïc cuûa treeview. ); Choïn ñoái töôïng imagelist chöùa aûnh duøng cho caùc muïc cuûa listview. Caùch söû duïng coù theå laø: Caùch söû duïng coù theå laø: TVSIL_NORMAL : AÛnh duøng cho caùc muïc bình thöôøng. LVSIL_NORMAL : AÛnh bình thöôøng. TVSIL_STATE : AÛnh duøng cho caùc muïc ñaëc tröng do ngöôøi LVSIL_SMALL : AÛnh nhoû. duøng ñònh nghóa. int InsertItem ( UINT GetCount( ); Traû veà soá muïc cuûa treeview. int nItem, // Chæ soá muïc ñöôïc theâm HTREEITEM GetRootItem( ); Traû veà handle cuûa phaàn töû ñaàu goác. LPCTSTR lpszItem, // Noäi dung thoâng baùo cuûa muïc HTREEITEM GetFirstVisibleItem( ); Traû veà handle cuûa phaàn töû hieån int nImage // Chæ soá aûnh trong Imagelist maø muïc söû duïng thò ñaàu tieân trong vuøng nhìn thaáy cuûa treeview (NULL: Khoâng coù). ); Theâm moät muïc vaøo listview. HTREEITEM GetSelectedItem(); Traû veà handle cuûa phaàn töû ñang ñöôïc BOOL DeleteItem ( choïn. int nItem HTREEITEM GetNextVisibleItem( HTREEITEM hItem ); Traû veà // Soá hieäu cuûa muïc ); Xoùa moät muïc trong listview. handle cuûa phaàn töû hieån thò keá sau phaàn töû coù handle laø hItem. HTREEITEM GetPrevVisibleItem( HTREEITEM hItem ); Traû veà BOOL DeleteAllItems( ); Xoùa roãng listview. BOOL GetItem ( handle cuûa phaàn töû hieån thò keá tröôùc phaàn töû coù handle laø hItem. LVITEM* pItem // Con troû ñeán caáu truùc nhaän thoâng tin HTREEITEM InsertItem ( LPCTSTR lpszItem, ); Laáy thoâng tin lieân quan ñeán muïc coù soá thöù töï nItem. // Noäi dung thoâng baùo cuûa muïc int nImage, BOOL SetItem ( // Chæ soá aûnh duøng cho muïc ôû traïng thaùi LVITEM* pItem int nImageSelected, // Con troû ñeán caáu truùc chöùa thoâng soá // bình thöôøng vaø khi muïc ñöôïc choïn. ); Ñaët thoâng soá cho muïc coù chæ soá laø pItem ->iItem. HTREEITEM parent = TVI_ROOT, // Con troû muïc cha HTREEITEM hInsertAfter = TVI_LAST // Con troû muïc ñöùng tröôùc BOOL EnsureVisible ( int nItem, // Chæ soá phaàn töû caàn nhìn thaáy. ); Theâm moät muïc vaøo treeview, traû veà handle cuûa phaàn töû môùi theâm. BOOL bPartialIsOK // =FALSE: Toaøn boä, =TRUE: Moät phaàn BOOL DeleteItem ( ); Cuoän danh saùch ñeå nhìn thaáy phaàn töû nItem neáu phaàn töû naøy khoâng HTREEITEM hItem /* handle cuûa muïc*/ ); Xoùa muïc cuûa treeview. ñöôïc nhìn thaáy trong vuøng hieån thò cho pheùp cuûa view. BOOL DeleteAllItems( ); Xoùa roãng noäi dung treeview. BOOL GetItem ( 11.10.2 CTreeView: TVITEM* pItem // Con troû ñeán caáu truùc nhaän thoâng tin CTreeView laø lôùp ñoái töôïng quaûn lyù maøn hình view coù caáu truùc caây. ); Laáy thoâng tin cuûa phaàn töû pItem->iItem. CTreeView( ); Taïo laäp ñoái töôïng treeview. BOOL SetItem ( CTreeCtrl& GetTreeCtrl( ); Traû veà ñoái töôïng CTreeCtrl laøm cô sôû cho TVITEM* pItem // Con troû ñeán caáu truùc chöùa thoâng soá caùc taùc vuï lieân quan TreeView. ); Ñaët thoâng soá cho phaàn töû pItem->iItem. Caùc haønh vi ñaëc tröng cuûa CTreeCtrl: BOOL SetItemImage ( BOOL SetBkColor( COLOREF cr ); Ñaët maøu neàn cho treeview. HTREEITEM hItem, // handle cuûa phaàn töû COLORREF GetBkColor( ); Traû veà giaù trò maøu neàn cuûa treeview. int nImage, // Chæ soá aûnh duøng cho muïc ôû traïng thaùi CImageList* SetImageList ( 150 Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com Caùc kieán truùc Document & View 151
  6. int nSelectedImage // bình thöôøng vaø khi muïc ñöôïc choïn. BOOL Create ( CWnd* pParentWnd, ); AÁn ñònh chæ soá aûnh trong imagelist duøng cho muïc. // Con troû ñoái töôïng cöûa soå cha int nMaxRows, BOOL SetItemText ( // Soá haøng toái ña cuûa caùc pane HTREEITEM hItem, int nMaxCols, // handle cuûa muïc // Soá coät toái ña cuûa caùc pane LPCTSTR lpszItem SIZE sizeMin, // Noäi dung thoâng baùo // Kích thöôùc toái thieåu cuûa moãi pane CCreateContext* pContext, // Thoâng soá lieân keát, laáy töø frame ); AÁn ñònh laïi noäi dung thoâng baùo cuûa muïc trong treeview. DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_HSCROLL | 11.10.3 CSplitterWnd: WS_VSCROLL | SPLS_DYNAMIC_SPLIT, Vuøng client trong frame window cho pheùp caøi ñaët moät cöûa soå view duy UINT nID = AFX_IDW_PANE_FIRST nhaát. Ñeå loàng ñöôïc nhieàu view vaøo frame ta phaûi phaân chia vuøng client cuûa ); Khôûi taïo thoâng soá spliiter window vôùi soá haøng, coät thay ñoåi ñöôïc. frame. Vieäc phaân chia naøy ñöôïc hoã trôï bôûi coâng cuï splitter window. BOOL CreateStatic ( CWnd* pParentWnd, // Con troû ñoái töôïng cöûa soå cha int nRows, // Soá haøng caùc pane ñöôïc taïo int nCols, // Soá coät caùc pane ñöôïc taïo DWORD dwStyle = WS_CHILD | WS_VISIBLE, // Daïng vaø UINT nID = AFX_IDW_PANE_FIRST // Soá hieäu ); Taïo spliiter window vôùi soá haøng vaø coät coá ñònh. virtual BOOL CreateView ( int row, // Chæ soá haøng vaø int col, // chæ soá coät cuûa pane trong splitter CRuntimeClass* pViewClass, // Caáu truùc chöùa thoâng tin lôùp view SIZE sizeInit // Kích thöôùc khôûi ñaàu cuûa pane ); Caøi view vaøo moät pane xaùc ñònh trong splitter window. pViewClass : Con troû ñoái töôïng CRuntimeClass quaûn lyù thoâng tin cuûa Moãi splitter window cho pheùp taùch vuøng client cuûa frame window thaønh lôùp view töông öùng taïi thôøi ñieåm thöïc thi chöông trình. Xem (11.4). nhieàu haøng vaø coät. Sau ñoù, moãi oâ (pane) nhaän ñöôïc töø splitter naøy coù theå laïi void SetColumnInfo ( ñöôïc taùch ra thaønh nhieàu haøng vaø coät bôûi moät splitter khaùc. Trong ví duï treân: int col, // Chæ soá coät trong splitter - Splitter thöù nhaát taùch frame window thaønh hai doøng vaø 1 coät. int cxIdeal, // Ñoä roäng mong muoán vaø - Splitter thöù hai taùch pane thöù nhaát cuûa splitter thöù nhaát thaønh 2 coät int cxMin // ñoä roäng toái thieåu (tính baèng pixel) vaø 1 doøng. ); AÁn ñònh thoâng soá veà ñoä roäng cho coät trong splitter window. Moãi pane nhaän ñöôïc töø caùc splitter window cho pheùp gaén moät maøn hình void GetColumnInfo ( view. Nhö vaäy, thoâng qua caùc splitter window, frame window coù theå chöùa int col, // Chæ soá coät nhieàu maøn hình view ñoàng thôøi. int& cxCur, // Tham bieán chöùa ñoä roäng hieän thôøi Nhaèm tieän vieäc thao taùc vôùi coâng cuï splitter window, MFC cung caáp lôùp int& cxMin // Tham bieán chöùa ñoä roäng toái thieåu ñoái töôïng CSplitterWnd cho pheùp quaûn lyù caùc spliiter window trong öùng duïng. ); Laáy thoâng tin veà ñoä roäng cuûa coät. Caùc haønh vi ñaëc tröng cuûa lôùp CSplitterWnd nhö sau: void SetRowInfo ( CSplitterWnd( ); Taïo laäp ñoái töôïng splitter window. 152 Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com Caùc kieán truùc Document & View 153
  7. int row, // Chæ soá haøng Thöïc haønh 1: Vieát öùng duïng nhö VD30. Taïo splitter trong CEmpFrame vôùi int cyIdeal, // Ñoä cao mong muoán hai view: beân traùi laø treeview (duøng lôùp view keá thöøa töø CTreeView), beân int cyMin // Ñoä cao toái thieåu phaûi laø list (duøng lôùp view keá thöøa töø ListView). ); AÁn ñònh thoâng soá veà ñoä cao cho haøng trong splitter window. Taïo döï aùn VD35 töông töï VD30. void GetRowInfo ( Ñaêng kyù söû duïng CTreeView vaø CListView: int row, // Chæ soá haøng Trong taäp tin stdafh.h cuûa döï aùn, boå sung chæ thò: int& cyCur, // Tham bieán chöùa ñoä cao hieän thôøi #include int& cyMin // Tham bieán chöùa ñoä cao toái thieåu Boå sung vaøo döï aùn hai lôùp môùi: ); Laáy thoâng tin veà ñoä cao cuûa haøng. CEmpTree keá thöøa töø CTreeView void RecalcLayout( ); Caäp nhaät thoâng soá aán ñònh môùi cuûa splitter. CEmpList keá thöøa töø CListView. CWnd* GetPane ( Caùch thöïc hieän töông töï nhö ñaõ laøm vôùi CEmpWnd, muïc (5.4.1). int row, int col // Chæ soá haøng vaø coät cuûa pane Khai baùo ñoái töôïng thuoäc tính protected m_splitter kieåu CSplitterWnd. ); Traû veà con troû ñoái töôïng view caøi trong pane. Haønh vi OnCreateClient cuûa CEmpFrame thöïc hieän khôûi taïo vaø caøi ñaët caùc pane, view caàn thieát: 11.10.4 SÖÛ DUÏNG SPLITTERWND TRONG FRAME WINDOW: Khai baùo ñoái töôïng thuoäc lôùp SplitterWnd nhö laø thuoäc tính cuûa frame. BOOL CEmpFrame::OnCreateClient( LPCREATESTRUCT lpcs, CCreateContext* pContext ) CSplitterWnd m_splitter; { if (!CFrameWnd::OnCreateClient(lpcs, pContext)) Duøng haønh vi OnCreateClient cuûa frame ñeå taïo caùc pane vaø caøi view: return FALSE; BOOL CEmpFrame::OnCreateClient ( m_splitter.CreateStatic(this, 1, 2); LPCREATESTRUCT lpcs, m_splitter.CreateView( 0, 0, RUNTIME_CLASS(CEmpTree), CCreateContext* pContext ) CSize(120,0), NULL ); { m_splitter.CreateView(0,1, RUNTIME_CLASS(CEmpList), if (!CFrameWnd::OnCreateClient(lpcs, pContext)) CSize(0,0), NULL ); return FALSE; return TRUE; // Duøng ñoái töôïng splitter taùch vuøng client cuûa frame } m_splitter.CreateStatic ( this , 1, 2 ); // Ví duï: 1 haøng, 2 coät Thöïc haønh 2: Thöïc hieän öùng duïng töông töï VD35. Töï ñoäng thöïc hieän boå // Gaén caùc view töông öùng vaøo caùc pane taïo ñöôïc: sung ba phaàn töû trong treeview, moãi phaàn töû coù hai phaàn töû con. Caùc phaàn m_splitter.CreateView ( 0, 0, RUNTIME_CLASS(viewClass1), töû ñeàu coù hình minh hoïa cho traïng thaùi ñöôïc choïn vaø khoâng ñöôïc choïn. CSize(120,0), NULL); Taïo döï aùn VD36 töông töï VD35. m_splitter.CreateView(0,1, RUNTIME_CLASS(viewClass2), CSize(0,0), NULL); Boå sung bitmap resource chöùa hai aûnh cuøng kích thöôùc: . Ñaët soá // Thöïc hieän caùc caøi ñaët khaùc hieäu cho bitmap resource laø IDB_IMGTREE. ... Haønh vi OnCreate cuûa CEmpTree ñaêng kyù söû duïng aûnh vaø boå sung caùc return TRUE; } phaàn töû caàn thieát: 11.10.5 CAÙC VÍ DUÏ THÖÏC HAØNH: int CEmpTree::OnCreate(LPCREATESTRUCT lpCreateStruct) 154 Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com Caùc kieán truùc Document & View 155
  8. 1. Taïo öùng duïng soaïn thaûo vaên baûn (text). ÖÙng duïng cho pheùp ngöôøi duøng ñaët { password baûo veä döõ lieäu. Chæ môû ñöôïc döõ lieäu neáu coù password hôïp leä. if (CTreeView::OnCreate(lpCreateStruct) == -1) 2. Töông töï baøi taäp 1 cho öùng duïng RTF view. return -1; 3. Vieát öùng duïng HTMLView: Thanh coâng cuï rebar (nhö IE cuûa Microsoft); static CImageList img; // use only in this function Backward, Forward, hoäp combobox nhaäp vaø ghi nhôù caùc URL ñaõ nhaäp. img.Create(IDB_IMGTREE, 16, 2, RGB(255,255,255)); 4. Phaùt trieån VD36 thaønh öùng duïng cho pheùp xem caáu truùc oå ñóa, caây thö muïc treân maùy nhö windows explorer. CTreeCtrl& myCtrl = GetTreeCtrl(); // Based control HD: Xem haøm FindFirstFile() vaø FindNextFile(). myCtrl.SetImageList(&img, TVSIL_NORMAL); 5. Taïo cô sôû döõ lieäu Access. Duøng boä DVF (V = FormView) thích hôïp ñeå xem vaø caäp nhaät döõ lieäu cho caùc baûng trong cô sôû döõ lieäu. HTREEITEM hihi; // Add needed items 6. Vieát öùng duïng RTF View. Trong maøn hình view, khi di chuyeån chuoät leân hihi = myCtrl.InsertItem("Muc 1", 0, 1); myCtrl.InsertItem("Muc 11", 0, 1, hihi); caùc noäi dung coù chænh daïng gaïch döôùi thì thöïc hieän chuyeån daïng con chuoät myCtrl.InsertItem("Muc 12", 0, 1, hihi); thaønh , ngöôïc laïi chænh daïng chuoät veà daïng maëc nhieân cuûa heä thoáng. hihi = myCtrl.InsertItem("Muc 2", 0, 1); 7. Vieát öùng duïng thi traéc nghieäm ñôn giaûn: Maøn hình view rtf cho pheùp hieån myCtrl.InsertItem("Muc 21", 0, 1, hihi); thò vaên baûn chænh daïng vaø hình aûnh phaûn aùnh noäi dung cuûa caùc caâu hoûi vaø caùc myCtrl.InsertItem("Muc 22", 0, 1, hihi); ñaùp aùn löïa choïn. Hieån thò daáu choïn khi ngöôøi duøng ñaùnh daáu ñaùp aùn. hihi = myCtrl.InsertItem("Muc 3", 0, 1); 8. Quan saùt chöông trình tra cöùu töø ñieån. Vieát öùng duïng RTF view söû duïng myCtrl.InsertItem("Muc 31", 0, 1, hihi); moät cuûa soå con kieåu CEdit. Khi thöïc hieän double treân moät töø baát kyø trong maøn myCtrl.InsertItem("Muc 321", 0, 1, hình view rtf thì kích hoaït cöûa soå con vaø ñieàn töø vöøa choïn vaøo cöûa soå con naøy. myCtrl.InsertItem("Muc 32", 0, 1, hihi)); return 0; Khi ngöôøi duøng click vaøo view, cöûa soå con töï ñoäng bieán maát. } 9. Quan saùt chöông trình thi traéc nghieäm TOEFL. Vieát öùng duïng nhö baøi taäp soá 8, Khi thöïc hieän double treân moät doøng baát kyø trong maøn hình view rtf thì Haønh vi keá thöøa PreCreateWindow aán ñònh thoâng soá daïng treeview: kích hoaït cöûa soå con vaø ñieàn noäi dung doøng ñöôïc choïn vaøo cöûa soå con naøy, BOOL CEmpTree::PreCreateWindow(CREATESTRUCT& cs) { Khi click vaøo cöûa soå view, noäi dung chænh söûa ñöôïc caäp nhaät vaøo view. cs.style |= TVS_HASLINES|TVS_LINESATROOT| 10. Quan saùt Yahoo Messenger!. Thöïc hieän öùng duïng giao dieän rtf nhö sau: TVS_HASBUTTONS; return CTreeView::PreCreateWindow(cs); } Moät soá thoâng soá aán ñònh daïng cuûa treeview: TVS_HASLINES : Treeview coù ñöôøng noái giöõa caùc muïc. TVS_LINESATROOT : Ñöôøng noái töø goác. TVS_HASBUTTONS : Coù nuùt môû , ñoùng muïc. TVS_SINGLEEXPAND : Cho pheùp môû 1 muïc duy nhaát ôû moãi luùc. TVS_xxx : Xem MSDN. THÖÏC HAØNH: 156 Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com Caùc kieán truùc Document & View 157
  9. const char* m_pszProfileName : Löu ñöôøng daãn vaø teân taäp tin INI söû CHÖÔNG 12: duïng bôûi öùng duïng. Coù theå thay ñoåi giaù trò naøy ñeå aán ñònh taäp tin INI: Moät soá vaán ñeà trong windows // Huûy boû vuøng nhôù caáp phaùt free((void*)m_pszProfileName); m_pszProfileName=_tcsdup(_T(“ÑöôøngDaãn-TeânTaäpTin_INI”)); BOOL WriteProfileString ( 12.1 TAÄP TIN INI: LPCTSTR lpszSection, // Teân thaønh phaàn Taäp tin INI laø taäp tin vaên baûn chöùa caùc noäi dung phuïc vuï cho hoaït ñoäng LPCTSTR lpszEntry, // Teân muïc cuûa öùng duïng trong moâi tröôøng windows phieân baûn 3.x vaø 9x. Caùc noäi dung LPCTSTR lpszValue // Giaù trò cuûa muïc (kieåu chuoãi) naøy ñöôïc chia thaønh caùc thaønh phaàn (section) phaân bieät theo chöùc naêng hoaëc ); Löu giaù trò kieåu chuoãi cuûa moät muïc trong thaønh phaàn xaùc ñònh. theo nhoùm öùng duïng con. Moãi thaønh phaàn chöùa caùc muïc vôùi teân goïi xaùc ñònh BOOL WriteProfileInt ( vaø phaân bieät vôùi caùc muïc khaùc trong cuøng thaønh phaàn. Moãi muïc töông öùng LPCTSTR lpszSection, // Teân thaønh phaàn vôùi moät giaù trò duy nhaát. Giaù trò cuûa muïc ñöôïc vieát ngay sau teân muïc, vaø ñöôïc LPCTSTR lpszEntry, // Teân muïc ngaên caùch vôùi teân muïc baèng daáu "=". int nValue // Giaù trò cuûa muïc (soá nguyeân) ); Löu giaù trò kieåu soá nguyeân cuûa moät muïc trong thaønh phaàn xaùc ñònh. BOOL WriteProfileBinary ( LPCTSTR lpszSection, // Teân thaønh phaàn LPCTSTR lpszEntry, // Teân muïc LPBYTE pData, // Vuøng ñeäm chöùa giaù trò maõ UINT nBytes // Kích thöôùc vuøng ñeäm ); Löu khoái maõ nhò phaân cuûa moät muïc trong thaønh phaàn xaùc ñònh. CString GetProfileString ( LPCTSTR lpszSection, // Teân thaønh phaàn LPCTSTR lpszEntry, // Teân muïc. Neáu muïc ñoïc khoâng LPCTSTR lpszDefault = NULL // coù thì söû duïng giaù trò naøy. ); Traû veà giaù trò kieåu chuoãi cuûa moät muïc trong thaønh phaàn töông öùng. UINT GetProfileInt ( Xeùt ví duï laø taäp tin WIN.INI noùi treân: LPCTSTR lpszSection, // Teân thaønh phaàn - windows : Teân thaønh phaàn (section). LPCTSTR lpszEntry, // Teân muïc. Neáu muïc ñoïc khoâng - NullPort : Teân muïc (entry). int nDefault // coù thì söû duïng giaù trò naøy. - None : Giaù trò cuûa muïc NullPort. ); Traû veà giaù trò kieåu soá nguyeân cuûa moät muïc trong thaønh töông öùng. Vieäc truy xuaát giaù trò caùc muïc trong taäp tin INI ñöôïc hoã trôï bôûi lôùp ñoái BOOL GetProfileBinary ( töôïng quaûn lyù öùng duïng CWinApp thoâng qua caùc thuoäc tính, haønh vi sau: LPCTSTR lpszSection, // Teân thaønh phaàn const char* m_pszAppName : Löu chuoãi teân cuûa öùng duïng. Giaù trò LPCTSTR lpszEntry, // Teân muïc thuoäc tính naøy coù theå ñöôïc thay ñoåi ñöôïc nhö sau: LPBYTE *pData, // Ñòa chæ con troû vuøng ñeäm // Giaûi phoùng vuøng nhôù free( (void*) m_pszAppName ); UINT *nBytes // Ñòa chæ bieán nhaän kích thöôùc. m_pszAppName =_tcsdup( _T(“Teân_môùi_cuûa_öùng_duïng”) ); ); Ñoïc khoái maõ nhò phaân cuûa moät muïc vaøo vuøng ñeäm. 158 Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com Moät soá vaán ñeà trong Windows 159
  10. Haønh vi traû veà giaù trò TRUE neáu taùc vuï ñoïc thaønh coâng. - Moãi muïc trong caáu truùc caây (tree) goïi laø khoùa (key). Vôùi: pData : Ñòa chæ bieán con troû quaûn lyù vuøng ñeäm nhaän thoâng tin. - Khoùa laù (khoâng coù con) laø thaønh phaàn chöùa caùc muïc. nBytes : Ñòa chæ bieán chöùa kích thöôùc thoâng tin ñoïc ñöôïc. - Moãi muïc coù moät teân ñeå nhaän bieát vaø coù moät giaù trò xaùc ñònh. ÖÙng duïng caàn giaûi phoùng vuøng ñeäm pData khi chaám döùt söû duïng. Haønh vi SetRegistryKey cuûa lôùp ñoái töôïng CWinApp cho pheùp ñònh höôùng vieäc ñoïc/ghi giaù trò caùc muïc leân system registry thay vì söû duïng taäp tin INI Ñoaïn chöông trình sau thöïc hieän ghi xuoáng thaønh phaàn MY_TEST nhö (12.1). Haønh vi loaïi protected naøy coù cuù phaùp nhö sau: cuûa taäp tin INI cuûa öùng duïng: MyName = Mr.Emp vaø MyVer = 11. void SetRegistryKey ( UINT lpszRegistryKey ); // Ñoái töôïng quaûn lyù öùng duïng CWinApp* pApp = AfxGetApp(); lpszRegistryKey : Thoâng thöôøng laø chuoãi chöùa teân haõng phaàn meàm; ví pApp->WriteProfileString ("MY_TEST", "MyName", "Mr.Emp"); duï Netscape. Giaù trò naøy trôû thaønh khoùa con cuûa khoùa Software thuoäc pApp->WriteProfileInt ("MY_TEST", "MyVer", 11); khoùa goác HKEY_CURRENT_USER trong system registry. Ñoaïn chöông trình sau thöïc hieän ñoïc töø thaønh phaàn MY_TEST cuûa taäp tin INI giaù trò hai muïc noùi treân. Khi öùng duïng thöïc hieän ñoïc/ghi giaù trò muïc, teân cuûa öùng duïng (löu trong m_pszAppName cuûa ñoái töôïng öùng duïng) trôû thaønh khoùa con cuûa khoùa xaùc // Ñoái töôïng quaûn lyù öùng duïng CWinApp* pApp = AfxGetApp(); ñònh bôûi lpszRegistryKey, vaø caùc thaønh phaàn chöùa caùc muïc trôû thaønh khoùa CString myName = pApp->GetProfileString ( con cuûa khoùa m_pszAppName. Moät thöù töï ñöôïc thieát laäp nhö sau: "MY_TEST", "MyName", "Mr.Emp" ); UINT myVer = pApp->GetProfileInt ("MY_TEST", "MyVer", 11); HKEY_CURRENT_USER\Software\\ \\. 12.2 SYSTEM REGISTRY: System Registry laø cô sôû döõ lieäu do windows quaûn lyù, ñöôïc söû duïng ñeå löu Thöïc hieän öùng duïng IniReg. ÖÙng duïng ñaêng kyù söû duïng system registry tröõ caùc noäi dung phuïc vuï cho hoaït ñoäng cuûa heä thoáng vaø caùc öùng duïng. vôùi khoùa "Mr.Emp", ñoàng thôøi tieán haønh caùc taùc vuï ñoïc / ghi hai giaù trò nhö System registry coù caáu truùc nhö sau (chöông trình RegEdit.exe). ví duï muïc (12.1). Sau ñaây laø caùc böôùc thöïc hieän döï aùn cuûa öùng duïng: Duøng MFC Wizard taïo döï aùn IniReg vôùi giao dieän chính laø dialog. Haønh vi InitInstance cuûa lôùp ñoái töôïng quaûn lyù öùng duïng thöïc hieän ñaët laïi teân cho öùng duïng vaø ñaêng kyù söû duïng registry vôùi khoùa "Mr.Emp": BOOL CIniRegApp::InitInstance() { // Giaûi phoùng vuøng nhôù free((void*)m_pszAppName); m_pszAppName=_tcsdup( _T("IniReg") ); // Ñaët teân öùng duïng // Ñaêng kyù registry SetRegistryKey( _T("Mr.EMP") ); CIniRegDlg dlg; m_pMainWnd = &dlg; // Thöïc hieän giao dieän dlg.DoModal(); return TRUE; } Thöïc hieän caùc boå sung sau cho lôùp dialog giao dieän CIniRegDlg: - Môû dialog resource, caøi ñaët caùc control sau: (System registry ôû moät maùy söû duïng phieân baûn Windows-Me ) 160 Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com Moät soá vaán ñeà trong Windows 161
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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