Báo Cáo Lun Văn Tt Nghip Trang 1
SVTH : Lương Cao Hoài Tâm Lp TH40
MC LC
LI M ĐẦU 3
CHƯƠNG 1: TÌM HIU V LP TRÌNH WINDOWS 4
I. Khái quát v lp trình trong Windows 5
II. Thông đip và xthông đip 7
III. Giao din thiết b đồ ha GDI 11
IV. Ca s trong Windows 15
V. Chương trình Windows tiếp nhn thông đip chut 22
CHƯƠNG 2: TÌM HIU V HOOK 26
1 - Chui hook 27
2 - Th tc hook 27
3 - Các loi hook 28
4 - S dng hook 30
5 - Hook trong Windows 3.x 31
6 - Gii thiu mt s hàm liên quan đến hook 33
CHƯƠNG 3: K THUT OVERRIDE HÀM API 36
I. Khái quát v k thut override 37
II. do s dng k thut override trong lp trình Windows 37
III. Cơ chế hot động và qun lý b nh trên Windows 16bits 38
IV. Cơ chế hot động và qun lý b nh trên Windows 32bits 41
V. Hin thc k thut override trên Windows 16bits 45
VI. Mt s hàm được s dng trong k thut override 50
CHƯƠNG 4: KT XUT VĂN BN TRONG WINDOWS 54
I. Kết xut văn bn trong Windows 55
II. Các hàm căn bn để kết xut văn bn 55
CHƯƠNG 5: PHÂN TÍCH THIT K CHƯƠNG TRÌNH 66
I. Phân tích vn đ 67
II. Thiết kế chương trình 68
III. Gii thiu mt s hàm có liên quan 78
IV. Gii thiu mt s cu trúc d liu có liên quan 92
KT QUHƯỚNG PHÁT TRIN 97
Báo Cáo Lun Văn Tt Nghip Trang 2
SVTH : Lương Cao Hoài Tâm Lp TH40
Đề tài : Nghiên cu các phương pháp
nhn dng t dưới cursor mouse trên
Desktop Windows.
Viết chương trình nhn dng t này.
Báo Cáo Lun Văn Tt Nghip Trang 3
SVTH : Lương Cao Hoài Tâm Lp TH40
Li M Đu
y nay, hu như mi công vic hàng ngày liên quan đến cuc sng ca
chúng ta đu din ra trên y tính. T vic son tho văn bn, gi nhn
thông tin đến vic tra cu, truy cp thông tin t h thng mng máy tính
tn cu Internet đối vi người s dng là công vic thưng ngày và rt ph biến.
T đó, s pt sinh vn đ người s dng s cn m hiu ý nghĩa ca mt
t, mt câu hoc cn phi dch mt đon văn bn, mt file d liu nào đó ra tiếng
Vit và ngược li. Đây là mt nhu cu cn thiết và hu như xy ra thường xuyên đối
vi nhiu ngưi, do đó nhn dng t đặc bit nhn dng t trên màn hình trong
i trường Windows là vic làm cn thiết và có ý nghĩa thc tế.
Kết qu ca vic nhn dng t s đưc dùng đ y dng nên các ng dng
khác chng hn như các t đin đưc tra cu theo kiu tương tác trc tiếp s rt
thun tin cho người s dng bi vì theo cách y tcho đang trong bt k
ng dng nào khi cn tra cu thì thao tác trc tiếp ngay trên ng dng đang dùng
tc ch cn click chut o đó ch không cn phi m t đin ri tra cu t đó
theo kiu c đin.
thế, trong thi gian làm Lun Án Tt nghip được s hướng dn ca thy
Lê Tn Hùng nhóm sinh viên chúng tôi thc hin đề tài: “ Nhn dng t dưi cursor
mouse trên deskop Windows. Viết chương trình nhn dng t này ”. Trong giai
đon đầu ca Lun Án Tt Nghip chúng tôi đã nghiên cu được mt s vn đ
quan trng căn bn ý nghĩa trong vic thc hin yêu cu đã đt ra ca đ tài.
Đề tài này ch tp trung nhn dng t dng text trên desktop ca môi trường
Windows ri xut kết qu ra.
Trong thi gian làm Lun Án Tt Nghip nhóm sinh viên chúng tôi đã tiến
hành nghiên cu cơ chế hot động qun ca h điu hành Windows. Nghiên
cu v phương thc lp trình trong môi trường Windows các phương tin mà
Windows h tr khi lp trình. Tham kho và nghiên cu k thut override các hàm
giao tiếp ca Windows chế độ 16 bit 32 bit. Nghiên cu cách x các thông
đip trong Windows tìm hiu v cách kết xut văn bn, v chế đ ánh x, vn đ
ta độ . . . và cách x văn bn. Trên cơ s đó bước đầu chúng tôi đã xây dng
xong mt ng dng kh năng nhn dng được t trên nn Windows 16 bit được
viết bng ngôn ng Visual C++ version 1.5 hướng phát trin trong thi gian ti
là hin thc nó trên nn Win32.
Báo cáo ca chúng tôi s ln lượt đim qua nhng ni dung mà chúng tôi đã
nghiên cu và tìm hiu đưc trong thi gian qua. Sau đó phn gii thiu chi tiết
v chương trình t khâu phân tích-thiết kế cho đến phn chương trình ngun và cui
cùng s là nêu nhng vn đ còn tn ti hưng phát trin trong tương lai.
Báo Cáo Lun Văn Tt Nghip Trang 4
SVTH : Lương Cao Hoài Tâm Lp TH40
Chương 1:
T
TÌ
ÌM
M
H
HI
I
U
U
V
V
L
L
P
P
T
TR
RÌ
ÌN
NH
H
W
WI
IN
ND
DO
OW
WS
S
Báo Cáo Lun Văn Tt Nghip Trang 5
SVTH : Lương Cao Hoài Tâm Lp TH40
I - KHÁI QUÁT V LP TRÌNH TRONG WINDOWS:
1 - Khái quát v lp trình trong Windows:
i trường lp trình Windows v cơ bn là da trên b hàm API (Application
Programmer Interface), nó chc năng như các ngt trong bng vector ngt ca
DOS, nhưng thân thin hơn ch cách gi hàm API ging ht cách gi hàm ca
nn ng cp cao, mi hàm mt tên gi hn hoi, n gi thường được đặt rt
phù hp vi công dng ca hàm (mc dù có hơi dài dòng) t đó to kh năng gi
nh cao. Vi Windows, người lp trình không còn phi lp trình theo kiu assembly
na mà lp trình theo kiu ngôn ng cp cao, mi hot động trong y mc thp
t hàm API tr xung thuc phm vi ca Windows, và Windows không khuyến
khích vic các ng dng can thip o lĩnh vc này. li, bng c hàm API,
h tr rt hiu qu cho người lp trình, giúp khai thác kh năng ca thiết b trit đ,
d dàng tin li hơn bao gi hết. th nói Windows đã m ra cho người lp
trình không gian rng ln đ phát trin ng dng, hn chế không gian phát trin
h thng. Điu này dn đến h qu các ng dng đưc to ra hết sc d dàng, và
quan trng h thng chy n đnh hơn, không b treo do li ca ng dng,
không th xâm nhp, nhưng s rt k khăn nếu ngưi lp trình mun trc tiếp điu
khin hot động trong máyphát trin v lp trình h thng.
- Tìm hiu hàm Windows API: Windows mt h điu hành đa nhim
(multitasking) qua đó các ng dng trong i trường Windows s giao tiếp
vi user thông qua mt hay nhiu giao din. Đ truy cp các giao din này thì các
ng dng đưc y dng trên môi trưng Windows s s dng tp các hàm được
gi giao din chương trình ng dng API (Application Program Interface).
Chương trình ca người s dng th gi ti các hàm API đ truy cp ti mi tài
nguyên ca Windows. GDI mt b phn ca API, giao din thiết b đồ ha GDI
(Graphic Device Interface) có nhim v duy trì s độc lp ca Windows đối vi các
thiết b đồ ha hay còn gi kh năng độc lp thiết b (device independent) tc
cho phép Windows làm vic vi nhiu kiu thiết b đ ha khác nhau.
2 - Thư vin liên kết động DLL (Dynamic Link Library):
Thư vin liên kết động các tp tin đưc Windows lưu dưới dng nh phân
cha các hàm mi ng dng trên Windows đu có th s dng. Nét đặc trưng
ca DLL th đưc s dng bi nhiu ng dng ti cùng mt thi đim hay
i cách khác thư vin liên kết động có thng mt lúc được gi bi nhiu chương
trình. DLL là mt d liu chia s được (shared data).
Có 3 loi DLL khác nhau: