Bài giảng Lập trình Windows - Giới thiệu tổng quan về học phần lập trình Windows

pdf 77 trang hapham 2650
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình Windows - Giới thiệu tổng quan về học phần lập trình Windows", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_lap_trinh_windows_tran_ngoc_bao.pdf

Nội dung text: Bài giảng Lập trình Windows - Giới thiệu tổng quan về học phần lập trình Windows

  1. Đại Học Sư Phạm Tp. Hồ Chí Minh Khoa Toán – Tin Học LẬP TRÌNH WINDOWS Giới thiệu tổng quan về học phần lập trình Windows Trần Ngọc Bảo Email: tnbao.dhsp@gmail.com
  2. Mục tiêu • Môn học cung cấp cho sinh viên kiến thức về phương pháp lập trình trên môi trường Windows – Cơ chế quản lý chương trình và xử lý thông điệp trên MS Windows – Lập trình giao diện đồ họa - người dùng (GUI) – Cơ chế giao tiếp thiết bị đồ họa (GDI) – Cơ chế quản lý bộ nhớ, tập tin. – Môn học này trình bày phương pháp lập trình API trên Windows 32 và kỹ thuật lập trình MFC với ngôn ngữ minh họa là Visual C++ 6.0
  3. Mục tiêu • Tạo cho sinh viên một nền tảng trong việc tiếp thu các ngôn ngữ lập trình cấp cao khác trên Windows như: Visual Basic, Delphi, C++ Builder, C#, Visual basic.Net, J Builder, Java • Tạo cho sinh viên một kiến thức cơ bản để có thể tự nghiên cứu tiếp các vấn đề khác trong việc lập trình trên Windows như: DDE, OLE, giao tiếp với thiết bị ngoại vi,
  4. Kiến thức - kỹ năng • Kiến thức – Có kiến thức cơ bản về lập trình trong môi trường Windows – Lập trình giao diện người dùng – Phương pháp trình giao tiếp hệ quản trị cơ sở dữ liệu – Lập trình sử dụng DLL, Component, • Kỹ năng – Sử dụng được công cụ Visual C++ • Xây dựng được ứng dụng đồ họa • Xây dựng được ứng dụng quản lý tương tác với CSDL SQL Server 2000 • Xây dựng được ứng dụng tích hợp một số Third-Party Component – Sử dụng được một số công cụ tạo Report như: Crystal Report, C1 Report.
  5. Một số ứng dụng minh họa • Một số ứng dụng lập trình cơ bản như: – Máy tính bỏ túi – Điện thoại – Chương trình nghe nhạc • Ứng dụng biểu diễn các đối tượng hình học – Paint – Xử lý ảnh
  6. Một số ứng dụng minh họa • Ứng dụng mô phỏng thuật toán – Cấu trúc dữ liệu: mảng, danh sách liên kết, cây nhị phân, – Lý thuyết đồ thị • Một số ứng dụng cơ sở dữ liệu như: – Quản lý học sinh, Quản lý sinh viên, Quản lý nhà thuốc, Bưu điện – Quản lý dự án (Project Management) – Quản lý luồng công việc (Workflow) – Quản lý nhân sự – .
  7. Đề cương môn học (5đvht= 75t) • Chương 1 Khái niệm về lập trình Windows • Chương 2 Kỹ thuật lập trình Visual C++ (MFC) • Chương 3 Quản lý bộ nhớ • Chương 4 Thư viện đồ họa GDI • Chương 5 Thư viện liên kết động • Chương 6 Lập trình CSDL ADO – SQL Server • Chương 7 Lập trình đa tiểu trình
  8. Công cụ thực hành • Visual Studio 6.0 – Visual C++ 6.0 • Visual Studio.Net 2003 – Visual C++ Projects • Visual Studio.Net 2005
  9. Công cụ thực hành • Visual Studio 6.0 - Visual C++ 6.0
  10. Công cụ thực hành • Visual Studio.Net 2003 - Visual C++ Projects
  11. Thực hành và thi kết thúc học phần • Bài tập lớp (Project): – Hình thức: bắt buộc. –Số lượng: 2 bài, mỗi bài 1.5đ • Thi kết thúc học phần – Hình thức: thi thực hành trực tiếp trên máy –Thời gian: 90 – 120 phút – Điểm thi: 7đ
  12. Bài tập project • Bài tập project 1 –Nội dung: Lập trình căn bản, xây dựng ứng dụng tương tự như: Paint, Calculator, Telephone, –Kiến thức liên quan: Dialogs, Menu, Toolbar, GDI, • Bài tập project 2 –Nội dung: Lập trình cơ sở dữ liệu –Cơ sở dữ liệu: Access 2003 hoặc SQL Server 2000 – Report: Crystal Report, C1Report,
  13. Nộp bài tập project • Bài tập project 1 –Nộp vào giữa học kỳ – Sinh viên nộp bài cho lớp trưởng • Bài tập project 2 –Nộp vào cuối học kỳ, trước khi thi thực hành 1 tuần. – Sinh viên nộp bài cho lớp trưởng
  14. Thực hành và thi kết thúc học phần • Bài tập miễnthi – Hình thức: không bắt buộc. –Là một dạng bài tập project nâng cao, liên quan đến một chủ đề do GV đề xuất, sinh viên tự thực hiện. –Mỗi sinh viên làm một đề tài. – Sinh viên làm bài tập miễn thi sẽ không phải làm 2 bài tập project bắt buộc trên. –Trong trường hợp sinh viên không được miễn thi, điểm bài tập miễn thi sẽđược tính là điểm bài tập project (tối đa 3đ).
  15. Bài tập miễn thi • Nội dung – Báo cáo viết mô tả ứng dụng theo mẫu qui định –CD chương trình được tổ chức theo mẫu qui định • Nộp bài –Thời gian: sinh viên nộp bài vào cuối học kỳ, trước khi thi thực hành 2 tuần. –Nộp bài trực tiếp cho giáo viên lý thuyết
  16. Tài liệu tham khảo [1] Đặng Văn Đức, Lê Quốc Hưng (1999), Lập trình Windows bằng Visual C++, Nhà xuất bản giáo dục. [2] Advanced MFC programming [3] Jeff Prosise (1999), Programming Windows with MFC 2nd Edition, Microsoft Press. [4] Microsoft Press (1999), Desktop application with MS Visual C++ 6.0 MCSD Training Kit. [5] David J. Kruglinski (1998), Programming Microsoft Visual C++ Fifth Edition, Microsoft Press. [6] Charles Petzold (1998), Programming Windows Fifth Edition, Microsoft Press. [7] Michael Pickens and Scot Wingo (1998), Microsoft Visual C++ MFC FAQ v5.6, Microsoft Press. [8] MSDN [9] [10] [11] [12]
  17. Đại Học Sư Phạm Tp. Hồ Chí Minh Khoa Toán – Tin Học LẬP TRÌNH WINDOWS MỘT SỐ KHÁI NIỆM CƠ BẢN TRONG LẬP TRÌNH WINDOWS • Một số khái niệm cơ bản • Lập trình sự kiện – thông điệp • Mô hình lập trình Windows
  18. NỘI DUNG ™ Một số điểm khác biệt giữa lập trình Windows & DOS ™ Một số khái niệm cơ bản ™ Lập trình sự kiện (Even driven programming) ™ Các thành phần giao diện đồ họa GUI ™ Tài nguyên của ứng dụng (Resource) ™ Thư viện lập trình Windows ™ Mô hình lập trình Windows ™ Một chương trình tổng quát xây dựng trên Win API
  19. NỘI DUNG ™ Một số điểm khác biệt giữa lập trình Windows & DOS ™ Một số khái niệm cơ bản ™ Lập trình sự kiện (Even driven programming) ™ Các thành phần giao diện đồ họa GUI ™ Tài nguyên của ứng dụng (Resource) ™ Thư viện lập trình Windows ™ Mô hình lập trình Windows ™ Một chương trình tổng quát xây dựng trên Win API
  20. Một số điểm khác biệt giữa lập trình Windows & DOS Chương trình minh họa cơ chế thực hiện tuần tự trong môi trường DOS
  21. Một số điểm khác biệt giữa lập trình Windows & DOS Chương trình minh họa trong môi trường Window
  22. Một số điểm khác biệt giữa lập trình Windows & DOS Tích hợp sẵn Multimedia
  23. Một số điểm khác biệt giữa lập trình Windows & DOS Hỗ trợ nhiều công nghệ trong lập trình Windows
  24. Một số điểm khác biệt giữa lập trình Windows & DOS DOS WINDOWS Thực hiện tuần tự Lập trình sự kiện dựa vào thông điệp (message) Single Task Multi-tasking Single CPU Multi – CPU Phải dùng các thư viện Tích hợp sẵn Multimedia Multimedia riêng Ứng dụng 16 bits Hỗ trợ 32 bits hoặc hơn nữa Không hỗ trợ nhiều công nghệ Hỗ trợ nhiều công nghệ DLL, COM, DDE, OLE
  25. Một số khái niệm cơ bản Khái niệmDiễn giải Một giá trị 32bits không dấu (unsigned) do HĐH tạo ra để làm Handle định danh cho 1 đối tượng (file, cửa sổ, vùng nhớ, menu, toolbar ) Một giá trị nguyên do ứng dụng tạo ra để làm định danh cho 1 ID đối tượng (menu item, tool button, control, ) (Identifier) Một giá trị nguyên do HĐH tạo ra để định danh cho 1 thể hiện Instance đang thực thi của ứng dụng Thuộc tính của một hàm/thủ tục sẽ được gọi bởi HĐH, không Callback phải bởi ứng dụng Thư viện thủ tục/hàm, lớp đối tượng được xây dựng sẵn bởi Library window và các hãng khác
  26. NỘI DUNG ™ Một số điểm khác biệt giữa lập trình Windows & DOS ™ Một số khái niệm cơ bản ™ Lập trình sự kiện (Even driven programming) ™ Các thành phần giao diện đồ họa GUI ™ Tài nguyên của ứng dụng (Resource) ™ Thư viện lập trình Windows ™ Mô hình lập trình Windows ™ Một chương trình tổng quát xây dựng trên Win API
  27. Lập trình Windows - lập trình sự kiện Sự kiện và thông điệp
  28. Lập trình Windows - lập trình sự kiện System queue Application queue Mouse GetMessage() Keyboard Device driver TranslateMessage() DispatchMessage() WindowProc() Other device DefWindowProc() Qui trình xử lý thông điệp
  29. Sự kiện và xử lý thông điệp WinMain Window Procedure
  30. NỘI DUNG ™ Một số điểm khác biệt giữa lập trình Windows & DOS ™ Một số khái niệm cơ bản ™ Lập trình sự kiện (Even driven programming) ™ Các thành phần giao diện đồ họa GUI ™ Tài nguyên của ứng dụng (Resource) ™ Thư viện lập trình Windows ™ Mô hình lập trình Windows ™ Một chương trình tổng quát xây dựng trên Win API
  31. Các thành phần giao diện đồ họa - GUI ™ GUI : Graphics User Interface ™ Các dạng GUI cơ bản Dialog SDI MDI
  32. Các thành phần giao diện đồ họa - GUI ™ Dialog ƒ Có một cửa sổ làm việc ƒ Thường có kích thước cố định ƒ Thường không có menu bar ™ SDI – Single Document Interface ƒ Có một cửa sổ làm việc ƒ Cho phép thay đổi kích thước cửa sổ (Resizeable) ƒ Không có cửa sổ con ™ MDI – Multiple Document Interface ƒ Có một cửa sổ làm việc chính (Main frame) và nhiều cửa sổ con (Child Frame) ƒ Cho phép thay đổi kích thước cửa sổ (Resizeable) ƒ Cho phép Minimize/Maximize/Close/Arrange/Cascade cửa sổ con Calculator Paint Workflow Editor
  33. Các thành phần giao diện đồ họa - GUI App Desktop Window Window Shortcut Icon Child Window Dialog box Child Window Control Parent Window
  34. Các thành phần giao diện đồ họa - GUI Window Window Title bar Caption Minimized, Icon Restored, Maximized Menu buttons bar Tool bar Dialog bar Client Area Status Scroll bar bar Các thành phầncủa1cửasổ chuẩn
  35. GUI – Controls Property sheet Static text Combo box (Edit text + List box Drop down list Frame Check box Push button Push button Các dạng control chuẩncủawindows
  36. GUI – Controls Property sheet Check box Static text Image Radio button Spin Push button Edit text Push button Các dạng control chuẩncủawindows
  37. GUI – Controls Menu Title bar Tool bar Tree View Combo Box Scroll bar List view Status bar
  38. NỘI DUNG ™ Một số điểm khác biệt giữa lập trình Windows & DOS ™ Một số khái niệm cơ bản ™ Lập trình sự kiện (Even driven programming) ™ Các thành phần giao diện đồ họa GUI ™ Tài nguyên của ứng dụng (Resource) ™ Thư viện lập trình Windows ™ Mô hình lập trình Windows ™ Một chương trình tổng quát xây dựng trên Win API
  39. Tài nguyên của ứng dụng (Resources) ™ Resource là một đối tượng (Object) được sử dụng trong ứng dụng, ví dụ: Menu bar, tool bar, dialog, icon, cursor, bitmap ™ Resource được định nghĩa bên ngoài (tách biệt với source code) và được thêm vào trong tập tin thi hành (EXE) của ứng dụng khi biên dịch (linking) Resource Compiler Source code Resources Compiler Linker Resource file OBJ files (Res) .EXE
  40. Qui trình biên dịch ứng dụng Visual C++ Source Resource code Linker
  41. Tài nguyên của ứng dụng – Tool bar
  42. Tài nguyên của ứng dụng – Accelerator
  43. Tài nguyên của ứng dụng – Bitmap
  44. Tài nguyên của ứng dụng – Cursor Demo
  45. Tài nguyên của ứng dụng – Dialog
  46. Tài nguyên của ứng dụng – Icon
  47. Tài nguyên của ứng dụng – Menu
  48. Tài nguyên của ứng dụng – String table Demo
  49. Tài nguyên của ứng dụng – Tool bar
  50. Tài nguyên của ứng dụng – Version Info
  51. Tài nguyên của ứng dụng (Resources) LoạiDiễn giải Accelerator Bảng mô tả phím tắt (Hot- key) Bitmap Ảnh bitmap Caret Con trỏ văn bản Cursor Con trỏ chuột Dialog box Khung hộp thoại Enhanced Tập hợp các cấu trúc để lưu ảnh (picture) theo định dạng “độc lập thiết metafile bị” (Device Independent format) Font Font chữ Icon Biểu tượng Menu Menu String table Bảng mô tả các chuỗi ký tự Version Bảng mô tả thông tin “phiên bản” information
  52. NỘI DUNG ™ Một số điểm khác biệt giữa lập trình Windows & DOS ™ Một số khái niệm cơ bản ™ Lập trình sự kiện (Even driven programming) ™ Các thành phần giao diện đồ họa GUI ™ Tài nguyên của ứng dụng (Resource) ™ Thư viện lập trình Windows ™ Mô hình lập trình Windows ™ Một chương trình tổng quát xây dựng trên Win API
  53. Bộ thư viện SDK – Software Developer Kit ™ SDK là bộ thư viện lập trình nền tảng của hệ điều hành Windows ™ SDK cung cấp tất cả các công cụ cần thiết để xây dựng một ứng dụng trên Windows ™ SDK được sử dụng như là thư viện cơ sở để tạo ra những thư viện cấp cao hơn trong những ngôn ngữ lập trình. Ví dụ: MFC của Visual C++, OWL của Borland,
  54. Một số thành phần tiêu biểu của SDK ™ Win32 API ™ GDI/GDI+ Tham khảo chi tiết trong ™ Windows Multimedia MSDN ™ OpenGL ™ DirectX ™ COM/COM+ ™ ADO (ActiveX Data Object) ™ OLE DB
  55. NỘI DUNG ™ Một số điểm khác biệt giữa lập trình Windows & DOS ™ Một số khái niệm cơ bản ™ Lập trình sự kiện (Even driven programming) ™ Các thành phần giao diện đồ họa GUI ™ Tài nguyên của ứng dụng (Resource) ™ Thư viện lập trình Windows ™ Mô hình lập trình Windows ™ Một chương trình tổng quát xây dựng trên Win API
  56. Mô hình lập trình Windows WinMain Window Procedure
  57. Một chương trình tổng quát xây dựng trên API #include LONG WINAPI WndProc (HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) { //Khai báo lớp cửa sổ //Đăng ký lớp cửa sổ //Tạo lập cửa sổ //Hiển thị cửa sổ //Thực hiện vòng lặp xử lý thông điệp }
  58. Khai báo lớp cửa sổ WNDCLASS wc; HWND hwnd; MSG msg; wc.style = 0; // Class style wc.lpfnWndProc = (WNDPROC) WndProc; // Window procedure address wc.cbClsExtra = 0; // Class extra bytes wc.cbWndExtra = 0; // Window extra bytes wc.hInstance = hInstance; // Instance handle wc.hIcon = LoadIcon (NULL, IDI_WINLOGO); // Icon handle wc.hCursor = LoadCursor (NULL, IDC_ARROW); // Cursor handle wc.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1); // Background color wc.lpszMenuName = NULL; // Menu name wc.lpszClassName = "MyWndClass"; // WNDCLASS name
  59. Cấu trúc WNDCLASS typedef struct WNDCLASS { UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground ; LPCTSTR lpszMenuName; LPCTSTR lpszClassName; } WNDCLASS, *PWNDCLASS;
  60. Cấu trúc WNDCLASS Thuộc tính Ý nghĩa Style Kiểu dáng của lớp lpfnWndProc Hàm tiếp nhận và xử lý thông điệp cbClsExtra Số byte dành riêng cho class (<=40 bytes) cbWndExtra số byte dành riêng cho mỗi cửa sổ thuộc class (<=40 bytes) hInstance Instance của ứng dụng thực hiện việc đăng ký class Handle của icon, xác định biểu tượng của cửa sổ hIcon hCursor Handle của cursor, xác định dạng cursor trong vùng client Handle của brush, xác định cách tô vùng client; +1 nếu muốn sử dụng màu hbrBackground mặc định của hệ thống. Ví dụ: COLOR_BACKGRAOUND + 1 lpszMenuName Tên menu bar, chuỗi kết thúc bằng 0 lpszClassName Tên lớp, chuỗi kết thúc bằng 0
  61. Đăng ký và tạo lập lớp cửa sổ RegisterClass (&wc); hwnd = CreateWindow ( "MyWndClass", // WNDCLASS name "SDK Application", // Window title WS_OVERLAPPEDWINDOW, // Window style CW_USEDEFAULT, // Horizontal position CW_USEDEFAULT, // Vertical position CW_USEDEFAULT, // Initial width CW_USEDEFAULT, // Initial height HWND_DESKTOP, // Handle of parent window NULL, // Menu handle hInstance, // Application's instance handle NULL // Window-creation data );
  62. Hiển thị cửa sổ - vòng lặp xử lý thông điệp ShowWindow (hwnd, nCmdShow); UpdateWindow (hwnd); while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg); DispatchMessage (&msg); } return msg.wParam;
  63. Hàm xử lý Message của cửa sổ LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; HDC hdc; switch (message) { case WM_PAINT: hdc = BeginPaint (hwnd, &ps); Ellipse (hdc, 0, 0, 200, 100); EndPaint (hwnd, &ps); return 0; case WM_DESTROY: PostQuitMessage (0); return 0; } return DefWindowProc (hwnd, message, wParam, lParam); }
  64. Tạo ứng dụng Win API bằng AppWizard ™ Chọn menu File Æ New ™ Chọn Tab Projects ™ Chọn loại project “Win32 Application” ™ Đặt tên project trong ô “Project name” ™ Xác định đường dẫn thư mục trong “Location” ™ Chọn option “Create new workspace” ™ Nhấn “OK” qua bước sau
  65. Tạo ứng dụng Win API bằng AppWizard Các loại ứng dụng trên Tên windows projec t Thư mục lưu project
  66. Tạo ứng dụng Win API bằng AppWizard Chọn option “A typical Hello World application” để AppWizard tự động tạo ra ứng dụng mẫu
  67. Ứng dụng Win API đơn giản – Source file
  68. Ứng dụng Win API - Resource
  69. Ứng dụng Win API – Source code
  70. Ứng dụng Win API – hàm WinMain
  71. Ứng dụng Win API – hàm đăng ký lớp cửa sổ
  72. Ứng dụng Win API – hàm tạo cửa sổ
  73. Ứng dụng Win API – hàm xử lý thông điệp cửa sổ
  74. Ứng dụng Win API – hàm xử lý hộp thoại About
  75. Ứng dụng Win API – kết quả chạy chương trình
  76. Ứng dụng Win API – kết quả chạy chương trình