Tổng quan lập trình môi trường Windows

TÀI LiỆU THAM KHẢO
• Programming Microsoft Windows with C# http://public.box.net/ntthuc12114

3/15/2014

Lập trình môi trường Windows

2

Lịch sử Windows
Windows Desktop Windows Server

3/15/2014

Lập trình môi trường Windows

3

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

3/15/2014

Lập trình môi trường Windows

4

Giao diện người dùng kiểu đồ hoạ (GUI)
• Visual Interface • WYSIWYG • 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

3/15/2014

Lập trình môi trường Windows

5

Đ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ế preemtive. Mỗi chương trình có thể được tách thành các thread thực hiện cùng lúc
3/15/2014 Lập trình môi trường Windows 6

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)

3/15/2014

Lập trình môi trường Windows

7

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

3/15/2014

Lập trình môi trường Windows

8

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)
3/15/2014 Lập trình môi trường Windows 9

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
3/15/2014 Lập trình môi trường Windows 10

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
3/15/2014 Lập trình môi trường Windows 11

Đặc điểm cơ bản
• • • • Lập trình hướng sự kiện, dựa vào thông điệp Đa nhiệm Môi trường 32/64 bits Hỗ trợ thư viện liên kết động

3/15/2014

Lập trình môi trường Windows

12

Windows và DOS
Windows Lập trình sự kiện, dựa vào thông điệp (message) Multi-tasking DOS Thực hiện tuần tự theo chỉ định Single task

Multi-CPU
Tích hợp sẵn Multimedia Hỗ trợ 32 bits hay hơn nữa DLL, OLE, DDE, COM, OpenGL, DirectX

Single CPU
Phải dùng các thư viện Multimedia riêng Ứng dụng 16 bits Không có

3/15/2014

Lập trình môi trường Windows

13

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

3/15/2014

Lập trình môi trường Windows

14

Viết một Windows Application dùng ngôn ngữ dựa C
Năm Ngôn ngữ Công cụ

1985

C

Windows application programming interface (API) Microsoft Foundation Class (MFC) Library

1992

C++

2001

C# hoặc C++.Net Windows Form (1 phần của .NET Framework)

3/15/2014

Lập trình môi trường Windows

15

Các thư viện lập trình
• • • • • • • Windows API OWL - Object Windows Library MFC - Microsoft Foundation Classes ATL - Active Template Library WTL - Windows Template Library BCL - .NET Framework Base Class Library …

3/15/2014

Lập trình môi trường Windows

16

Các khái niệm cơ bản
• Handle
– Một giá trị 32 bits không dấu (unsigned) do HĐH tạo ra để làm định danh cho 1 đối tượng (cửa sổ, file, vùng nhớ, menu,…)

• ID (Identifier)
– Một giá trị nguyên để làm định danh phân biệt giữa các 1 đối tượng (menu item, control) trong một chương trình.

• Instance
– Một giá trị nguyên do HĐH tạo ra để định danh 1 thể hiện đang thực thi của ứng dụng

• Callback function
3/15/2014

– Các hàm được Lập gọi tự động hệ điều hành trình môi trường bởi Windows

17

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

3/15/2014

Lập trình môi trường Windows

18

Phát sinh các sự kiện và thông điệp

3/15/2014

Lập trình môi trường Windows

19

Lập trình hướng sự kiện
• 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

3/15/2014

Lập trình môi trường Windows

20

Các khái niệm cơ bản
Thông điệp WM_CHAR WM_COMMAND WM_CREATE WM_DESTROY WM_LBUTTONDOWN Được gửi khi Có một ký tự được nhập từ bàn phím Người sử dụng click một mục trên menu, button… Một cửa sổ được tạo ra Một cửa sổ bị huỷ. Phím trái chuột được nhấn

WM_LBUTTONUP WM_MOUSEMOVE
WM_PAINT WM_QUIT WM_SIZE
3/15/2014

Phím trái chuột được thả ra Con trỏ chuột di chuyển trên màn hình
Cửa sổ cần vẽ lại Ứng dụng sắp kết thúc Cửa sổ có thay đổi kích thước
Lập trình môi trường Windows 21

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 22

3/15/2014

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”

3/15/2014

Lập trình môi trường Windows

23

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

3/15/2014

Lập trình môi trường Windows

24

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,…

3/15/2014

Lập trình môi trường Windows

25

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++,…

3/15/2014

Lập trình môi trường Windows

26

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,..

3/15/2014

Lập trình môi trường Windows

27

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)
3/15/2014 Lập trình môi trường Windows 28

Các thành phần của một cửa sổ

3/15/2014

Lập trình môi trường Windows

29

Các control thông dụng
Tab Control Edit box Listbox Combobox Check box Static text

Button
3/15/2014 Lập trình môi trường Windows 30

