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ạ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, .
i dùng các thư viện Multimedia riêng Tích hợp sẵn Multimedia Ứ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… Một số khái niệm cơ bản Khái niệm Diễn giải Handle Một giá trị 32bits không dấu (unsigned) do HĐH tạo ra để làm định danh cho 1 đối tượng (file, cửa sổ, vùng nhớ, menu, toolbar…) ID (Identifier) Một giá trị nguyên do ứng dụng tạo ra để làm định danh cho 1 đối tượng (menu item, tool button, control,…) Instance Một giá trị nguyên do HĐH tạo ra để định danh cho 1 thể hiện đang thực thi của ứng dụng Callback Thuộc tính của một hàm/thủ tục sẽ được gọi bởi HĐH, không phải bởi ứng dụng Library Thư viện thủ tục/hàm, lớp đối tượng được xây dựng sẵn bởi window và các hãng khác 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 Mô hình lập trình Windows Tài nguyên của ứng dụng (Resource) Thư viện lập trình Windows Một chương trình tổng quát xây dựng trên Win API Lập trình Windows - lập trình sự kiện Sự kiện và thông điệp Lập trình Windows - lập trình sự kiện Keyboard Mouse Other device Device driver System queue Application queue GetMessage() TranslateMessage() DispatchMessage() DefWindowProc() WindowProc() Qui trình xử lý thông điệp Sự kiện và xử lý thông điệp WinMain Window Procedure 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 Mô hình lập trình Windows Tài nguyên của ứng dụng (Resource) Thư viện lập trình Windows Một chương trình tổng quát xây dựng trên Win API 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 Các thành phần giao diện đồ họa - GUI Dialog SDI – Single Document Interface MDI – Multiple Document Interface 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 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 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 Các thành phần giao diện đồ họa - GUI Desktop Window Shortcut Icon Control Dialog box App Window Child Window Child Window Parent Window Các thành phần giao diện đồ họa - GUI Window Caption Window Icon Tool bar Client Area Minimized, Restored, Maximized buttons Status bar Title bar Menu bar Dialog bar Scroll bar Các thành phần của 1 cửa sổ chuẩn GUI – Controls Property sheet Combo box (Edit text + List box Push button Static text Push button Drop down list Check box Các dạng control chuẩn của windows Frame GUI – Controls Property sheet Radio button Push button Static text Push button Image Check box Các dạng control chuẩn của windows Spin Edit text GUI – Controls Title barMenu Combo Box Scroll bar Status bar Tree View List view Tool bar 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 Mô hình lập trình Windows Tài nguyên của ứng dụng (Resource) Thư viện lập trình Windows Một chương trình tổng quát xây dựng trên Win API 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) Source code ResourcesCompiler Resource Compiler OBJ files Resource file (Res) Linker .EXE Qui trình biên dịch ứng dụng Visual C++ Source code Resource Linker Tài nguyên của ứng dụng – Tool bar Tài nguyên của ứng dụng – Accelerator Tài nguyên của ứng dụng – Bitmap Tài nguyên của ứng dụng – Cursor Demo Tài nguyên của ứng dụng – Dialog Tài nguyên của ứng dụng – Icon Tài nguyên của ứng dụng – Menu Tài nguyên của ứng dụng – String table Demo Tài nguyên của ứng dụng – Tool bar Tài nguyên của ứng dụng – Version Info Loại Diễ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 metafile Tập hợp các cấu trúc để lưu ảnh (picture) theo định dạng “độc lập thiết 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 information Bảng mô tả thông tin “phiên bản” Tài nguyên của ứng dụng (Resources) 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 Mô hình lập trình Windows Tài nguyên của ứng dụng (Resource) Thư viện lập trình Windows Một chương trình tổng quát xây dựng trên Win API 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,… Một số thành phần tiêu biểu của SDK Win32 API GDI/GDI+ Windows Multimedia OpenGL DirectX COM/COM+ ADO (ActiveX Data Object) OLE DB… Tham khảo chi tiết trong MSDN 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 Mô hình lập trình Windows Tài nguyên của ứng dụng (Resource) Thư viện lập trình Windows Một chương trình tổng quát xây dựng trên Win API Mô hình lập trình Windows WinMain Window Procedure 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 } 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 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; 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 hIcon Handle của icon, xác định biểu tượng của cửa sổ hCursor Handle của cursor, xác định dạng cursor trong vùng client hbrBackground Handle của brush, xác định cách tô vùng client; +1 nếu muốn sử dụng màu 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 Cấu trúc WNDCLASS Đă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 ); 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; 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); } 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 Tạo ứng dụng Win API bằng AppWizard Tên projec t Thư mục lưu project Các loại ứng dụng trên windows 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 Ứng dụng Win API đơn giản – Source file Ứng dụng Win API - Resource Ứng dụng Win API – Source code Ứng dụng Win API – hàm WinMain Ứng dụng Win API – hàm đăng ký lớp cửa sổ Ứng dụng Win API – hàm tạo cửa sổ Ứng dụng Win API – hàm xử lý thông điệp cửa sổ Ứng dụng Win API – hàm xử lý hộp thoại About Ứng dụng Win API – kết quả chạy chương trình Ứng dụng Win API – kết quả chạy chương trình
File đính kèm:
- 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