1. Trang chủ
  2. » Giáo án - Bài giảng

giáo trình môn học lập trình windows - nguyễn trí tuấn

298 1,3K 4

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 298
Dung lượng 2,84 MB

Nội dung

Lập trình C trên Windows Các khái niệm cơ bản Nguyễn Tri Tuấn Khoa CNTT – ĐH.KHTN.Tp.HCM Email: nttuan@ fit.hcmuns.edu.vn Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 2  C

Trang 1

ĐỀ CƯƠNG MÔN HỌC: LẬP TRÌNH WINDOWS

(WINDOWS PROGRAMMING)

Mã môn học: ………

45 tiết lý thuyết, 30 tiết thực hành

-oOo -

I Tóm tắt mục tiêu của 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, lập trình giao diện đồ họa (GUI), cơ chế quản lý bộ nhớ, lập trình đồng hành, kỹ thuật in ấn…, từ đó sinh viên có khả năng tự xây dựng 1 ứng dụng hoàn chỉnh ở mức độ vừa phải bằng ngôn ngữ Visual C++, trên nền thư viện MFC

- Tạo cho sinh viên một nền tảng trong việc tiếp thu và khai thác các ngôn ngữ lập trình cấp cao khác trên Windows như: Visual Basic, Delphi, C++ Builder, Access, …

- Tạo cho sinh viên một kiến thức cơ bản để có thể tự nghiên cứu các kỹ thuật lập trình sâu hơn trên môi trường Windows

II Các môn học trước:

Tin học đại cương A1, Tin học đại cương A2, Lập trình hướng đối tượng, Cấu trúc dữ liệu

III Đối tượng áp dụng:

- Sinh viên hệ Cao đẳng

- Sinh viên hệ chính qui chuyên ngành CNTT, giai đoạn 2

- Sinh viên hệ Hoàn chỉnh đại học chuyên ngành CNTT

IV Nội dung môn học:

Chương 0: Các khái niệm cơ bản

1 Giới thiệu các thư viện lập trình của HĐH Windows

2 Các thành phần giao diện GUI (Cửa sổ, hộp thoại, các controls,…)

3 Các khái niệm cơ bản (Handle, ID, Instance, Callback)

4 Lập trình sự kiện (Event driven programming), vòng lặp xử lý thông điệp (Message loop) trong các ứng dụng

5 Tài nguyên của ứng dụng (Resources)

6 Một chương trình tổng quát xây dựng trên Windows 32 API

7 Các kiểu dữ liệu cơ bản

Chương 1: Kỹ thuật lập trình Visual C++ (MFC)

1 Giới thiệu về MFC

Trang 2

Nguyen Tri Tuan – Khoa CNTT – DHHKTN – TP.HCM (Updated 02/2004) 2 / 3

6 Các Control

7 Xây dựng và xử lý hộp thoại (Dialog box)

8 Documents và Views: Scroll view, List view, Tree view

9 SDI – Single Document Interface

10 MDI - Multi Document Interface

Chương 2: Thư viện liên kết động (DLL)

2 Phân trang bộ nhớ (Paging Memory)

3 Không gian địa chỉ ảo (Virtual Address Space)

4 Các hàm xử lý trên bộ nhớ ảo (Virtual Memory Functions)

2 Các kiểu định dạng dữ liệu (data format) dùng trong Clipboard

3 Các kỹ thuật thao tác trên Clipboard

4 Xây dựng 1 Clipboard Viewer

Chương 6: Multi-Media

1 Tổng quan về các hàm thư viện

2 Thư viện MCI (Media Control Interface)

3 Một chương trình minh họa điều khiển CD-audio và play file WAV

Chương 7: Multi-thread programming

1 Khái niệm Multi-tasking và Multi-threading

2 Tiến trình (Process), tiểu trình (Thread)

3 Chương trình Multi-thread đơn giản

4 Quản lý các tiểu trình

- Tạo lập tiểu trình

- Kết thúc tiểu trình

- Tạm dừng tiểu trình (Thread suspension)

- Tiếp tục tiểu trình (Thread resumption)

Trang 3

5 Đồng bộ các tiểu trình (Thread Synchronization)

6 Lưu trữ cục bộ trong tiểu trình (Thread Local Storage – LTS)

V Tài liệu tham khảo:

1 Lê H ữu Đạt - Lập trình Windows – Nhà xuất bản giáo dục, 2000

2 Jeff Prosise - Programming Windows with MFC 2nd Edition, Microsoft Press, 1999

3 Charles Petzold - Programming Windows 5th Edition - Microsoft Press,

1998

4 Matt Pietrek - Windows 95 System Programming SECRETS - IDG Books

Worldwide Inc., 1995

5 Thuan Q Pham and Pankaj K.Garg – Multithreaded Programming with

Windows NT – Prentice Hall PTR, 1996

6 Windows 95 Developer’s Guide

7 David J Kruglinski and Scott Wingo and George Shepherd - Programming

Microsoft Visual C++ 5th Edition - Microsoft Press, 1998

- Khuyến khích thiết kế chương trình theo hướng đối tượng

- Thời gian tự làm bài thêm: 90 tiết

- Người biên soạn: Th.S NGUYỄN TRI TUẤN

- Người duyệt: ………

Trang 4

Nguyen Tri Tuan – Khoa CNTT – DH KHTN Tp.HCM 1/1

CÁC QUI ĐỊNH - Môn học: Lập trình C trên Windows

-oOo -

1 Cách tính điểm:

- Môn học chỉ thi trên máy vào cuối khóa, không thi viết trên giấy

- Điểm thi cuối khoá: 50%

- Điểm bài project giữa khóa: 50% (từ 1-4 bài project)

- Có thể có các đồ án môn học cộng điểm (không quá 30% tổng số điểm)

- Được phép sử dụng tất cả tài liệu và đĩa mềm khi thi

- Tất cả các bài làm giống nhau sẽ bị điểm 0

2 Làm bài thực hành:

- Phải có kiến thức tốt về lập trình hướng đối tượng

- Phải có kiến thức tốt về sử dụng hệ điều hành Windows và các ứng dụng khác

- Phải chuẩn bị bài thực hành trước khi vào giờ thực hành

- Công cụ lập trình: Visual C++ 6, sử dụng MFC

- Chương trình viết phải ngăn nắp, thẳng hàng, ghi chú đầy đủ Đặt tên biến

và tên hàm phải gợi nhớ, có qui ước xác định (VD Tên biến chữ thường, tên hàm chữ hoa …)

3 Bài tập Project và đồ án:

Xem thêm phần “Hướng dẫn làm bài tập Project hay Đồ án môn học”

- Hết -

Trang 5

Hướng dẫn làm bài tập Project hay Đồ án môn học

2 Yêu cầu chung:

- Thường các bài tập Project hay đồ án sẽ được yêu cầu nộp 2 phần chính:

ƒ Sưu liệu: là phần tài liệu DOC đi kèm, để mô tả bài tập Chỉ nộp file Xem phần [3] để biết nội dung sưu liệu

ƒ Chương trình: xem phần [4] để biết cấu trúc đĩa nộp

- Để tránh tình trạng kiện cáo mất bài nộp sau này, yêu cầu thực hiện theo các qui định sau:

ƒ Lớp trưởng chỉ nộp cho GV 1 đĩa CD duy nhất chứa tất cả bài

nộp của các bạn trong lớp GV sẽ không nhận nộp đĩa mềm vì có

thể thất lạc hay hư hỏng

ƒ GV sẽ không nhận bất kỳ bài nộp nào qua email, vì bất kỳ lý do

gì GV cũng sẽ không trả lời email gởi nộp bài, và đương nhiên, bài nộp đó coi như không có

3 Gợi ý viết báo cáo sưu liệu: (không nhất thiết phải có đủ các mục)

- Phân tích các hướng tiếp cận khác nhau (nếu có)

- Chọn ra phương pháp được sử dụng trong đồ án

Phần 4: Phân tích và thiết kế chương trình

- Các thuật toán quan trọng

- Trình bày trên phương diện lý thuyết các thuật toán then chốt trong chương trình Minh họa bằng lưu đồ Đánh giá, phân tích

- Thiết kế chi tiết của chương trình: các CTDL, các hàm quan trọng, các giải thuật, các bước thực hiện cài đặt

- Các cấu trúc dữ liệu cần thiết Nêu mô tả, ý nghĩa từng cấu trúc, các field, lý

do chọn lựa CTDL

- Các hàm quan trọng: nêu prototype, ý nghĩa các tham số, kết quả trả về, nội dung của hàm

Phần 5: Hướng dẫn & Trợ giúp

- Hướng dẫn sử dụng và cài đặt chương trình

Trang 6

Nguyen Tri Tuan – Khoa CNTT – DH KHTN Tp.HCM 2/2

- Ưu khuyết điểm của chương trình, đồ án

- Đánh giá kết quả thực hiện: phần nào đã hoàn thành, phần nào chưa ?

- Hướng mở rộng của chương trình ?

Phần 7: Tài liệu tham khảo

- Liệt kê cụ thể các tài liệu tham khảo, tên tác giả, tựa, năm xuất bản, trang nào ?

- Liệt kê cụ thể địa chỉ Web-site

4 Cấu trúc đĩa nộp:

Mỗi người có 1 thư mục duy nhất, tên thư mục là mã SV VD 012123 Trong thư mục có những phần sau đây:

o Thư mục con <SOURCE> chứa toàn bộ chương trình nguồn của project

o Thư mục con <RELEASE> chứa file thi hành EXE và các file thư viện

(Lib, DLL,…), nếu có

o Thư mục con <SETUP> chứa toàn bộ chương trình cài đặt của project

(nếu cần phải setup)

o Thư mục con <DOCUMENTS> chứa các file Word là sưu liệu của

chương trình

o Thư mục con <REFERENCES> chứa các file tài liệu tham khảo (DOC,

PDF, HTML, source code…) mà Project có tham khảo, nếu có

Lưu ý: không nộp các file trung gian trong quá trình biên dịch như NCB, OPT, PCH, …

5 Các lưu ý khác:

- Nếu chương trình có sử dụng các công cụ khác (không phải thư việc chuẩn

của ngôn ngữ) hay cần phải thực hiện các thao tác cài đặt/đăng ký mới chạy

được thì bắt buộc phải có chương trình Setup đi kèm

- Chương trình phải được thử nghiệm chạy tốt trên các môi trường Win9x,

Win2000, WinXP

- Nên Setup và Test chương trình trên các máy bình thường (không phải máy

dùng để develop chương trình) để tránh tình trạng cài đặt thiếu thư viện,

Component, ActiveX, …

- Hết -

Trang 7

Môn học Lập trình C trên Windows

Bài tập thực hành -oOo - Chương 0:

1 Làm quen với 1 chương trình C viết trên thư viện API

a Phần 1:

- Sử dụng VC++ 6, dùng chức năng New project, chọn loại project “Win32 Application”

- Chọn chức năng “A typical Hello World !” application

- Hoàn tất tạo project, biên dịch và chạy thử nghiệm chương trình

b Phần 2:

- Thay đổi tiêu đề của của sổ thành “Chuong trinh C/API”

- Thay đổi nội dung hiển thị trên màn hình client area thành:

“Day la chuong trinh dau tien…

… viet bang VC++…

… tren HDH Windows…

… bang thu vien API “

2 Tài nguyên của chương trình: lấy chương trình kết quả của bài tập 1, thực hiện tiếp:

a Phần 1:

- Thay đổi biểu tượng của chương trình

- Thay đổi con trỏ chuột

- Thay đổi nội dung của hộp thoại “About”

