Luận văn ngôn ngữ Visual C++
Luận văn tốt nghiệp--------------------------------------------------------------------------------------------------CHơNG I: GIớI THIệU Về NGôN NGữ I - GIớI THIệU Về VISUAL C++1- Sự đóng kín :Sự đóng kín là cơ chế liên kết mã và dữ liệu mà nó thao tác, và giữ cho cả hai đợc an toàn khỏi sự can thiệp từ bên ngoài vào do sử dụng sai. Trong ngôn ngữ hớng đối tợng mã và dữ liệu liên kết với nhau để tạo thành một hợp đen độc lập. Trong hộp này là tất cả các mã và dữ liệu cần thiết. Khi mà một dữ liệu liên kết nhthế thì một đối tợng đợc tạo ra. Nói cách khác đối tợng là dụng cụ hỗ trợ cho sự đóng kín. Trong một đối tợng mã, dữ liệu hoặc cả hai có thể là riêng của đối tợng đó hoặc chung. Mã hoặc dữ liệu thuộc về đối tợng đó và chỉ đợc truy cập bởi bộ phận của đối tợng. Nghĩa là mã và dữ liệu riêng không đợc truy cập bởi các phần khác của chơng trình tồn tại ngoài đối tợng. Khi dữ liệu là chung, các bộ phận khác của chơng trình có thể truy cập đợc nó mặc dù nó đợc định nghĩa trong một đối tợng. Các phần chung của đối tợng đợc dùng để cung cấp một giao diện có điều khiển cho các phần riêng của đối tợng .Với mọi mục đích, một đối tợng là một biến thuộc loại do ngời sử dụng định nghĩa. Một đối tợng liên kết mã và dữ liệu có thể đợc xem nh là một biến. Mỗi lần chúng ta định nghĩa một đối tợng mới, chúng ta tạo ra một loại dữ liệu mới.2 Tính đa dạng :Tính đa dạng là tính chất cho phép một tên đợc dùng cho hai hay nhiều mục đích khác nhau có quan hệ về phơng diện kỹ thuật. Mục đích của tính đa dạng đợc áp dụng cho OOP (Object Oriented Programming )là cho phép một tên dùng để chỉ rõ một lớp tác động tổng quát. Trong lớp tác động tổng quát, một tác động cụ thể đ-ợc xác định bởi loại dữ liệu.Tổng quát khái niệm tính đa dạng là ý tởng Một giao diện nhiều phơng pháp . Điều này có nghĩa là thiết kế một giao diện chung cho một nhóm có tác động tơng quan. Tuy nhiên, tác động cụ thể đợc thi hành cụ thể vào dữ liệu. u điểm của tính đa dạng là giúp làm giảm tính phức tạp bằng cách cho phép cùng một giao diện đợc sử dụng để chỉ rõ một lớp tác động tổng quát, chính trình biên dịch chọn lựa tác động cụ thể cho từng trờng hợp. Là ngời lập trình, ta không cần thực hiện này bằng tay. Chỉ cần nhớ và sử dụng giao diện chung .Tính đa dạng có thể áp dụng cho cả hàm lẫn toán tử. Thật sự tất cả các ngôn ngữ lập trình điều có một ứng dụng hạn chế về tính đa dạng khi nó liên hệ với toán tử số học. Ví dụ trong C dấu + dùng để cộng các số nguyên, các số nguyên dài, các ký tự và các giá trị dấu phẩy động. Trong những trờng hợp này trình biên dịch tự động chọn số nguyên nào để áp dụng. Trong C++ có thể mở rộng khái niệm này cho - Trang 1- Luận văn tốt nghiệp--------------------------------------------------------------------------------------------------các biến mà ta định nghĩa. Loại tính đa dạng này gọi là qúa tải các toán tử (operation loading).3 Tính kế thừa :Tính kế thừa là qúa trình mà một đối tợng có thể có đợc các tính chất của một đối tợng khác. Cụ thể hơn một đối tợng có thể thừa kế các tính chất tổng quát để bổ xung thêm các đặt điểm của nó. Tính thừa kế là quan trọng vì nó cho phép các đối t-ợng hỗ trợ các khái niệm phân loại theo thứ bậc. Hầu hết không đợc quản lý bằng sự phân loại theo thứ bậc. Trong mỗi trờng hợp lớp con thừa kế mọi đặc điểm của lớp cha và bổ xung thêm các đặt trng của nó. Không sử dụng sự phân loại theo thứ bậc, mỗi đối tợng sẽ phải định nghĩa mọi đặt trng liên quan đến nó. Tuy nhiên nhờ sự sử dụng tính kế thừa để mô tả một đối tợng bằng cách chỉ rõ lớp tổng quát nào thuộc về đối tợng cùng với các đặt điểm riêng làm cho đối tợng trở thành duy nhất.II- L P V ĐẩI T ẻNG :1- Lớp :Có lẽ đặt điểm quan trọng nhất trong lập trình hớng đối tợng là lớp. Lớp là cơ cấu đợc dùng để tạo đối tợng. Nh vậy lớp là trung tâm của nhiều đặc điểm.Cú pháp để khai báo một lớp cũng tơng tự nh cú pháp để khai báo một cấu trúc. Dạng tổng quát nh sau:Class tên-lớp {Các hàm và biến riêng của lớp Public :Các hàm và biến riêng của lớp} danh sách các đối tợng Trong khai báo lớp danh sách các đối tợng là tùy chọn. Giống nh cấu trúc ta có thể khai báo đối tợng sau này khi cần. Tên lớp là tùy chọn có tính kỹ thuật, từ quan điểm thực hành, thực sự nó luôn luôn cần đến. Lý do là tên lớp trở thành một tên kiểu mới đợc dùng để khai báo các đối tợng của lớp.Các hàm và biến đợc khai báo bên trong khai báo lớp đợc gọi là thành viên của lớp đó. Theo mặt định, thì tất cả các hàm và biến khai báo bên trong lớp là thuộc riêng của lớp đó. Trong một lớp có thể có các khai báo nh : public, protected, private.+ public : là khai báo tới mọi client.+ protected : là khai báo đợc truy xuất chỉ chính lớp đó, lớp con của nó, và lớp friend.+ private : là khai báo chỉ chính lớp đó và lớp friend sử dụng.Tóm lại: Lớp là tập hợp của các đối tợng cùng có một cấu trúc chung hay hành vi chung. Một đối tợng chỉ là thể hiện của lớp.- Trang 2- Luận văn tốt nghiệp--------------------------------------------------------------------------------------------------2- Đối t ợng :Một đối tợng có trạng thái, hành vi, đặc tính nhận dạng: Cấu trúc và hành vi của các đối tợng giống nhau đợc định nghĩa trong một lớp chung của chúng, thuật ngữ instance và đối tợng có thể thay thế lẫn nhau.+ Trạng thái (state): của một đối tợng bao gồm tất cả các đặc tính ( thờng là tĩnh ) của đối tợng trừ đi giá trị hiện tại ( thờng là động ) của mỗi đặc tính đó.+ Hành vi (behavior): của một đối tợng là đối tợng hoạt động nh thế nào theo điều kiện trạng thái của nó thay đổi và thông điệp truyền đến.+ Hoạt động ( Operations): là một dịch vụ mà lớp cung cấp cho khách hàng của nó.Có hai loại operation thông dụng cần thiết để tạo và hủy những thể hiện của một lớp là :+ constructor : là operation khởi tạo đối tợng và (hoặc) khởi động trạng thái của nó .+Destructor : là operation giải phóng trạng thái của một đối tợng và hủy chính đối tợng đó. III- TH VIệN TRONG VISUAL C++ :Visual C++ bao gồm th viện của MicroSoft Foundation Class( MFC ) nh là một công cụ quan trọng để xây dựng nhanh chơng trình Window sử dụng C++. MFC đợc viết ra với một mục đích duy nhất làm cho việc lập trình Window dễ dành hơn là theo kiểu cổ điển bằng cách cung cấp những lớp đối với hành vi (behavior) và thuộc tính ( property) với dạng biến lo giải quyết ( handle) mọi công việc thông dụng trong tất cả chơng trình windows. Những lớp đối tợng nằm trong đã đợc thừa kế .Những hành vi nằm trong mỗi lớp đối tợng sẽ thực hiện những phần hành mà lập trình viên window phải viết trần ra. Nhiều lớp đối tợng trong MFC mang một t-ơng ứng rất gần gũi với structure và với window class theo nghĩa cổ điển của window.1- Các nhóm lớp trong th viện MFC : Document & application class : Lo quản lý các tài liệu và các ứng dụng . Control Class : Liên quan đến các ô điều khiển nhìn thấy đợc (visual control) nh ô hiệu đính (Edit control), nút điều khiển (command button) ô liệt kê (list box) cũng nh ô hỗn hợp ( combo box) Dialog box Class: Xử lý các khung đối thoại tự tạo bởi ngời sử dụng ( custom dialog box) và các khung đối thoại thông dụng đã cài sẵn ( command dialog box nh file, color selection, print, Fine/ Replace dialog box). Fram Window class : Quản lý các khung cửa sổ (chính và con ) liên quan đến tài liệu SDI và MDI. View Class: Quản lý các trình đơn và các mục trình đơn.- Trang 3- Luận văn tốt nghiệp-------------------------------------------------------------------------------------------------- Control Bar Class : Tạo những thanh công, thanh tình trạng và các dialog Bar trong một ứng dụng đi kèm với cửa sổ bị chẻ đôi giống nh trên file Manager của windows. Menu Bar : Quản lý các trình đơn và mục trình đơn . Graphical Draw Object : Liên quan đến các hình ảnh đồ họa bitmap, Icon và việc quản lý và sử dụng font chữ (Font ), hộp mầu (Color palette) thờng đợc gọi là các đối tợng GDI (Graphic Device Interface). Graphical Drawing Class: Các lớp này sẽ giải quyết vẽ việc các điểm, đờng thẳng hoặc cong, hình dáng( tròn, chữ nhật, đa giác) thờng đợc gọi là đối tợng GDI. File Services Class: Các lớp này chận hứng và giăng bẫy bắt các lỗi lầm khi chạy chơng trình. Các sai lầm này có thể do hoạt động sai liên quan đến tập tin, ký ức nguồn lực và OLE. Collection Class: Gồm ba nhóm lớp cho phép quản lý các bảng dãy (Array), bảng liệt kê kết nối ( Linked List) và maps thuộc nhiều kiểu dữ liệu khác nhau hoặc nhiều lớp khác nhau. OLE Support class: Các lớp này quản lý các đối tợng OLE trong những giao dịch. ODBC class: Liên quan đến việc quản lý và truy xuất các tập tin dữ liệu thông qua cơ chế ODBC (Open DataBase Connectivity). Miscellaneous Class: Các lớp linh tinh này là hỗ trợ mô hình đối tợng runtime, các kiểu dữ liệu đơn giản, các cấu trúc. 2- Mối quan hệ của một số lớp trong MFC :-CObject+ CCmdTarget+ CFile+ CMenu+ CGdiObject+ CDC+ CEception- CCmdTarget + CWnd + CStatic + CButton + CBitmapButton + CEdit + CListBox + CCheckListBox +CDragListBox- CDC + CPaintDC + CClientDC +CMetaFileDC +CWindowDC- CGdiObject + CPen + CBrush + CBitmap + CRgn + CFont + CPalette - Trang 4- Luận văn tốt nghiệp-------------------------------------------------------------------------------------------------- + CComboBox + CSrollBar + CListCtrl + CProgressCtrl + CTreeCtrl + CSliderCtrl +CStatusbarCtrl + CToolBarCtrl + CRichEditCtrl + CWinThread + CDocument + CDocTemplet2.1- Lớp CWnd :Lớp Cwnd hậu duệ của lớp CCmdTarget là một lớp đồ sộ khá quan trọng cung cấp những chức năng cơ bản cho tất cả các lớp cửa sổ nh các ô điều khiển, các khung đối thoại và View. Chỉ có những lớp dẫn xuất từ CWnd mới có thể nhận các thông điệp. Thread và document có thể nhận command nhng không thể nhận message. Lớp CWnd cung cấp chức năng thiên cửa sổ nh hàm API CreateWindow( ) và DestroyWindow( ), các hàm lo tô vẽ cửa sổ trên màn hình, xử lý các thông điệp, nói chuyện với Clipboard và nhiều thứ khác. Ta không bao giờ khai báo trực tiếp một thể hiện của lớp CWnd trong ứng dụng Windows, mà phải cho dẫn xuất từ lớp này những lớp nếu muốn tạo ra một loại cửa sổ mới nhìn thấy đợc.+ Một số hàm trong lớp CWnd :CWnd::BeginPaintCDC* BeginPaint(LPPAINTSTRUCT lpPaint): Chuẩn bị CWnd để tô vẽ lại và điền vào cấu trúc dữ liệu PAINTSTRUCT những thông tin liên quan đến việc tô vẽ này. Cấu trúc tô vẽ chứa một cấu trúc RECT mang một hình chữ nhật nhỏ nhất bao gồm trọn vùng nhật tu và một cờ hiệu cho biết vùng nền có nên xóa hay không. Vùng nhật tu đợc đặt để bởi các hàm Invalidate ( ), InvalidateRgn( ), hoặc InvalidateRect( ) và bởi hệ thống khi hệ thống thay đổi kích thớc, di chuyển, tạo mới, diễu hành hoặc thực hiện bất kỳ động tác nào ảnh hởng đến vùng Client. Nếu vùng nhật tu đợc đánh dấu xoá phần nền thì hàm BeginPaint( ) sẽ gởi thông điệp WM_ONERASEBKGND. Thông số lpPaint là con trỏ chỉ về cấu trúc dữ liệu PAINTSTRUCT tiếp nhận thông tin liên quan đến việc tô vẽ.CWnd::EndPaint void EndPaint(LPPAINTSTRUCT lpPaint): Đánh dấu kết thúc việc tô vẽ trên cửa sổ nào đó. Hàm này bắt buộc phải có khi bắt đầu hàm BeginPaint( ) nhng chỉ - Trang 5- Luận văn tốt nghiệp--------------------------------------------------------------------------------------------------khi nào việc tô vẽ hoàn tất. Thông số lpPaint là con trỏ chỉ về cấu trúc PAINTSTRUCT tiếp nhận thông tin liên quan đến việc tô vẽ.CWnd::GetClientRectvoid GetClientRect( LPRECT lpRect): Hàm này sao chép tọa độ client của một vùng CWnd lên cấu trúc chỉ về bởi con trỏ lpRect. Tọa độ client cho biết các góc upper-left và lower-right của vùng client. Thông số lpRect là một con trỏ chỉ về cấu trúc RECT hoặc về đối tợng CRect tiếp nhận các tọa độ vùng client.CWnd:: Invalidatevoid Invalidate(BOOL bErare = TRUE): Hàm đánh dấu toàn vùng client của CWnd. Vùng client đánh dấu phải đợc tô vẽ lại khi thôngđiệp WM_PAINT kế tiếp xẩy ra. Thông số bErare cho biết mầu nền nằm trong vùng có nên xoá hay không khi xử lý.CWnd:: OnCreateAfx_msg int OnCreate(LPCREATESTRUCT lpcreateStruct): MFC gọi hàm này khi ứng dụng yêu cầu tạo cửa sổ Windows. Việc tạo ra bằng cách gọi hàm Create( ) hoặc CreateEx( ). Đối tợng CWnd nhận triệu gọi hàm này sau khi cửa sổ đã tạo ra nhng trớc khi cửa sổ hiện nguyên hình. Nghĩa là OnCreate đợc gọi trớc khi hàm Create() hoặc CreateEx( ) trở về. Thông số lpcreateStruct là con trỏ chỉ về cấu trúc CREATESTRUCT chứa thông tin liên quan đến đối tợng CWnd sẽ đơc tạo ra.CWnd::OnLbuttonDlbClkAfx_msg void OnLButtonDlbClk( UINT nFlags, CPoint point): MFC gọi hàm này khi ngời sử dụng nhấn nút trái chuột. Chỉ những cửa sổ nào mang WNDCLASS stype CS_DBLCLHS mới nhận đợc triệu gọi hàm. Việc bất tắt kép chuột sẽ phát sinh 4 events: Các thông điệp WM_LBUTTONDOWN, WM_LBUTTONDLBCLK,WM_MOUSEMOVE và một thông điệp WM_LBUTTONUP khi nhả nút chuột. + nFlags cho biết những visual keys khác nhau đợc nhấn xuống:- MK_CONTROL: Xét nếu phím Control nhấn xuống- MK_SHIFT: Xét nếu phím shift đợc nhấn xuống. + point Cho biết tọa độ x,y của cursor.CWnd:: On_LButtonDownafx_msg BOOL OnLButtonDown( UINT nFl;ags, CPoint point): Gọi hàm này khi ngời sử dụng nhấn nút trái chuột. Các thông số giống hàm OnLButtonDlbClk.CWnd:: On_LButtonUpafx_msg void OnLButtonUp( UINT nFl;ags, CPoint point): Gọi hàm này khi ngời sử dụng nhả nút trái chuột. Các thông số giống hàm OnLButtonDlbClk.CWnd::OnMouseMove- Trang 6- Luận văn tốt nghiệp--------------------------------------------------------------------------------------------------afx_msg void OnMouseMove(UINT nFlags, CPoint point): MFC gọi hàm này khi con trỏ chuột di chuyển. Nếu con chuột không bị chặn hứng thì thông điệp WM_MOUSEMOVE sẽ trực tiếp nhận bởi đối tợng CWnd nằm dới con trỏ chuột, bằng không thông điệp sẽ đi đến cửa sổ đã chận hứng con chuột. Các thông số đợc giải thích trên hàm OnLButtonDlbClk.CWnd:: SetForcusCWnd* SetFocus( ): Hàm này làm cho cửa sổ nhận đợc input focus để có thể nhận đợc tất cả các nhập liệu từ bàn phím và con chuột, nó sẽ gởi một thông điệp WM_KILLFOCUS cho cửa sổ đã bị đánh mất focus và một thông điệp WM_SETFOCUS cho cửa sổ đã nhận input focus. Trị trả về là đối tợng CWnd có focus trớc đó, nếu trị trả về NULL thì không có cả sổ nào cả. Con trỏ có thể là hiện thời nên không thể cấp trữ dùng về sau.2.2- Lớp CView :Lớp CView đợc xem nh là lớp cơ sở gốc của các View, cung cấp những chức năng cơ bản cho những lớp view cơ bản tạo bởi ngời sử dụng. Hoạt động chủ yếu của một view là in ấn.View thờng đợc gắn liền với document và hoạt động nh chung gian giữa document và ngời sử dụng. View phản ảnh hình ảnh của document lên màn hình hoặc lên mày in, và suy diễn nhập liệu của ngời sử dụng nh là một thao tác lên document.Một view đợc xem nh là một cửa sổ con cái thuộc một Frame window. Một Frame window có thể đợc chia sẻ sử dụng bởi một hoặc nhiều view nh trong trờng hớp một cửa sổ bị chẻ đôi. Khi ngời sử dụng cho mở một cửa sổ mới hoặc chẻ đôi một cửa sổ hiện hũ thì MFC sẽ tạo ra view mới gắn liền view này với document.Một view chỉ có thể gắn với một document nhng một document có thể gắn liền với nhiều view. ứng dụng có thể hỗ trợ nhiều loại view khác nhau đối với một loại document, ví dụ một trình soạn thảo văn bản có thể cung cấp cả một view xem trọn văn bản của document và một outline view chỉ cho thấy phần tiêu đề các đoạn văn bản mà thôi. Các đoạn view này có thể cho thể hiện trên nhiều khung cửa riêng biệt hoặc trên một splitter window khác nhau.Một view có thể chịu trách nhiệm giải quyết các kiểu nhập liệu khác nhau: từ bàn phím, từ bấm tắt con chuột cũng nh từ những lệnh trình đơn, lệnh thanh công cụ hoặc thanh điều hành. Một view sẽ tiếp nhận những lệnh chuyển đến từ frame windows. Nếu view không xử lý lệnh nào đó thì nó chuyển tiếp cho document đợc gắn với nó. Muốn sử dụng view ta cho dẫn xuất một lớp từ CView rồi thiết đặt hàm thành viên OnDraw( ) lo việc hiển thị màn hình. + Một số hàm thành viên lớp CView:- Trang 7- Luận văn tốt nghiệp--------------------------------------------------------------------------------------------------CView::GetDocumentCDocument* GetDocument( ) const : Gọi hàm này đẻ lấy con trỏ chỉ về document của view, việc này cho phép gọi các hàm thành viên document. Trị trả về là một con trỏ chỉ về đối tợng CDocument đợc gắn liền với view, nếu NULL view không gắn liền với document.CView:: OnBeginPrintingvitual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo): Đợc triệu gọi bởi MFC vào đầu công tác Print hoặc PrintPreview sau khi hàm OnPreparePrinting đợc gọi vào. Thiết đặt mặc nhiên của hàm này sẽ không làm gì cả, cho phủ quyết hàm để cấp phát bất cứ nguồn lực GDI nào đó nh bút vẽ, cọ vẽ hoặc guồn lực đặc biệt cần cho in ấn.- pDC: con trỏ chỉ về printer device context.- pInfo: con trỏ chỉ vế cấu trúc CPrintInfo mô tả công tác in hiện hành.CView:: OnEndPrintingvirtual void EndPrinting( CDC* pDC, CPrintInfo): Hàm này gọi bởi MFC ngay sau khi một tài liệu đã đợc in hoặc xem trớc. Thiết đặt mặc nhiên của hàm không làm gì cả. Cho phủ quyết hàm này để giải phóng những nguồn lực GDI đã cấp phát trớc đó bởi hàm OnPreparePrinting. 2.3- Lớp CDocument :Lớp CDocument cung cấp những chức năng cơ bản cũng nh biến thành viên đối với những lớp Document tự tạo bởi ngời sử dụng và lớp OLE Document. Theo định nghĩa một document là một đơn vị dữ kiện thờng ở dạng một tập tin mà điển hình ngời sử dụng mở thông qua File | Open và lu trữ thông qua File | Save.Lớp Document hỗ trợ những công tác chuẩn nh tạo document, cho nạp nó lên ký ức, đọc từ đĩa vào và cho cất trữ nó lên đĩa. MFC thao tác các document này sử dụng giao diện đợc định nghĩa bởi lớp CDocument .+ Một số hàm thành viên của lớp CDocument:CDocument::SetModifiedFlagvoid SetMdifiedFlag(BOOL bModified = TRUE): gọi hàm này sau khi có thay đổi trên document. CDocumet::UpdateAllViewsvoid UpdateAllViews(CView* pSender, LPARAM lhint = OL, CObject* pHint = NULL)Gọi hàm này sau khi document đã bị thay đổi. Thông thờng hàm đợc gọi sau khi gọi hàm SetModifiedFlag. Hàm sẽ thông báo cho mỗi view đợc gắn với document, ngoại trừ view chỉ rõ bởi pSender( là con trỏ chỉ về view đã sửa đổi document). 2.4- Lớp CDialog:- Trang 8- Luận văn tốt nghiệp--------------------------------------------------------------------------------------------------Lớp CDialog đợc dẫn xuất từ lớp CWnd là lớp cơ sở đợc dùng để hiển thị khung đối thoại lên màn hình. Th viện MFC cung cấp những lớp dialog để hỗ trợ những khung đối thoại thông dụng đợc cài sẵn ( gọi là command dialog ). Command dialog là những khung đối thoại tự tạo gọi là custom dialog. Command dialog là những khung đối thoại chuẩn đã có sẵn trên window 3.1 trở đi.Ngời ta phân biệt khung đối thoại làm hai loại: modal và modeless. Modal dialog là khung đối thoại một khi gọi nó lên thì ta phải làm xong chuyện rồi đóng nó lại rồi mới chuyển sang cửa số khác. Ngợc lại, modeless dialog cho phép ta hiển thị cửa sổ rồi trở qua một công việc khác trên một cửa sổ khác không bắt buộc phải bỏ hoặc trớc tiên phải đóng lại cửa sổ modeless này. Sự khác biệt chủ yếu là khung đối thoại có cần dữ liệu quan trọng hay không. Modal dialog thờng có dữ liệu gay cấn phải tiếp nhận, modeless thì không. Một khung đối thoại, tơng tự nh bất cứ cửa sổ nào khác thờng nhận những thông điệp trên windows. Trên khung đối thoại, điều đặc biệt quan tâm là làm thế nào giải quyết các thông báo phát đi từ các ô điều khiển nằm trên khung đối thoại, vì đây là cách ngời sử dụng tiếp cận với khung đối thoại.+ Một số hàm thành viên của lớp CDialogCDialog::DoModal( ): Cho gọi hàm thành viên này để gọi một khung đối thoại modal và trả về kết quả khi làm xong. Hàm này sẽ giải quyết tất cả mọi tơng tác với ngời sử dụng khi khung đối thoại đang hiện dịch.Nếu ngời sử dụng bấm tắt một trong những nút điều khiển trên một khung đối thoại, nh nút <OK> hoặc <CANCEL> thì một hàm thành viên sẽ giải quyết thông điệp sẽ đợc triệu gọi cố gắng đóng khung đối thoại. CDialog :: OnInitDialog Vitual BOOL OnInitDialog( )Hàm thành viên này đợc gọi để đáp ứng thông điệp WM_INITDIALOG. Thông điệp này đợc chuyển cho khung đối thoại trong khi triệu gọi các hàm Create ( ), CreateIndirect( ), hoặc DoModal( ), xảy ra ngay liền trứôc khi khung đối thoại đợc hiển thị.Cho phủ quyết hàm này khi cần thực hiện việc gì đó, đặc biệt khi khung đối thoại đợc khởi gán .CDialog ::EndDialog Void EndDialog (int nResult) ;Gọi hàm này để chấm dứt một modal dialog box. Hàm này sẽ trả về nResult nh là một trị trả về của DoModal( ). Ta phải dùng hàm EndDialog( ) để hoàn tất việc xử lý, bất cứ lúc nào một modal dialog box đợc tạo ra. 2.5- Lớp CWinApp:Lơp CWinApp (Windows Application) là một lớp cơ sở cho phép dẫn xuất một đối tợng windows, Một đối tợng dùng cung cấp những hàm thành viên dùng khởi gán ứng dụng cũng nh cho chạy và kết thúc chơng trình windows trên MFC.- Trang 9- Luận văn tốt nghiệp--------------------------------------------------------------------------------------------------+ Các hàm thành viên:CWinApp :: GetProfileString CString GetProfileString (LPCTSTR lpszSection, LPCTSTR lpszEntry, LPCTSTR lpszDefault = NULL)Cho gọi hàm này để tìm lại chuỗi đợc gắn với một mục vào nằm trong selection đợc khai báo trong tập tin .INI của ứng dụng. Trị trả về là chuỗi trích từ tập tin .INI của ứng dụng hoặc từ lpszDefault nếu chuỗi không tìm thấy.-LpszSelection : Con trỏ chỉ về một chuỗi null - terminated cho biết selection chứa mục vào.-lpszEntry : Con trỏ chỉ về một chuỗi null - terminated chúa mục vào phải tìm thấy chuỗi trị này không đợc bằng NULL.-lpszDefault: Con trỏ chỉ về một chuỗi mặc nhiên đối với một mục vào nào đó không tìm thấy trong tập tin khởi gán.CWinApp :: LoadCursor HCURSOR LoadCursor (LPCTSTR lpszresourceName ) const;HCURSOR LoadCursor (UINT nIDResource ) const;Hàm này nạp một cursor resource ( mang tên chỉ bởi con trỏ lpszResourceName hoặc đợc khai báo bởi mã nhận diện nIDResource ) từ một tập tin .CUR và chỉ nạp cursor vào ký ức nếu trớc đó cha đợc nạp vào .CWinApp :: LoadStandartCursor LoadStandardCursor ( LPCTSTR lpszCursorName) const;Hàm này nạp ký ức cursor đã định trớc của windows mang tên chỉ bởi con trỏ lpszCursorName. Thông số lpszCursorName là một mã nhận diện bắt đầu bởi tiền tố IDC_IDC_ARROW Cursor dạng mũi tên IDC_IBEAM Cursor dạng chữ I hoa dùng chèn văn bản IDC_WAIT Cursor dạng hình đồng hồ cát dùng trong các công kéo thời gian dài.IDC_CROSS Cross- hair cursor dùng chọn lựa.IDC_UPARROW Mũi tên chỉ thẳng lên trời.2.7- Lớp CBrush:Lớp CBrush bao chọn chức năng của một cọ vẽ Windows GDI. Muốn sử dụng một đối tợng CBrush, ta cho xây dựng đối tợng này rồi trao nó cho bất cứ hàm thành viên nào đòi hỏi một cọ vẽ. Cọ vẽ chỉ có thể là solid, hatches, hoặc patterned.+ Một số hàm thành viên của CBrush:(1) CBrush ( );(2) CBrush (COLORREF crColor ); throw (CresourceException);- Trang 10- [...]... thái của nó . +Destructor : là operation giải phóng trạng thái của một đối tợng và hủy chính đối tợng đó. III- TH VIÖN TRONG VISUAL C++ : Visual C++ bao gåm th viƯn cđa MicroSoft Foundation Class( MFC ) nh lµ mét công cụ quan trọng để xây dựng nhanh chơng trình Window sử dụng C++. MFC đợc viết ra với một mục đích duy nhất làm cho việc lập trình Window dễ dành hơn là theo kiểu cổ điển bằng cách cung... GDI Device drive Device drive Device drive Device Device Device Screen Printer Plotter Luận văn tốt nghiệp 2- Đối t ợng : Một đối tợng có trạng thái, hành vi, đặc tính nhận dạng: Cấu trúc và hành vi của các đối tợng giống nhau đợc định nghĩa trong một lớp chung của chúng, thuật ngữ instance và đối tợng có thể thay thế lẫn nhau. + Trạng thái (state): của một đối tợng bao gồm tất cả... Graphic Output) lên màn hình, máy in hoặc máy vẽ. GDI sẽ giúp tạo ra mọi điểm (point), đờng thẳng (line), hình dáng (shape: chữ nhật, hình đa giác, .) hoặc văn bản. - Trang 15- GDI Device drive Device drive Device drive Luận văn tốt nghiệp + CComboBox + CSrollBar + CListCtrl + CProgressCtrl + CTreeCtrl + CSliderCtrl +CStatusbarCtrl + CToolBarCtrl + CRichEditCtrl + CWinThread ... private : là khai báo chỉ chính lớp đó và lớp friend sử dụng. Tóm lại: Lớp là tập hợp của các đối tợng cùng có một cấu trúc chung hay hành vi chung. Một đối tợng chØ lµ thĨ hiƯn cđa líp. - Trang 2- Luận văn tốt nghiệp WM_MENUSELECT Ngời sử dụng chọn một mục trọn trình đơn. 3- Việc giải quyết các thông điệp: MFC cung cấp một khung làm việc để giải quyết các thông điệp window dễ dàng hơn là theo kiểu.. .Luận văn tốt nghiệp Miền xuất (Viewport): đợc định nghĩa nh là một vùng không gian hình chữ nhật trong toạ độ NDC thể hiện những thành phần sẽ đợc vẽ. Miền xuất này phải thuộc vùng hệ tọa độ ánh xạ lên... đến việc tô vẽ. CWnd::EndPaint void EndPaint(LPPAINTSTRUCT lpPaint): Đánh dấu kết thúc việc tô vẽ trên cửa sổ nào đó. Hàm này bắt buộc phải có khi bắt đầu hµm BeginPaint( ) nhng chØ - Trang 5- Luận văn tốt nghiệp Lớp CDialog đợc dẫn xuất từ lớp CWnd là lớp cơ sở đợc dùng để hiển thị khung đối thoại lên màn hình. Th viện MFC cung cấp những lớp dialog để hỗ trợ những khung đối thoại thông dụng... một lớp cơ sở cho phép dẫn xuất một đối tợng windows, Một đối tợng dùng cung cấp những hàm thành viên dùng khởi gán ứng dụng cũng nh cho chạy và kết thúc chơng trình windows trên MFC. - Trang 9- Luận văn tốt nghiệp khi nào việc tô vẽ hoàn tất. Thông số lpPaint là con trỏ chỉ về cấu trúc PAINTSTRUCT tiếp nhận thông tin liên quan đến việc tô vẽ. CWnd::GetClientRect void GetClientRect( LPRECT lpRect):... OnLButtonDlbClk. CWnd:: On_LButtonUp afx_msg void OnLButtonUp( UINT nFl;ags, CPoint point): Gäi hµm nµy khi ngêi sư dơng nhả nút trái chuột. Các thông số giống hàm OnLButtonDlbClk. CWnd::OnMouseMove - Trang 6- Luận văn tốt nghiệp 1- Các thiết bị GDI : GDI cho phép vẽ lên nhiều loại thiết bị khác nhau nh màn hình, máy in, máy vẽ. Muốn cho GDI có thể làm việc với một thiết bị cụ thể nào đó, ta cần đến một bộ... yViewportOrg ) * + yWindowOrg yViewportExt xViewportExt xViewport = ( xWindow – xWindowOrg) * + xViewportOrg xWindowExt yViewportExt yViewport = ( yWindow – yWindowOrg) * + yViewportOrg yWindowExt Luận văn tốt nghiệp MM_HIMETRIC ánh xạ một đơn vị logic thành 0.01 mm. Trị y dơng hớng lên và trị x dơng ở phía tay phải. MM_ISOTROPIC ánh xạ một đơn vị logic thành một đơn vị vật lý. Tỉ lệ trục x và... (window): đợc định nghĩa nh một không gian hình chữ nhật trong đó các phần tử hình học vẽ đợc vẽ ra. Nh vậy những hình ảnh đợc thể hiện lên thiết bị đợc gói gọn trong vùng cưa sỉ nµy. - Trang 17- Luận văn tốt nghiệp các biến mà ta định nghĩa. Loại tính đa dạng này gọi là qúa tải các to¸n tư (operation loading). 3 – TÝnh kÕ thõa : TÝnh kÕ thừa là qúa trình mà một đối tợng có thể có đợc các tính . Luận văn tốt nghiệp--------------------------------------------------------------------------------------------------CHơNG I: GIớI THIệU Về NGôN NGữ. của một đối tợng và hủy chính đối tợng đó. III- TH VIệN TRONG VISUAL C++ :Visual C++ bao gồm th viện của MicroSoft Foundation Class( MFC ) nh là