Thư viện tri thức trực tuyến
Kho tài liệu với 50,000+ tài liệu học thuật
© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

BÀI GIẢNG: LẬP TRÌNH WINDOWS ppt
Nội dung xem thử
Mô tả chi tiết
BỘ GIAO THÔNG VẬN TẢI
TRƢỜNG ĐẠI HỌC HÀNG HẢI
BỘ MÔN: KHOA HOC̣ MÁY TÍNH
KHOA: CÔNG NGHỆ THÔNG TIN
BÀI GIẢNG
LẬP TRÌNH WINDOWS
TÊN HỌC PHẦN : Lập trình Windows
MÃ HỌC PHẦN : 17214
TRÌNH ĐỘ ĐÀO TẠO : ĐẠI HỌC CHÍNH QUY
DÙNG CHO SV NGÀNH : CÔNG NGHỆ THÔNG TIN
HẢI PHÕNG - 2010
Bài giảng môn học: Lâp̣ triǹ h Windows
i
Tên học phần: Lập trình Windows Loại học phần: 2
Bộ môn phụ trách giảng dạy: Khoa học Máy tính
Khoa phụ trách: CNTT
Mã học phần: 17214 Tổng số TC: 3
TS tiết Lý thuyết Thực hành/Xemina Tự học Bài tập lớn Đồ án môn học
60 30 30 0 0 0
Điều kiện tiên quyết:
Sinh viên phải học xong các học phần sau mới đƣợc đăng ký học phần này:
Lâp̣ trình hƣớng đối tƣơṇ g, Cấu trúc dƣ̃liêụ
Mục tiêu của học phần:
- Cung cấp các kiến thức cơ bản về lâp̣ trình trƣc̣ quan trên hê ̣điều hành Windows
- Cung cấp các kiến thƣ́c về truy câp̣ và can thiêp̣ vào các t hành phần của hệ điều
hành Windows
Nội dung chủ yếu
Các kiến thức về thao tác với file và thƣ mục , cơ sở dƣ̃liêụ registry , các luồng, tiến
trình, dịch vụ, các thƣ viện liên kết động và lập trình sockets trên Windows.
Nội dung chi tiết của học phần:
TÊN CHƢƠNG MỤC
PHÂN PHỐI SỐ TIẾT
TS LT TH/Xemina BT KT
Chƣơng I. Các khái niệm cơ bản 3 0 0 0
1.1. Giới thiệu về môi trƣờng lâp̣ trình trên
Windows
1.1.1. Cở sở về hê ̣điều hành Windows
1.1.2. Các phiên bản của hê ̣điều hành
Windows
1.1.3. Vai trò của Windows trên thi ̣trƣờng phần
mềm
1.2. Thƣ viêṇ Win32 và Win64
1.2.1. Win32 API
1.2.2. Win64 API
1.3. Giớ
i thiêụ về bô ̣công cu ̣Visual Studio
2005
1
1
1
Chƣơng II. Hê ̣thống file vàthƣ mục 4 4 0
2.1. Truy câp̣ vàsƣ̉ duṇ g hê ̣thống file trên môi
trƣờng Windows
2.1.1. Hê ̣thống file và
thƣ muc̣ của Windows
2.1.2. Các thao tác với file và thƣ mục trên
Windows
2.1.3. Các vấn đề liên quan tới Unicode
2.2. Các ví dụ về thao tác vớ
i file
2.2.1. Tạo file và xử lý các lỗi liên quan
2
1
2
1
Bài giảng môn học: Lâp̣ triǹ h Windows
ii
TÊN CHƢƠNG MỤC
PHÂN PHỐI SỐ TIẾT
TS LT TH/Xemina BT KT
2.2.2. Copy file
2.2.3. Hiển thi ̣danh sách các file trong thƣ muc̣
hiêṇ thờ
i
2.3. Quản lý file và thƣ mục nâng cao
2.3.1. Con trỏ file
2.3.2. Truy câp̣ tớ
i các thuôc̣ tính của file và
thƣ muc̣
1 1
Chƣơng III. Hê ̣thống cơ sở dƣ̃liêụ Registry 4 6 0 1
3.1. Khái niệm và vai trò của CSDL Registry
3.1.1. Các khóa, các hive
3.1.2. Các kiểu dữ liệu
3.2. Quản lý CSDL Registry
3.2.1. Thay đổi khóa
3.2.2. Thêm mớ
i khóa
3.2.3. Liêṭ kê các khóa
3.3. Can thiêp̣ Windows qua Registry
3.3.1. Thay đổi giao diêṇ
3.3.2. Thay đổi các thiết lâp̣ đối vớ
i các ổ điã
3.3.3. Thay đổi các thiết lâp̣ vớ
i ngƣờ
i dùng
1
1
2
1
2
3
1
Chƣơng IV. Quản lý các tiến trình và luồng 4 6 0 1
4.1. Các tiến trình và luồng trên Windows
4.2. Các thao tác với tiến trình
4.2.1. Tạo tiến trình
4.2.2. Kết thúc và
thoá
t khỏi môṭ tiến trình
4.2.3. Các thao tác với biến môi trƣờng của
Windows
4.2.4. Ví dụ : Ghi nhâṭ ký
thờ
i gian thƣc̣ hiêṇ
của các tiến trình
4.3. Quản lý luồng (thread) trên Windows
4.3.1. Các khái niệm cơ bản
4.3.2. Mô hình Boss /Worker và các mô hình
khác
4.3.3. Bô ̣nhớ dành cho luồng
4.3.4. Độ ƣu tiên và các trạng thái của luồng
4.4. Môṭ số vídu ̣về tiến trình và
luồng
4.4.1. Tìm kiếm song song với các tiến trình
4.4.2. Thuâṭ toán sắp xếp trôṇ bằng đa luồng
2
1
1
2
2
2
1
Chƣơng V. Các dịch vụ của Windows 4 6 0 1
5.1. Tổng quan về dic̣h vu ̣trên Windows
5.2. Các thành phần của một dịch vụ
5.2.1. Hàm main()
5.2.2. Hàm ServiceMain()
5.2.3. Kiểm soá
t dic̣h vu ̣qua các Handler
5.3. Ví du: dịch vụ đơn giản trên Windows
1
1
2
2
Bài giảng môn học: Lâp̣ triǹ h Windows
iii
TÊN CHƢƠNG MỤC
PHÂN PHỐI SỐ TIẾT
TS LT TH/Xemina BT KT
5.4. Quản lý các dịch vụ của Windows
5.4.1. Các phƣơng pháp kiểm soát các dịch vụ
của Windows
5.4.2. Ví dụ : Điều khiển các dic̣h vu ̣của
Windows
2 2
1
Chƣơng VI. Lâp̣ triǹ h maṇ g vớ
i Sockets 4 4 0 0
6.1. Khái niệm sockets trên Windows
6.2. Các hàm sockets phía server
6.3. Các hàm sockets phía client
6.4. Ứng dụng mạng đơn giản
6.4.1. Phía server
6.4.2. Phía client
6.5. Windows Sockets 2.0
0,5
0,5
0,5
2
0,5
1
0,5
0,5
2
Chƣơng VII. Thƣ viêṇ liên kết đôṇ g 4 4 0 0
7.1. Khái niệm và ứng dụng của thƣ viện liên
kết đôṇ g
7.2. Hê ̣thống thƣ viêṇ DLL của Windows
7.3. Các bƣớc tạo một thƣ viện DLL
7.3.1. Tạo thƣ viêṇ DLL
7.3.2. Viết ƣ́ng duṇ g goị tớ
i thƣ viêṇ DLL
1
1
2
0,5
1
2,5
Nhiệm vụ của sinh viên :
Tham dự các buổi thuyết trình của giáo viên, tự học, tự làm bài tập do giáo viên giao,
tham dự các bài kiểm tra định kỳ và cuối kỳ.
Tài liệu học tập :
- Lê Hƣ̃u Đaṭ. Lâp̣ trình Windows. NXB Giáo duc̣ .
- Charles Petzold. Programming Windows, fifth edition. Microsoft Press. 1998.
- Johnson M. Hart. Windows System Programming Third Edition. Addison Wesley
Professional. 2004.
Hình thức và tiêu chuẩn đánh giá sinh viên:
- Hình thức thi cuối kỳ : Thi vấn đáp.
- Sinh viên phải đảm bảo các điều kiện theo Quy chế của Nhà trƣờng và của Bộ
Thang điểm: Thang điểm chữ A, B, C, D, F
Điểm đánh giá học phần: Z = 0,3X + 0,7Y.
Bài giảng môn học: Lâp̣ triǹ h Windows
i
MỤC LỤC
LỜI NÓI ĐẦU............................................................................................................................1
CHƢƠNG 1: CÁC KHÁI NIỆM CƠ BẢN ...............................................................................2
1. Giới thiệu về môi trƣờng lập trình Windows ..................................................................2
1.1 Cơ sở về hệ điều hành Windows ............................................................................2
1.2 Các phiên bản của hệ điều hành Windows.............................................................2
1.3 Vai trò của Windows trên thị trƣờng phần mềm ....................................................3
2. Thƣ viện Win32 và Win64 ..............................................................................................3
2.1 Win32 API..............................................................................................................3
2.2 Win64 API..............................................................................................................4
3. Các bƣớc phát triển ứng dụng trên Windows..................................................................4
3.1 Chƣơng trình Win32 đơn giản nhất. .......................................................................4
3.2 Chƣơng trình cƣ̉a sổ đơn giản.................................................................................5
3.3 Quản lý các thông điệp .........................................................................................14
3.4 Vòng lặp xử lý thông điệp ....................................................................................17
Bài tập: ..............................................................................................................................20
CHƢƠNG 2: HỆTHỐNG FILE VÀ THƢ MUC̣ ....................................................................21
1. Truy câp̣ vàsƣ̉ duṇ g hê ̣thống file trên môi trƣờng Windows.......................................21
2. Các ví dụ về thao tác với file.........................................................................................21
2.1 Serialization ..........................................................................................................21
2.2 Cài đặt một lớp Serializable..................................................................................24
3. Quản lý file và thƣ mục nâng cao..................................................................................40
Bài tập: ..............................................................................................................................40
CHƢƠNG 3: HỆTHỐNG CSDL REGISTRY........................................................................41
1. Khái niệm và vai trò của CSDL Registry ......................................................................41
1.1 Các khóa, các hive ................................................................................................41
1.2 Các kiểu dữ liệu ....................................................................................................42
2. Quản lý CSDL Registry.................................................................................................43
2.1 Thay đổi khóa .......................................................................................................43
2.2 Thêm mớ
i khóa .....................................................................................................43
2.3 Liêṭ kê các khóa ....................................................................................................44
3. Can thiêp̣ Windows qua Registry ..................................................................................44
3.1 Thay đổi giao diêṇ ................................................................................................44
3.2 Thay đổi các thiết lâp̣ đối vớ
i các ổ điã
................................................................44
Bài giảng môn học: Lâp̣ triǹ h Windows
ii
3.3 Thay đổi các thiết lâp̣ vớ
i ngƣờ
i dùng ..................................................................44
Bài tập: ..............................................................................................................................44
CHƢƠNG 4: QUẢN LÝ CÁC TIẾN TRÌNH VÀ LUỒNG....................................................45
1. Các tiến trình và luồng trên Windows...........................................................................45
2. Các thao tác với tiến trình .............................................................................................46
2.1. Tạo tiến trình........................................................................................................46
2.2. Kết thúc và thoát khỏi một tiến trình ...................................................................47
2.3. Các thao tác với biến môi trƣờng của Windows..................................................47
2.4. Ví dụ: Ghi nhâṭ ký
thờ
i gian thƣc̣ hiêṇ của các tiến trình ....................................47
3. Quản lý luồng (thread) trên Windows...........................................................................49
3.1. Các khái niệm cơ bản...........................................................................................49
3.2. Mô hình Boss/Worker và các mô hình khác ........................................................49
3.3. Bô ̣nhớ dành cho luồng ........................................................................................49
3.4. Độ ƣu tiên và các trạng thái của luồng ................................................................50
4. Môṭ số vídu ̣về tiến trình và
luồng ...............................................................................50
4.1. Tìm kiếm song song với các tiến trình.................................................................50
4.2. Thuâṭ toán sắp xếp trôṇ bằng đa luồng ................................................................52
Bài tập: ..............................................................................................................................55
CHƢƠNG 5: CÁC DỊCH VỤ CỦA WINDOWS....................................................................56
1. Tổng quan về dic̣h vu ̣trên Windows.............................................................................56
2. Các thành phần của một dịch vụ ...................................................................................56
2.1 Hàm main()...........................................................................................................56
2.2 Hàm ServiceMain()...............................................................................................56
2.3 Kiểm soát dịch vụ qua các Handler ......................................................................56
3. Ví du: dịch vụ đơn giản trên Windows..........................................................................57
4. Quản lý các dịch vụ của Windows ................................................................................60
4.1 Các phƣơng pháp kiểm soát các dịch vụ của Windows........................................60
4.2 Ví dụ : Điều khiển các dic̣h vu ̣của Windows.......................................................60
Bài tập: ..............................................................................................................................64
CHƢƠNG 6: LÂP̣ TRÌNH SOCKET.......................................................................................65
1. Khái niệm sockets trên Windows..................................................................................65
2. Các hàm sockets phía server..........................................................................................65
3. Các hàm sockets phía client ..........................................................................................66
4. Ứng dụng mang đơn giản ..............................................................................................66
Bài giảng môn học: Lâp̣ triǹ h Windows
iii
4.1 Phía server.............................................................................................................66
4.2 Phía client .............................................................................................................72
5. Windows Sockets 2.0 ....................................................................................................74
Bài tập: ..............................................................................................................................74
CHƢƠNG 7: THƢ VIÊṆ LIÊN KẾT ĐỘNG .........................................................................75
7.1. Khái niệm và ứng dụng của thƣ viện liên kết động....................................................75
7.2. Hệ thống thƣ viện liên kết động của Windows ..........................................................75
7.3. Các bƣớc tạo một thƣ viện DLL.................................................................................76
7.4. Chia sẻ bô ̣nhớ giƣ̃a các thƣ viêṇ liên kết đôṇ g..........................................................83
7.5. Các vấn đề khác về thƣ viện liên kết động.................................................................84
Bài tập: ..............................................................................................................................85
TÀI LIỆU THAM KHẢO ........................................................................................................86
ĐỀ THI THAM KHẢO............................................................................................................87
Bài giảng môn học: Lâp̣ triǹ h Windows
1
LỜI NÓI ĐẦU
Hệ điều hành Windows của Microsoft là hệ điều hành đƣợc cài đặt nhiều nhất trên các
máy PC hiện nay. Sự phổ biến của Windows và nền tảng phần cứng của Intel dẫn tới sự cần
thiết phải có những hiểu biết sâu về chúng, đặc biệt đối với những lập trình viên. Mục đích
của học phần này là cung cấp cho học viên một cái nhìn tổng quan, từ cơ bản tới chi tiết về
các khía cạnh của lập trình trên hệ điều hành Windows, từ các chi tiết trong cấu trúc của một
chƣơng trình tới các khái niệm cấp cao về tiến trình, luồng, xử lý song song, thƣ viện DLL,
lập trình Socket, can thiệp vào cơ sở dữ liệu Registry ....
Tài liệu này dựa trên những kinh nghiệm và nghiên cứu mà tác giả đã đúc rút, thu thập
trong quá trình giảng dạy môn học Lập trình C trên Windows, cùng với sự tham khảo của các
tài liệu của các đồng nghiệp , các tác giả trong và ngoài nƣớc , tƣ̀ điển trƣc̣ tuyến Wikipedia .
Với bẩy chƣơng đƣợc chia thành các chủ đề khác nhau từ các khá
i niêṃ cơ bản cho tới các
thao tác với hệ thống file, thƣ mục, hệ thống CSDL Registry, quản lý tiến trình và luồng, lập
trình quản lý dịch vụ, lập trình socket, thƣ viện liên kết động DLL… hy vọng sẽ cung cấp cho
các em sinh viên , các bạn độc giả một tài liệu bổ ích . Mặc dù đã rất cố gắng song vẫn không
tránh khỏi một số thiếu sót , hy vọng sẽ đƣợc các bạn bè đồng nghiệp , các em sinh viên , các
bạn độc giả góp ý chân thành để tôi có thể hoàn thiện hơn nữa tài liệu này.
Xin gửi lời cảm ơn chân thành tới các bạn bè đồng nghiệp và Ban chủ nhiệm khoa
Công nghệ Thông tin đã tạo điều kiện giúp đỡ để tài liệu này có thể hoàn thành.
Hải phòng, tháng 06 năm 2010
Tác giả
Nguyêñ Hƣ̃u Tuân
Bài giảng môn học: Lâp̣ triǹ h Windows
2
Chƣơng 1: Các khái niệm cơ bản
Tài liệu này đƣợc biên soạn để cung cấp cho ngƣời hoc̣ những kiến thức cơ bản vế việc
viết các chƣơng trình sử dụng giao diện lập trình API trên môi trƣờng Win32. Ngôn ngữ đƣợc
sử dụng là ngôn ngữ C, hầu hết các trình biên dịch C++ hiện nay đều có thể dịch đƣợc các
chƣơng trình mẫu trình bày trong tài liệu này. Hầu hết tất cả các thông tin đƣợc trình bày
trong tài liệu này đều có thể ứng dụng cho bất cứ ngôn ngữ nào có thể truy cập các hàm API,
chẳng hạn nhƣ Java, Assembly, và Visual Basic.
Tài liệu này đƣợc biên soạn không phải để dạy các bạn độc giả lập trình bằng ngôn ngữ
C, hoặc dạy chúng ta sử dụng bất cứ một trình biên dịch cụ thể nào (chẳng hạn nhƣ Borland
C++, Visual C++, …) tuy nhiên trong phần phụ lục tôi sẽ dành một chút để cung cấp cho các
bạn một số chú ý về một số trình biên dịch mà tôi đã sử dụng.
1. Giới thiệu về môi trƣờng lập trình Windows
1.1 Cơ sở về hệ điều hành Windows
Hệ điều hành Windows là một hệ điều hành dành cho ngƣời dùng cuối (End User
Operating System) với các tính năng cơ bản sau: đa nhiệm, giao diện đồ họa, plug and play và
quan trọng nhất là Windows Interface Based - tức là giao diện các chƣơng trình chạy trên
Windows đều có dạng các cửa sổ.
1.2 Các phiên bản của hệ điều hành Windows
Do cách dùng tiếng Anh và việc hiểu tiếng Anh dẫn tới việc nhiều ngƣời hiểu về các
phiên bản của hệ điều hành Windows chƣa chính xác. Ví dụ có bạn cho rằng Windows XP
Professional Edition và Windows XP Home Edition là hai phiên bản khác nhau của hệ điều
hành Windows. Thực ra nhƣ vậy vừa đúng lại vừa không đúng, đúng là Windows XP
Professional Edition và Windows XP Home Edition là hai Edition khác nhau của cùng 1
Version Windows XP, có lẽ sai là vì hiểu từ Edition và Version sai. Version có nghĩa là một
phiên bản, thƣờng đi kèm với các số hiệu của phiên bản (1.0, 1.2. … 5.0) và thƣờng là một
thay đổi lớn đối với bản thân phần mềm, ví dụ nhƣ đối với Windows thì có 3 thay đổi lớn:
thay đổi về kiến trúc nền tảng của hệ điều hành (tức là phần kernel của hệ điều hành), hai là
cập nhật các bản vá (patch) cho các lỗi của phiên bản trƣớc đó đối với tất cả các phần của hệ
điều hành, ba là các phần mới của hệ điều hành (có thể là các ứng dụng đi kèm hoặc hỗ trợ
thêm các công nghệ mới, ví dụ nhƣ đối với Windows là chuẩn Wi-Fi, DVD, dot NET
framework hay các ứng dụng nhƣ Windows Media Player, IE …).
Còn Edition là ấn bản khác nhau của cùng một phiên bản, các Edition thƣờng gắn với
các yếu tố về địa lý, ngôn ngữ khác nhau (ví dụ nhƣ Compact Edition nghĩa là bản rút gọn,
Standard Edition là bản chuẩn, Ultimate Edition là bản có các tính năng cao cấp nhất …). Đối
với hệ điều hành Windows các Edition khác nhau thƣờng phân biệt bởi các tính năng của
chúng, do nhắm tới việc phục vụ các đối tƣợng khác nhau nên Microsoft bỏ đi một số tính
năng không cần thiết và tăng thêm các tính năng mà đối tƣợng ngƣời dùng hay dùng ví dụ
nhƣ bản Home Edition nhắm tới ngƣời dùng gia đình nên các tính năng đồ họa, video, âm
thanh phải tốt, còn bản Professional nhắm tới các ngƣời dùng chuyên nghiệp có trình độ cao
nên các tính năng hệ thống sẽ cao hơn.
Windows có các phiên bản sau đây:
Windows 1.01
Windows 2.03