TỔNG QUAN LẬP TRÌNH MÔI TRƯỜNG WINDOWS Nội dung chính 1 Lịch sử Windows 2 Đặc điểm môi trường Windows 3 Lập trình hướng sự kiện 4 .NET Framework 5 Visual Studio 02/15/2017 Lập trình môi trường Windows 2 Nội dung chính 1 Lịch sử Windows 2 Đặc điểm môi trường Windows 3 Lập trình hướng sự kiện 4 .NET Framework 5 Visual Studio 02/15/2017 Lập trình môi trường Windows 3 Lịch sử Windows 1990 1993 1994 1995 1996 1997 Windows Windows NT Desktop Windows 3x Windows NT Windows 95 Workstation Windows NT Windows NT Server Advanced Windows NT Windows NT Windows NT Enteprise Windows Server Server 3.0 Edition Windows Cloud 02/15/2017 Lập trình môi trường Windows 4 Lịch sử Windows 1998 2000 2001 2003 2006 2008 2009 1. Windows 2000 Windows Windows Desktop Windows 98 Prefessional Windows XP Vista Windows 7 1. Windows Windows NT Server 2003 Server 4. Windows Terminal 2000 Server Windows Windows Server Server Edition Server Family Systems Server 2008 Windows Windows Cloud Azure 02/15/2017 Lập trình môi trường Windows 5 Lịch sử Windows 2012 2013 2014 2015 Windows Desktop Windows 8 Windows 8.1 Windows 10 Windows Windows Server 2012 Windows Server Server 2012 R2 Microsoft Windows Cloud Azure 02/15/2017 Lập trình môi trường Windows 6 Nội dung chính 1 Lịch sử Windows 2 Đặc điểm môi trường Windows 3 Lập trình hướng sự kiện 4 .NET Framework 5 Visual Studio 02/15/2017 Lập trình môi trường Windows 16 Môi trường Windows • Hệ điều hành 32/64 bit • Giao diện người dùng kiểu đồ hoạ (GUI) • Đa nhiệm • Quản lý bộ nhớ • Tư tưởng hướng đối tượng • Giao diện đồ họa độc lập thiết bị • Kiến trúc hướng sự kiện, dựa vào thông điệp 17 Giao diện người dùng kiểu đồ hoạ (GUI) • Visual Interface • WYSIWYG (What you see is what you get) • Các ứng dụng Windows có giao diện thống nhất với cùng dáng vẻ: – một cửa sổ hình chữ nhật – thanh tiêu đề – menu, hộp hội thoại, thanh trượt Lập trình môi trường Windows 18 Đa nhiệm • Nhiều chương trình có thể được kích hoạt và chạy cùng một lúc • Mỗi chương trình chiếm một phần tài nguyên của hệ thống và có một phần bộ nhớ thường trú • Windows 32 bits hoạt động theo cơ chế preemptive.
Mỗi chương trình có thể được tách thành các thread thực hiện cùng lúc Lập trình môi trường Windows 19 Quản lý bộ nhớ • Mã chương trình và dữ liệu có thể dịch chuyển trong bộ nhớ vật lý • Khả năng sử dụng bộ nhớ phụ • Các thư viện liên kết động (.DLL) 02/15/2017 Lập trình môi trường Windows 20 Tư tưởng hướng đối tượng • Cửa sổ ứng dụng chính và các cửa sổ con là các thể hiện (đối tượng) của lớp cửa sổ được đăng ký trước Lập trình môi trường Windows 21 Giao diện đồ hoạ độc lập thiết bị • Giao diện đồ hoạ của Window cho phép tạo các đối tượng đồ hoạ và định dạng văn bản cho cả màn hình và máy in • Chương trình viết cho Windows không điều khiển trực tiếp thiết bị xuất như màn hình hay máy in mà thông qua một ngôn ngữ lập trình đồ hoạ gọi là Giao Diện Thiết Bị Đồ Hoạ (Graphics Device Interface: GDI) 02/15/2017 Lập trình môi trường Windows 22 Kiến trúc hướng thông điệp (message driven) • Windows và các ứng dụng Windows hoạt động theo cơ chế truyền, nhận thông điệp • Các hoạt động của chương trình thay đổi tuỳ theo thông điệp mà nó nhận được, • Thông điệp được gởi qua lại giữa ứng dụng và Windows, giữa các ứng dụng với nhau • Cửa sổ ứng dụng tự động được vẽ lại mỗi khi có sự thay đổi kích thước hay vùng bị che. Điều này được thực hiện nhờ hệ điều hành gởi thông điệp cho chương trình Lập trình môi trường Windows 23 Các loại ứng dụng cơ bản • Windows Application: ứng dụng 32 bits, giao diện đồ họa • Win32 DLL: ứng dụng 32 bits, dạng thư viện liên kết động (Dynamic-linked library) • Win32 LIB: ứng dụng 32 bits, dạng thư viện liên kết tĩnh (Static-linked library) • Console Application: ứng dụng 32 bits, với giao diện dạng DOS command line • Assembly Exe và Assembly DLL: Ứng dụng và DLL chạy trên môi trường .NET (chứa mã trung gian) Lập trình môi trường Windows 24 Windows Application dựa C Năm Ngôn ngữ Công cụ 1985 C Windows application programming interface (API) 1992 C++ Microsoft Foundation Class (MFC) Library 2001 C# hoặc C++.Net Windows Form (1 phần của .NET Framework) 2006 C#, XAML Windows Presentation Foundation (WPF) Lập trình môi trường Windows 25 Các thư viện lập trình • Windows API • OWL - Object Windows Library • VCL – Visual Component Library • MFC - Microsoft Foundation Classes • ATL - Active Template Library • WTL - Windows Template Library • BCL – Base Class Library • STL – Standard Template Library • TOM – Text Object Model • … Lập trình môi trường Windows 26 Windows và DOS Windows DOS Lập trình sự kiện, dựa vào thông điệp Thực hiện tuần tự theo chỉ định (message) Multi-tasking Single task Multi-CPU Single CPU Tích hợp sẵn Multimedia Phải dùng các thư viện Multimedia riêng Hỗ trợ 32 bits hay hơn nữa Ứng dụng 16 bits DLL, OLE, DDE, COM, OpenGL, Không có DirectX Lập trình môi trường Windows 27 Giao diện đồ họa • Các dạng ứng dụng giao diện đồ họa – SDI - Single Document Interface – MDI - Multiple Document Interface – Dialog Lập trình môi trường Windows 28 SDI - Single Document Interface • 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ác cửa sổ con • Ví dụ: Notepad, Paint,… Lập trình môi trường Windows 29 MDI - Multiple Document Interface • Một cửa sổ làm việc chính và nhiều cửa sổ con • Cho phép thay đổi kích thước cửa sổ (Resizeable) • Cho phép Maximize/Minimize/Close các cửa sổ con • Ví dụ: Word, Excel, VC++,… Lập trình môi trường Windows 30 Dialog • Một cửa sổ làm việc • Thường kích thước cố định • Thường có các button, edit box, list box,… • Ví dụ: Calculator, CD Player,. Lập trình môi trường Windows 31 Cửa sổ - Window • Là một vùng chữ nhật trên màn hình dùng để hiển thị kết quả output và nhận các input từ người dùng • Công việc đầu tiên của 1 ứng dụng GUI là tạo một cửa sổ làm việc • Mỗi cửa sổ đều có 1 cửa sổ cha (parent window), ngoại trừ cửa sổ nền Desktop • Tại mỗi thời điểm, chỉ có một cửa sổ nhận input từ người dùng (Active/Focused window) Lập trình môi trường Windows 32 Các thành phần của một cửa sổ Lập trình môi trường Windows 33 Các control thông dụng Tab Control Edit box Listbox Combobox Check box Static text Button Lập trình môi trường Windows 34 Các control thông dụng Lập trình môi trường Windows 35 Nội dung chính 1 Lịch sử Windows 2 Đặc điểm môi trường Windows 3 Lập trình hướng sự kiện 4 .NET Framework 5 Visual Studio 02/15/2017 Lập trình môi trường Windows 36 Lập trình hướng sự kiện • Qui trình xử lý thông điệp • Các loại thông điệp thường gặp • Vòng lặp xử lý thông điệp Lập trình môi trường Windows 37 Phát sinh các sự kiện và thông điệp Lập trình môi trường Windows 38 Hàng đợi thông điệp • Luồng điều khiển của chương trình được xác định dựa vào hành động của người dùng khi sử dụng chương trình Lập trình môi trường Windows 39 Thủ tục cửa sổ • Hệ điều hành ra lệnh cho ứng dụng nhờ thủ tục cửa sổ (Window Procedure) • Hàm cửa sổ cho biết phản ứng của chương trình với các tác động bên ngoài như user input. • Hệ điều hành Windows gởi thông điệp cho một chương trình ứng dụng bằng cách gọi hàm cửa sổ của ứng dụng đó, với tham số là thông điệp Lập trình môi trường Windows 40 02/15/2017 Lập trình môi trường Windows 41 Windows Application trên C (Chương trình chính) LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static TCHAR szAppName[] = TEXT (“…") ; HWND hwnd ; MSG msg ; WNDCLASS wndclass ; wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpszClassName = szAppName ; Khai báo cửa sổ if (!RegisterClass (&wndclass)) { MessageBox (NULL, TEXT (“…"), …) ; return 0 ; } Đăng ký hwnd = CreateWindow (szAppName,.,NULL) ; cửa sổ ShowWindow (hwnd, iCmdShow) ; UpdateWindow (hwnd) ; while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg) ; DispatchMessage (&msg) ; } Vòng lặp bắt thông điệp return msg.wParam ; } 02/15/2017 Lập trình môi trường Windows 42 Windows Application trên C (Hàm xử lý thông điệp) LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc ; PAINTSTRUCT ps ; RECT rect ; switch (message) { case WM_CREATE: Thông điệp nhận được.
return 0 ; Xử lý thông điệp case WM_PAINT:. return 0 ; case WM_DESTROY:. } return DefWindowProc (hwnd, message, wParam, lParam) ; } 02/15/2017 Lập trình môi trường Windows 43 Một số thông điệp thường gặp Thông điệp Được gửi khi WM_CHAR Có một ký tự được nhập từ bàn phím WM_COMMAND Người sử dụng click một mục trên menu, button… WM_CREATE Một cửa sổ được tạo ra WM_DESTROY Một cửa sổ bị huỷ. WM_LBUTTONDOWN Phím trái chuột được nhấn WM_LBUTTONUP Phím trái chuột được thả ra WM_MOUSEMOVE Con trỏ chuột di chuyển trên màn hình WM_PAINT Cửa sổ cần vẽ lại WM_QUIT Ứng dụng sắp kết thúc WM_SIZE Cửa sổ có thay đổi kích thước Lập trình môi trường Windows 44 Windows Application trên C# (Chương trình chính) using System; using System.Forms; namespace NotepadForms { public class Program { [STAThread] static void Main() { Khai báo cửa sổ Form myForm = new MyForm(); Application.Run(new MyForm()); Khởi động vòng lặp thông điệp } } 02/15/2017 Lập trình môi trường Windows 45 Windows Application trên C# (Xử lý thông điệp) public class MyForm : System.Form { Gán sự kiện public MyForm() { this.Paint += new System.MainForm_Paint); } private void MainForm_Paint (object sender, System.PaintEventArgs evt) { … Xử lý sự kiện } } } 02/15/2017 Lập trình môi trường Windows 46 Tài nguyên - Resource • Tài nguyên (Menu bar, dialog, bitmap, icon, cursor,…) của ứng dụng được định nghĩa bên ngoài và được thêm vào trong file thực thi của ứng dụng khi biên dịch • Các loại tài nguyên của ứng dụng – Accelerator table: 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 (Dialogbox Template) – Font: font chữ Lập trình môi trường Windows 47 Tài nguyên - Resource • Các loại tài nguyên của ứng dụng – Icon: biểu tượng – Menu: menu – String-table entry: bảng mô tả các chuỗi ký tự – Version information: bảng mô tả thông tin “phiên bản” Lập trình môi trường Windows 48 02/15/2017 Lập trình môi trường Windows 49 Nội dung chính 1 Lịch sử Windows 2 Đặc điểm môi trường Windows 3 Lập trình hướng sự kiện 4 .NET Framework 5 Visual Studio 02/15/2017 Lập trình môi trường Windows 50