b Phần 2:

- Bổ sung thêm vào menu “File” các mục sau: New, Open, Save

- Thêm mới 1 menu popup “Edit” với các item sau: Undo, Cut, Copy, Paste, Select all

- Mỗi menu item đều có phím tắt tương ứng

3 Lập trình sự kiện: lấy chương trình kết quả của bài tập 2, thực hiện tiếp:

a Phần 1:

- Khi user chọn menu item, hiển thị dialog box thông báo:

“Ban vua chon chuc nang XXXX”

- Khi user thoát chương trình, hiển thị dialog box hỏi xác nhận

b Phần 2:

- Khi user click mouse trái/phải, hiển thị dialog box thông báo:

“Ban vua nhan mouse trai [phai], tai toa do X=, Y=”

Chương 1:

4 Làm quen với 1 chương trình C viết bằng thư viện MFC

a Phần 1:

- Sử dụng VC++ 6, dùng chức năng New project, chọn loại project “MFC AppWizard (exe)”

- Chọn loại ứng dụng “Single document”

- Hoàn tất tạo project, biên dịch và chạy thử nghiệm chương trình

b Phần 2:

- Thay đổi biểu tượng của chương trình

- Thay đổi con trỏ chuột

- Thay đổi nội dung của hộp thoại “About”

c Phần 3:

- Khi user click mouse trái/phải, hiển thị dialog box thông báo:

Trang 8

© Nguyen Tri Tuan – Khoa CNTT ĐH.KHTN TP.HCM 2/7

- Khi user chọn chức năng “New” Æ tạo 1 cửa sổ soạn thảo EDIT trong vùng client của cửa sổ giao diện chính

- Xử lý WM_SIZE để kích thước của cửa sổ soạn thảo EDIT luôn trùng khớp với kích thước vùng client của cửa sổ giao diện chính

- Thực hiện các chức năng: Open, Save, Save as, Undo, Cut, Copy, Paste

6 Một chương trình quản lý đơn giản

- Tạo ứng dụng MFC ở chế độ “Dialog based”

- Màn hình giao diện gợi ý như hình vẽ

- Chương trình cho phép nhập và lưu thông tin lý lịch của các nhân viên Dữ liệu được lưu vào file nhị phân dạng record

- Người dùng nhập thông tin chi tiết cho 1 nhân viên rồi nhấn “Lưu” để lưu record vào file Sau khi lưu xong, xóa các ô nhập liệu để thực hiện cho nhân viên tiếp theo

- Mục “Trình độ” có các lựa chọn sau: tiểu học, trung học, trung cấp, đại học, sau đại học

- Nút “Chọn hình” mở hộp thoại cho phép chọn 1 file hình ảnh (BMP) Tên file được thể hiện trên ô “Tên file hình”, ảnh được hiển thị trên ô trống

7 Phát triển từ bài tập 6

- Tạo ứng dụng MFC ở chế độ “Dialog based”

- Màn hình giao diện gồm 2 phần:

o Bên trái là 1 danh sách các Mã NV (đọc từ file record)

o Bên phải có giao diện giống bài tập 6

- User chọn 1 Mã NV trong danh sách, các thông tin tương ứng của NV sẽ hiển thị

Chương 2:

8 Áp dụng kỹ thuật lập trình sự kiện và kỹ thuật Hook (chặn các thông điệp) để xây dựng

chương trình “bộ gõ tiếng Việt.”

Yêu cầu:

- Chương trình chạy background, hiển thị icon ở system tray

- Hỗ trợ 1 trong các cách gõ: VNI, TELEX

- Hỗ trợ 1 trong các bảng mã: VNI, TCVN3

- Áp dụng được trong tất cả các ứng dụng trên Windows

- Chỉ nộp chương trình, không cần sưu liệu

9 Xây dựng chương trình “DateBook” Công dụng của chương trình là cho phép ghi nhận

các việc phải làm trong ngày, nhắc nhở user khi đến thời điểm qui định

Yêu cầu:

Trang 9

- Chương trình chạy background, hiển thị icon ở system tray

- Khi user click lên icon của chương trình, sẽ mở giao diện hộp thoại như sau:

- Khi user click chọn 1 ngày trên lịch, chương trình sẽ mở giao diện hộp thoại quản lý công việc như sau:

• Ngày: là ngày/tháng/năm đã chọn

• Các công việc: danh sách các công việc đã được định nghĩa trong ngày Thể hiện dạng ListView 2 cột 1 cột là “Tên công việc”; 1 cột là “Thời gian thực hiện”

• Add: chức năng định nghĩa mới 1 công việc

• Delete: chức năng xóa bỏ 1 công việc trong danh sách

• Close: đóng dialog

- Khi user chọn chức năng “Add”, chương trình mở dialog cho phép định nghĩa mới 1 công việc trong ngày như sau:

Trang 10

© Nguyen Tri Tuan – Khoa CNTT ĐH.KHTN TP.HCM 4/7

• Nhắc nhở: hiển thị 1 message-box với câu thông báo lên màn hình khi đến giờ qui định, đồng thời phát 1 tiếng sound

• OK: xác nhận công việc đã nhập

• Cancel: hủy bỏ công việc đang nhập

- Sau khi user đã định nghĩa các công việc, chương trình sẽ tự động kiểm tra và nhắc nhở Chu kỳ kiểm tra là 1 phút

- Lưu trữ:

• Lưu lại tất cả công việc trong 1 tập tin, tên file do user chỉ định

• Tên file được lưu vào file WIN.INI trong section [DateBook]

• Khi user mở dialog “Quản lý công việc trong ngày”, chương trình tự động đọc file và load tất cả các công việc của ngày đã chọn vào danh sách

- Xây dựng các chức năng chính dưới dạng DLL, bao gồm:

• Quản lý công việc trong ngày

• Tạo mới 1 công việc trong ngày