Các control thông dụng

3/15/2014

Lập trình môi trường Windows

31

Qui ước đặt tên các hằng
• Dùng chữ hoa với tiếp đầu ngữ mô tả loại
CS IDI IDC WS WM CW DT
CS_HREDRAW CS_VREDRAW CW_USEDEFAULT DT_CENTER
3/15/2014

Class style ID number (soá nhaän daïng) cho moät bieåu töôïng ID number (soá nhaän daïng) cho moät cursor Window style Window message Create Window option DrawText option
DT_SINGLELINE IDC_ARROW DT_VCENTER IDI_APPLICATION WM_CREATE WM_DESTROY WM_PAINT WS_OVERLAPPEDWINDOW
32

Lập trình môi trường Windows

Giới thiệu .NET
• .NET bao gồm một bộ đầy đủ các công cụ giúp tạo và cài đặt các ứng dụng, .NET bao gồm:
– Sản phẩm của .NET
• Visual studio.NET IDE • Ngôn ngữ lập trình: C#, VB.NET…

– Dịch vụ web của .NET – .NET Framework
3/15/2014 Lập trình môi trường Windows 33

Giới thiệu .NET
• Là môi trường phát triển phần mềm với các mục tiêu:
– Đơn giản hóa tối đa công việc phát triển và triển khai (deployment) ứng dụng. – Kết hợp các mô hình phát triển phần mềm – Cung cấp môi trường thực thi mạnh mẽ và hướng đến tính bảo mật (secure) – Hỗ trợ đa số ngôn ngữ lập trình thông dụng

.NET Framework
• .NET framework bao gồm 3 thành phần chủ yếu
– Common Language Runtime (CLR) – Các lớp cơ sở của .NET Framework – Giao diện người dùng

3/15/2014

Lập trình môi trường Windows

35

VB

C++

C#

VJ#

… Visual Studio.NET

Common Language Specification

ASP.NET: Web Services and Web Forms

Windows Forms

ADO.NET: Data and XML Base Class Library Common Language Runtime

CLR
• Common Language Runtime là môi trường để cho tất cả các ứng dụng viết trên .NET chạy • CLR hỗ trợ nhiều ngôn ngữ và cung cấp các công cụ dùng chung cho các ngôn ngữ lập trình khác nhau, giúp cho việc tương tác qua lại giữa các ngôn ngữ lập trình khác nhau dễ dàng hơn
3/15/2014 Lập trình môi trường Windows 37

Common Language Runtime
• Là hệ thống hoạt động ở chế độ “run-time” (run-time engine), cung cấp các “dịch vụ” cho ứng dụng như:
– – – – Memory management Thread management Object type safety Security, etc.

• Managed code: là mã chương trình được tạo ra để thực thi trên CLR, được viết ra từ bất kỳ ngôn ngữ nào của .NET framework

CLR
VB .NET Visual C# VB .NET Compiler VC# Compiler

Microsoft Intermediate Language (MSIL)

Common Language Runtime (CLR) Just in Time (JIT) Compilers

Native Code
3/15/2014 Lập trình môi trường Windows 39

Quá trình biên dịch

3/15/2014

Lập trình môi trường Windows

40

IL và metadata
• IL (Intermediate Language):
– Ngôn ngữ trung gian, không phụ thuộc CPU – Được trình biên dịch JIT dịch thành mã máy khi thực thi.

• Metadata:
– Thông tin về chính ứng dụng như định nghĩa các class, method (d.s tham số, kiểu trả về, …), properties,

Source code

VB Compiler

C# Compiler Assembly IL Code

C++ Compiler Assembly IL Code Unmanaged Component

Managed code

Assembly IL Code

Common Language Runtime
JIT Compiler

Class Loading and Layout Execution support Garbage Collection Security

Native Code

Operating System Services - Windows

Các đặc điểm của CLR
• Tự động quản lý bộ nhớ • Hệ thống kiểu dữ liệu dùng chung giữa các ngôn ngữ lập trình • Tính tương tác giữa các ngôn ngữ • Độc lập với cấu trúc phần cứng bên dưới • Cơ chế bảo mật hệ thống • An toàn kiểu dữ liệu
3/15/2014 Lập trình môi trường Windows 43

Quản lý bộ nhớ tự động
• CLR cung cấp dịch vụ quản lý bộ nhớ tự động cho các ứng dụng
– Tất cả các đối tượng và buffer đều được cấp phát tại vùng nhớ “managed heap” – Các đối tượng và buffer không được dùng đều được tự động thu hồi thông qua cơ chế garbage collection

• Không còn …
– Rò rỉ bộ nhớ hoặc đối tượng “mồ côi” – Tham chiếu “bậy bạ”

• Lập trình mà không dùng con trỏ