10 Xây dựng chương trình “Simple Drawing” Chương trình cho phép user dùng mouse để

vẽ các đối tượng hình, tô màu

Mô tả chi tiết:

Giao diện gợi ý như hình vẽ (SDI - Single Document Interface)

a Các chức năng của chương trình bao gồm:

- File:

o New: xóa màn hình, bắt đầu vẽ mới

o Exit: thoát chương trình

- Edit:

o Cut: cắt khu vực đang chọn, đưa vào Clipboard (dạng bitmap)

o Copy: copy khu vực đang chọn, đưa vào Clipboard (dạng bitmap)

o Paste: dán dữ liệu trong Clipboard ra màn hình, tại tọa độ (0, 0)

Trang 11

- Drawing:

o Line: chọn chế độ vẽ đường thẳng User dùng mouse để vẽ đoạn thẳng

o Rectangle: chọn chế độ vẽ hình chữ nhật User dùng mouse để vẽ hình chữ nhật

o Circle: chọn chế độ vẽ đường tròn User dùng mouse để vẽ đường tròn

o Select: chọn chế độ đánh dấu vùng (để Cut/Copy)

o Fill: chọn chế độ tô màu User click mouse để chọn điểm bắt đầu tô màu

o Line Color: mở hộp thoại Color, cho phép user chọn màu vẽ đường

o Fill Color: mở hộp thoại Color, cho phép user chọn màu để tô

- View:

o Toolbar: Xem/ẩn thanh ToolBar

o Statusbar: Xem/ẩn thanh StatusBar

- Help:

o About: giới thiệu về chương trình

b Các yêu cầu khác:

- Tất cả các chức năng đều thể hiện trên ToolBar

- Mỗi chức năng đều có ToolTip Text và có hướng dẫn trên StatusBar

- Tất cả chức năng liên quan đến Clipboard (Cut/Copy/Paste) được tổ chức thành 1 DLL riêng

11 Xây dựng chương trình “Object Drawing” Chương trình cho phép user dùng mouse để

vẽ các đối tượng hình, copy, cắt dán các đối tượng

Mô tả chi tiết:

Giao diện gợi ý như hình vẽ (SDI - Single Document Interface)

a Các chức năng của chương trình bao gồm:

- File:

o New: xóa màn hình, bắt đầu vẽ mới

Trang 12

© Nguyen Tri Tuan – Khoa CNTT ĐH.KHTN TP.HCM 6/7

o Line: chọn chế độ vẽ đường thẳng User dùng mouse để vẽ đoạn thẳng Đối tượng đường thẳng có các thuộc tính: (x1, y1), (x2, y2), nét vẽ (pen, bao gồm: màu (color), độ rộng (thickness), dạng (style))

o Rectangle: chọn chế độ vẽ hình chữ nhật User dùng mouse để vẽ hình chữ nhật Đối tượng hình chữ nhật có các thuộc tính: (x1, y1), (x2, y2), nét vẽ (pen, bao gồm: màu (color), độ rộng (thickness), dạng (style)), mẫu tô (brush, bao gồm: dạng (style), màu (color), hatch)

o Ellipse: chọn chế độ vẽ đường tròn User dùng mouse để vẽ đường tròn Đối tượng ellipse có các thuộc tính: (x, y), bán kính nhỏ, bán kính lớn, nét vẽ (pen, bao gồm: màu (color), độ rộng (thickness), dạng (style)), mẫu tô (brush, bao gồm: dạng (style), màu (color), hatch)

o Select: chuyển sang chế độ chọn đối tượng (để Cut/Copy) Đối tượng được chọn sẽ “high-light” và user có thể dùng mouse di chuyển đối tượng

o Settings: mở hộp thoại xác định các thuộc tính vẽ Hộp thoại cho phép xác định 2 loại thuộc tính sau:

ƒ Nét vẽ (Pen): màu (color), độ rộng (thickness), dạng (style)

ƒ Mẫu tô (Brush): dạng (style), màu (color), hatch Các thuộc tính vẽ sẽ được áp dụng cho những đối tượng sau đó

- View:

o Toolbar: Xem/ẩn thanh ToolBar

o Statusbar: Xem/ẩn thanh StatusBar

- Mỗi chức năng đều có ToolTip Text (trên Toolbar) và có hướng dẫn trên StatusBar

- Tất cả chức năng liên quan đến Clipboard (Cut/Copy/Paste) được tổ chức thành 1

DLL riêng

Chương 6:

12 Xây dựng chương trình “Trò chơi lật hình” Chương trình có 1 số cặp hình giống nhau

(bị dấu) Người dùng click mouse để lật từng hình, nếu lật được 2 hình giống nhau liên tiếp thì ghi được 1 điểm; nếu không hình sẽ trở lại trạng thái bị dấu

Mô tả chi tiết:

- Giao diện gợi ý như hình vẽ Thư viện các hình sử dụng có thể lấy các file ICO và import vào chương trình sẵn

- Màn hình bên trái dạng ListView thể hiện các hình

- Option “Số hình”: cho phép user chọn số cặp hình muốn chơi Không quá MAX = 10 cặp hình

- Option “Play nhạc”: cho phép play 1 file nhạc (WAV) trong lúc chơi Nhạc bắt đầu play khi user nhấn “New game” để bắt đầu 1 game mới

- Option “Play 1 lần”: play xong file nhạc 1 lần rồi dừng

- Option “Play liên tục”: play liên tiếp bài nhạc cho đến khi hết game hay thoát

Trang 13

- Option “Chọn file WAV”: cho phép user chọn file WAV để play Tên file đã chọn thể hiện trên mục “Tên file”

- “Kết quả” thể hiện số điểm đạt được và thời gian đã trôi qua (từ lúc bắt đầu game)

- Nút “New game” để bắt đầu 1 game mới

o Có play nhạc hay không

o Play 1 lần hay play liên tục

o Tên file WAV

o Tọa độ góc trên của cửa sổ giao diện

- Khi bắt đầu chạy, chương trình kiểm tra file TCLH.INI, nếu có thì xác lập tất cả các thông số như đã lưu; nếu không có thì xác lập các thông số mặc định

o Số hình = 6

o Không play nhạc

o Cửa sổ giao diện hiển thị ngay chính giữa màn hình

- Hết -

Trang 15

Bài tập tuần 1

Người soạn: Nguyễn Đức Hoàng Hạ Ngày soạn: 26-2-2005

Email: ndhha@fit.hcmuns.edu.vn

Viết chương trình từ hàm WinMain:

Đọc tập tin input.txt các thông tin:

• Dòng đầu là số n

• Dòng kế tiếp có n số nguyên, mỗi số cách một khoảng trắng

Yêu cầu:

a) Tính tổng của dãy số trên và thông báo bằng MessageBox

b) Tìm phần tử lớn nhất của dãy và thông báo bằng MessageBox

c) Sắp xếp tăng dần dãy số trên rồi xuất ra tập tin output.txt như sau:

• Dòng đầu là số n

• Dòng kế tiếp có n số nguyên, mỗi số cách một khoảng trắng

Sau khi ghi xong thi thông báo

“Da sap xep du lieu va ghi vao tap tin output.txt”

d) Đếm số số nguyên tố trong dãy và thông báo kết quả bằng MessageBox

(Số nguyên tố là số nguyên lớn hơn 1 và chỉ chia hết cho 1 và chính nó)

Một số hướng dẫn:

• Tạo project: File à New à (Projects) Win32 Application (Nhập tên project)

à A simple Win32 Application

• Cú pháp lệnh MessageBox:

int MessageBox(

HWND hWnd,

LPCTSTR lpText, //chu ỗi ký tự

LPCTSTR lpCaption, //chu ỗi ký tự

UINT uType

);

Xem chi ti ết trong MSDN

Ví dụ cách dùng:

MessageBox(NULL,”Noi dung thong bao”, “Thong bao so 1”, MB_OK);

• Ví dụ thông báo một số nguyên x la số nguyên tố:

int x = 7;

char buf[100];

sprintf(buf,”so x=%d la so nguyen to”, x);

MessageBox(NULL, buf, “So nguyen to”, MB_OK);

(Nhớ include tập tin “stdio.h” vào để sử dụng lệnh sprintf)

• Debug:

- Chạy chương trình dạng debug: F5

- Chạy từng lệnh: F10

- Chạy vào trong hàm con: F11

- Chạy tới vị trí trỏ chuột: Ctrl+F10

- Đánh dấu vị trí dừng (Breakpoint) : F9

Một số câu hỏi:

Trang 16

Lập trình C trên Windows

Các khái niệm cơ bản

Nguyễn Tri Tuấn Khoa CNTT – ĐH.KHTN.Tp.HCM Email: nttuan@ fit.hcmuns.edu.vn

Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 2

 Các 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 (Resources)

 Một chương trình tổng quát xây dựng trên

Win32 API

 Các kiểu dữ liệu cơ bản

Trang 17

Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 3

Vài điểm khác biệt giữa lập trình Windows và DOS

Hỗ trợ 32 bits hay hơn nữa

Phải dùng các thư viện Multimedia riêng

Tích hợp sẵn Multimedia

Single CPU Multi- CPU

Single task Multi- tasking

Thực hiện tuần tự theo chỉ định

Lập trình sự kiện, dựa vào

thông điệp (message)

DOS Windows

Các thư viện lập trình của Windows

 SDK - Software Development Kit

ƒ Là bộ thư viện lập trình nền tảng của HĐH

Windows

ƒ Cung cấp tất cả các công cụ cần thiết để xây

dựng 1 ứng dụng trên Windows

ƒ Đượ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 VD OWL của BorlandC, MFC của

Visual C++,…

Trang 18

Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 5

Các thư viện lập trình của Windows …(tt)

 Một số thành phần tiêu biểu của SDK:

Các thư viện lập trình của Windows …(tt)

 OWL - Object Windows Library

ƒ Là bộ thư viện hướng đối tượng của

BorlandC++

 MFC - Microsoft Foundation Classes

ƒ Là bộ thư viện hướng đối tượng của Visual C++

 Một ứng dụng trên Windows có thể được

viết bằng

ƒ Thư viện SDK

ƒ Một thư viện khác (OWL, MFC,…) phối hợp với

SDK

Trang 19

Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 7

Các loại ứng dụng

 Win32 Console: ứng dụng 32 bits, với giao diện

dạng DOS command line

 Win32 (SDK): ứng dụng 32 bits, chỉ sử dụng thư

 MFC EXE: ứng dụng 32 bits, sử dụng thư viện

Microsoft Foundation Class

 MFC DLL: ứng dụng 32 bits, dạng thư viện liên kết

động (Dynamic-linked library), sử dụng MFC

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 do ứng dụng tạo ra để làm định danh

cho 1 đối tượng (menu item, control)

 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:

ƒ Thuộc tính của 1 hàm/thủ tục sẽ được gọi bởi HĐH,

không phải bởi ứng dụng

Trang 20

Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 9

Lập trình sự kiện (Even driven programming)

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

Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 10

Lập trình sự kiện (Even driven programming)…(tt)

Qui trình xử lý thông điệp

Trang 21

Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 11

Lập trình sự kiện (Even driven programming)…(tt)

// Vòng lặp xử lý thông điệp trong 1 ứng dụng –

// Message loop

MSG msg;

// lấy thông điệp ra khỏi hàng đợi của ứng dụng

while (GetMessage(&msg, NULL, 0, 0))

ƒ Lớp cửa sổ (window class)

ƒ Hàm xử lý thông điệp (window procedure)

ƒ Các thuộc tính

Trang 22

Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 13