Phát triển độc lập ngôn ngữ
• Lập trình viên dùng ngôn ngữ ưa thích của mình nhưng 100% tương thích với các thành phần xây dựng từ các ngôn ngữ khác (trong cùng .NET framework)
– Dùng chung môi trường phát triển và công cụ – Dùng chung các thư viện và module – Tận dụng được dịch vụ của CLR

• Các trình biên dịch sẵn có đều có thể được hiệu chỉnh để sinh mã managed. • Hỗ trợ các ngôn ngữ thông dụng nhất
– C#, Visual Basic, C++, Java, PERL, COBOL, SmallTalk

Tính bảo mật
• Tính bảo mật được .NET framework xây dựng ngay từ đầu
– Bảo vệ mã chương trình:
• Các đoạn mã được bảo vệ thông qua định danh • Cơ chế bảo vệ theo dạng policy

– Tích hợp các cơ chế xác thực (authentication) của ASP.NET
• Windows identity, passport, form-based, …

– Các thư viện liên quan đến bảo mật phong phú, theo chuẩn.

Các lớp cơ sở của .NET framework
• Được xây dựng theo phương pháp hướng đối tượng • Cung cấp các lớp dùng để xử lý các vấn đề thường gặp phải khi phát triển ứng dụng • Được dùng chung cho nhiều ngôn ngữ lập trình khác nhau • Được tổ chức thành những namespace được lưu trữ trong assembly.
3/15/2014 Lập trình môi trường Windows 47

Các lớp cơ sở của .NET framework
• Namespace dùng để nhóm các lớp và các interface có mối quan hệ luận lý với nhau. • Các namespace có thể được dùng trong bất cứ ngôn ngữ nào tương thích với .NET. • Namespace được sử dụng để hạn chế việc dùng cùng một tên cho 2 hay nhiều lớp có mục đích sử dụng khác nhau
3/15/2014 Lập trình môi trường Windows 48

Các lớp cơ sở của .NET framework
• • • • • • • • • System System.Collections System.Drawing System.IO System.Data System.Windows.Forms System.Web.UI System.Web.Services ……………………..
Lập trình môi trường Windows 49

3/15/2014

Sơ lược về thư viện của .NET
ASP.NET
Web Forms Web Services Mobile Internet Toolkit

Windows Forms

ADO.NET and XML Base Class Library

Sơ lược về thư viện của .NET
System.Web
Services Description Discovery Protocols Caching Configuration Security SessionState UI HtmlControls WebControls

System.Windows.Forms
Design ComponentModel

System.Drawing
Drawing2D Imaging Printing Text

System.Data
OleDb Common SqlClient SQLTypes XSLT XPath

System.Xml
Serialization

System
Collections Configuration Diagnostics Globalization IO Net Reflection Resources Security ServiceProcess Text Threading Runtime InteropServices

Remoting
Serialization

Giao diện người dùng
• Window Form: dùng để tạo ứng dụng cục bộ có giao diện cửa sổ. • Web form: dùng để tạo ứng dụng web • Console: Dùng để tạo ứng dụng được tương tác bằng lệnh giống như giao diện Ms Dos

3/15/2014

Lập trình môi trường Windows

52

Ưu điểm của .NET Framework
• Dùng chung cho nhiều ngôn ngữ lập trình • Tạo ứng dụng độc lập với môi trường phần cứng bên dưới • Cho phép viết ứng dụng bằng nhiều ngôn ngữ tương thích với .NET • Tự động quản lý tài nguyên • Dễ dàng triển khai ứng dụng
3/15/2014 Lập trình môi trường Windows 53

Visual studio.NET IDE
• Visual Studio .NET Integrated Development Environment (IDE) cung cấp một giao diện dùng chung để phát triển nhiều loại dự án khác nhau. • Cung cấp môi trường để thiết kế, viết code, kiểm tra và sửa lỗi khi phát triển ứng dụng • Các thành phần của Visual Studio .NET IDE
– Dự án và giải pháp – Giao diện của các thành phần

3/15/2014

Lập trình môi trường Windows

54

Dự án và giải pháp
• Trong visual studio .NET ứng dụng được tạo thành từ nhiều phần tử ví dụ như file, thư mục • Để tổ chức các phần tử trên .NET cung cấp dự án và giải pháp • Dự án (project): cho phép xây dựng, dịch và sửa lỗi các thành phần tạo nên ứng dụng. Dự án được dịch ra thành file exe hoặc dll • Giải pháp (Solution): Bao gồm một hay nhiều project
3/15/2014 Lập trình môi trường Windows 55

Dự án và project
Solution Project 1

Project 1 Items

Project 2

Project 2 Items

Miscellaneous Files

3/15/2014

Lập trình môi trường Windows

56

Sign up to vote on this title
UsefulNot useful