Các thành phần giao diện đồ họa (GUI)…(tt)

 GUI: Graphics User Interface

 Các dạng GUI cơ bản:

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

ƒ MDI - Multiple Document Interface

 Một cửa sổ làm việc chính (Frame window) và nhiều cửa sổ con (Child

window)

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

ƒ Dialog

 Một cửa sổ làm việc

 Thường kích thước cố định

 Thường không có menu bar

 Thường có các button, edit box, list-box,…

 Ví dụ: Calculator, CD Player,…

Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 14

Các thành phần giao diện đồ họa (GUI)…(tt)

Dialog, SDI, MDI

Trang 23

Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 15

ƒ Mô hình phân cấp: 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ó 1 cửa sổ nhận input từ

user (Active/Focused window)

GUI – Window …(tt)

 Phân loại:

ƒ Cửa sổ Desktop

ƒ Cửa sổ tiêu chuẩn

ƒ Cửa sổ hộp thoại (Dialog box)

ƒ Các control

Trang 24

Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 17

GUI – Window …(tt)

App Window

Dialog

box

Desktop Window

Control

Child window

Parent window

Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 18

GUI – Window …(tt)

bar

Title-Minimized, Restored, Maximized buttons

bar

Scroll- bar

Menu-Resized border

Window Caption

Trang 25

Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 19

Combo- button

Push- sheet

Trang 26

Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 21

GUI – Window …(tt)

 Lớp cửa sổ (window class):

ƒ Là một tập các thuộc tính mà HĐH Windows sử dụng

làm khuôn mẫu (template) khi tạo lập 1 cửa sổ

ƒ Mỗi lớp cửa sổ được đặc trưng bằng 1 tên (class-name)

dạng chuỗi

ƒ Phân loại class:

 Lớp cửa sổ của hệ thống (System class)

ƒ Được định nghĩa trước bởi HĐH Windows

ƒ Các ứng dụng không thể hủy bỏ

 Lớp cửa sổ do ứng dụng định nghĩa:

ƒ Được đăng ký bởi ứng dụng

ƒ Có thể hủy bỏ khi không còn sử dụng nữa

ƒ Lớp toàn cục của ứng dụng (Application global class)

ƒ Lớp cục bộ của ứng dụng (Application local class)

Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 22

Các lớp cửa sổ của hệ thống

Trang 27

Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 23

GUI – Window …(tt)

 Lớp cửa sổ (window class):

ƒ Mỗi cửa sổ đều thuộc một lớp xác định

ƒ Cần phải đăng ký lớp trước khi tạo lập 1 cửa sổ,

nếu lớp chưa được đăng ký

wc.lpszClassName = “MyClass”; // tên class

wc.lpfnWndProc = MyWndProc; // tên hàm xử lý message

wc.hInstance = hInstance;

wc.hCursor = LoadCursor(hInstance, (LPSTR) IDC_CURSOR);

wc.hIcon = LoadIcon(hInstance, (LPSTR) IDI_ICON);

wc.hbrBackground = (HBRUSH) (COLOR_APPWORKSPACE + 1);

Trang 28

Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 25

GUI – Window …(tt)

 Minh họa cấu trúc WNDCLASS

typedef struct _WNDCLASS {

GUI – Window …(tt)

Ý nghĩa Thuộc tính

số byte dành riêng cho mỗi cửa sổ thuộc class (<=

40 bytes) cbWndExtra

số byte dành riêng cho class (<= 40 bytes) cbClsExtra

kiểu dáng của lớp (class style) Style

tên menu bar, chuỗi kết thúc bằng 0 lpszMenuName

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.

VD COLOR_BACKGROUND + 1 hbrBackground

handle của icon, xác định biểu tượng của cửa sổ hIcon

handle của cursor, xác định dạng cursor trong vùng client

Trang 29

Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 27

GUI – Window …(tt)

 Hàm xử lý thông điệp (window procedure)

ƒ Có nhiệm vụ tiếp nhận và xử lý các thông điệp

được gởi đến cho cửa sổ

ƒ Sử dụng chung cho tất cả các cửa sổ của cùng

1 class

ƒ Được gọi bởi HĐH (là hàm Callback)

GUI – Window …(tt)

 Dạng tổng quát của 1 hàm xử lý thông điệp

LRESULT CALLBACK WndProc(

HWND hwnd, // handle của window nhận message

UINT uMsg, // ID của message

WPARAM wParam, // tham số thứ 1 của message (WORD)

LPARAM lParam) // tham số thứ 2 của message (LONG)

Trang 30

Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 29

GUI – Window …(tt)

 Các thuộc tính của cửa sổ:

ƒ tên lớp (class name)

ƒ tiêu đề (window title)

ƒ kiểu dáng (window style)

ƒ kiểu dáng mở rộng (extended window style)

ƒ vị trí (position – x, y)

ƒ kích thước (size – w, h)

ƒ cửa sổ cha (parent or owner window handle)

ƒ menu hay ID (menu handle or child-window

identifier)

ƒ instance của ứng dụng sở hữu (application

instance handle)

Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 30

GUI – Window …(tt)

VD Tạo lập 1 cửa sổ bằng hàm CreateWindow

HWND hWnd =

CreateWindow(“MyClass”, // class name

“XYZ Application”, // window title

WS_OVERLAPPEDWINDOW, // window style

CW_USEDEFAULT, // default x

CW_USEDEFAULT, // default y

CW_USEDEFAULT, // default Width

CW_USEDEFAULT, // default Height

(HWND) NULL, // parent handle

(HMENU) NULL, // MenuBar

hInstance, // application instance

NULL); // extra default data

Trang 31

Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 31

Tài nguyên của ứng dụng (Resources)

 Resouce:

ƒ là 1 đối tượng (object) được sử dụng trong ứng

dụng (VD Menu bar, dialog, bitmap, icon,

cursor,…)

ƒ được định nghĩa bên ngoài và được thêm vào

trong file thi hành của ứng dụng khi biên dịch

ƒ Dialog box: - khung hộp thoại (Dialogbox Template)

ƒ 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)

ƒ 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”

Trang 32

Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 33

Tài nguyên của ứng dụng (Resources)…(tt)

Accelerator và Bitmap

Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 34

Tài nguyên của ứng dụng (Resources)…(tt)

CursorCaret

Trang 33

Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 35

Tài nguyên của ứng dụng (Resources)…(tt)

IconDialogBox template

Tài nguyên của ứng dụng (Resources)…(tt)

String tableMenubar

Trang 34

Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 37

Tài nguyên của ứng dụng (Resources)…(tt)

Version Information

Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 38

Một chương trình tổng quát xây dựng trên Win32 API

 Các bước tạo lập chương trình

Trang 35

Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 39

Một chương trình tổng quát xây dựng trên Win32 API…(tt)

 WinMain:

int APIENTRY WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance, LPSTR lpCmdLine,

int nCmdShow)

ƒ hInstance: handle của ứng dụng

ƒ hPrevInstance: handle của thể hiện trước của cùng một

ứng dụng Trong Win32, giá trị này = NULL

ƒ lpCmdLine: chuỗi chứa dòng lệnh (command line)

VD “winword c:\My documents\baitap.doc”

ƒ nCmdShow: xác định cách thức cửa sổ được hiển thị

VD MAXIMIZE, MINIMIZE, SHOW, HIDE,…

Một chương trình tổng quát xây dựng trên Win32 API…(tt)

 Đăng ký lớp cửa sổ:

ATOM MyRegisterClass(HINSTANCE hInstance)

 Tạo lập cửa sổ giao diện:

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)

 Thực hiện vòng lặp xử lý message

Trang 36

Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 41

Một chương trình tổng quát xây dựng trên Win32 API…(tt)

Một chương trình tổng quát xây dựng trên Win32 API…(tt)

 Hàm xử lý message của cửa sổ:

ƒ Xử lý message cho cửa sổ giao diện chính

LRESULT CALLBACK WndProc(HWND hWnd, UINT message,

WPARAM wParam, LPARAM lParam)

ƒ Xử lý message cho dialog box “About”

LRESULT CALLBACK About(HWND hDlg, UINT message,

WPARAM wParam, LPARAM lParam)

Trang 37

Spring 2004 C4W - Basic - Nguyen Tri Tuan - DH.KHTN Tp.HCM 43

Cám ơn - Hỏi & Đáp

Trang 38

C4W - Nguyen Tri Tuan – Khoa CNTT – ĐHKHTN TP.HCM 1 / 3

CÁC KIỂU DỮ LIỆU CƠ BẢN TRONG WINDOWS (Tóm tắt)

-oOo -

BOOL kiểu logic, có giá trị TRUE hay FALSE

BYTE kiểu byte (8 bits)

CALLBACK qui ước để mô tả những hàm Callback

CHAR ký tự 8 bits (Windows ANSI)

COLORREF giá trị màu 32 bits, được tổng hợp từ 3 màu cơ bản Red,

Green, Blue CONST biến có giá trị không thay đổi trong quá trình xử lý

DWORD số nguyên không dấu 32 bits

DWORD_PTR số nguyên không dấu 32 bits sử dụng khi cần chuyển kiểu

con trỏ DWORD để tính toán DWORD32 số nguyên không dấu 32 bits

DWORD64 số nguyên không dấu 64 bits

HACCEL handle đến bảng mô tả phím tắt (Accelerator)

HANDLE handle của 1 đối tượng

HBITMAP handle của 1 đối tượng ảnh bitmap

HBRUSH handle của 1 đối tượng brush

HCURSOR handle của 1 đối tượng cursor

HDC handle của 1 device context (DC)

HDDEDATA handle của 1 dữ liệu DDE

HDESK handle của desktop

HFILE handle của file được mở bằng hàm OpenFile, không phải

hàm CreateFile HFONT handle của 1 đối tượng font

HGDIOBJ handle của 1 đối tượng đồ họa GDI

HGLOBAL handle của 1 khối bộ nhớ toàn cục

HHOOK handle của 1 hàm hook

HICON handle của 1 đối tượng icon

HIMAGELIST handle của 1 đối tượng imagelist

HINSTANCE handle của 1 instance

HKEY handle của 1 khóa registry

HLOCAL handle của 1 khối bộ nhớ cục bộ

HMENU handle của 1 đối tượng menu

HMETAFILE handle của 1 đối tượng meta-file

HMODULE handle của 1 module

HMONITOR handle của 1 màn hình hiển thị

HPALETTE handle của 1 đối tượng palette (bảng màu)

HPEN handle của 1 đối tượng pen

HRGN handle của 1 đối tượng region

HRSRC handle của 1 đối tượng resource

HSZ handle của 1 DDE string

HWND handle của 1 đối tượng cửa sổ

INT số nguyên có dấu 32 bits

INT_PTR số nguyên không dấu 32 bits sử dụng khi cần chuyển kiểu

con trỏ INT để tính toán INT32 số nguyên có dấu 32 bits

INT64 số nguyên có dấu 64 bits

Trang 39

LONG số nguyên có dấu 32 bits

LONG_PTR số nguyên không dấu 32 bits sử dụng khi cần chuyển kiểu

con trỏ LONG để tính toán LONG32 số nguyên có dấu 32 bits

LONG64 số nguyên có dấu 64 bits

LONGLONG số nguyên có dấu 64 bits

LPARAM tham số thứ 2 của message, kiểu LONG

LPBOOL con trỏ đến kiểu BOOL

LPBYTE con trỏ đến kiểu BYTE

LPCOLORREF con trỏ đến kiểu COLORREF

LPCSTR con trỏ đến 1 chuỗi ký tự hằng, kết thúc bằng 0 Đây là

chuỗi dạng ANSI 8 bits/ký tự LPCTSTR con trỏ chuỗi ký tự Nếu cờ hiệu UNICODE được định

nghĩa, kiểu này tương đương với LPCWSTR; ngược lại sẽ tương đương với LPCSTR

LPCVOID con trỏ đến 1 hằng kiểu bất kỳ

LPCWSTR con trỏ đến 1 chuỗi ký tự hằng, kết thúc bằng 0 Đây là

chuỗi dạng UNICODE 16 bits/ký tự LPDWORD con trỏ đến kiểu DWORD

LPHANDLE con trỏ đến kiểu HANDLE

LPINT con trỏ đến kiểu INT

LPLONG con trỏ đến kiểu LONG

LPSTR con trỏ đến 1 chuỗi ký tự, kết thúc bằng 0 Đây là chuỗi

dạng ANSI 8 bits/ký tự LPTSTR con trỏ chuỗi ký tự Nếu cờ hiệu UNICODE được định

nghĩa, kiểu này tương đương với LPWSTR; ngược lại sẽ tương đương với LPSTR

LPVOID con trỏ đến 1 kiểu bất kỳ

LPWORD con trỏ đến kiểu WORD

LPWSTR con trỏ đến 1 chuỗi ký tự, kết thúc bằng 0 Đây là chuỗi

dạng UNICODE 16 bits/ký tự LRESULT giá trị 32 bits có dấu, là kết quả trả về của hàm nhận và xử

lý message PBOOL con trỏ đến kiểu BOOL

PBOOLEAN con trỏ đến kiểu BOOLEAN

PBYTE con trỏ đến kiểu BYTE

PCHAR con trỏ đến kiểu CHAR

PCSTR con trỏ đến 1 chuỗi ký tự hằng, kết thúc bằng 0 Đây là

chuỗi dạng ANSI 8 bits/ký tự PCTSTR con trỏ chuỗi ký tự Nếu cờ hiệu UNICODE được định

nghĩa, kiểu này tương đương với PCWSTR; ngược lại sẽ tương đương với PCSTR

PCWCH con trỏ đến 1 hằng kiểu WCHAR

PCWSTR con trỏ đến 1 chuỗi ký tự hằng, kết thúc bằng 0 Đây là

chuỗi dạng UNICODE 16 bits/ký tự

PFLOAT con trỏ đến FLOAT

PHANDLE con trỏ đến HANDLE

Trang 40

C4W - Nguyen Tri Tuan – Khoa CNTT – ĐHKHTN TP.HCM 3 / 3

(truncated pointer) POINTER_64 con trỏ 64 bits Trong môi trường 64 bits, đây là 1 con trỏ

đầy đủ, trong môi trường 32 bits, đây là 1 con trỏ mở rộng

có dấu (sign-extended pointer) PSHORT con trỏ đến SHORT

PSTR con trỏ đến 1 chuỗi ký tự, kết thúc bằng 0 Đây là chuỗi

dạng ANSI 8 bits/ký tự PTBYTE con trỏ đến TBYTE

PTCHAR con trỏ đến TCHAR

PTSTR con trỏ chuỗi ký tự Nếu cờ hiệu UNICODE được định

nghĩa, kiểu này tương đương với PWSTR; ngược lại sẽ tương đương với PSTR

PUSHORT con trỏ đến USHORT

PVOID con trỏ đến kiểu bất kỳ

PWSTR con trỏ đến 1 chuỗi ký tự, kết thúc bằng 0 Đây là chuỗi

dạng UNICODE 16 bits/ký tự SHORT số nguyên ngắn (16 bits)

SIZE_T số byte tối đa mà 1 con trỏ có thể định vị, giá trị không dấu SSIZE_T như SIZE_T, nhưng là giá trị có dấu

TBYTE Nếu cờ hiệu UNICODE được định nghĩa, kiểu này tương

đương với WCHAR; ngược lại sẽ tương đương với CHAR TCHAR Nếu cờ hiệu UNICODE được định nghĩa, kiểu này tương

đương với WCHAR; ngược lại sẽ tương đương với CHAR UCHAR ký tự không dấu (unsigned char)

UINT số nguyên không dấu (unsigned int)

UINT_PTR giá trị INT_PTR không dấu

UINT32 giá trị INT32 không dấu

UINT64 giá trị INT64 không dấu

ULONG giá trị LONG không dấu

ULONG_PTR giá trị LONG_PTR không dấu

ULONG32 giá trị LONG32 không dấu

ULONG64 giá trị LONG64 không dấu

ULONGLONG số nguyên 64 bits không dấu

UNSIGNED thuộc tính không dấu

USHORT giá trị SHORT không dấu

WCHAR ký tự UNICODE 16 bits

WINAPI qui ước gọi hàm của những hàm hệ thống

WPARAM tham số thứ 1 của message, kiểu WORD

Ngày đăng: 17/02/2014, 15:16

HÌNH ẢNH LIÊN QUAN

Sơ đồ  biên dịch  các thành  phần của - giáo trình môn học lập trình windows - nguyễn trí tuấn
bi ên dịch các thành phần của (Trang 124)
Bảng màu (CreatePalette, - giáo trình môn học lập trình windows - nguyễn trí tuấn
Bảng m àu (CreatePalette, (Trang 160)
Hình ảnh (bitmap, graphics) ra trang in - giáo trình môn học lập trình windows - nguyễn trí tuấn
nh ảnh (bitmap, graphics) ra trang in (Trang 177)
Bảng màu và các bit của bitmap - giáo trình môn học lập trình windows - nguyễn trí tuấn
Bảng m àu và các bit của bitmap (Trang 228)
Bảng tính qua lại giữa - giáo trình môn học lập trình windows - nguyễn trí tuấn
Bảng t ính qua lại giữa (Trang 230)
Sơ đồ Hook Chain - giáo trình môn học lập trình windows - nguyễn trí tuấn
ook Chain (Trang 276)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w