Các c u trúc d li u này là c u trúc chu n c a Windows 3.1, đ c đ nh ngh aấ ữ ệ ấ ẩ ủ ượ ị ĩ trong file WINDOWS.H
1 - C u trúc TEXTMETRIC:ấ
C u trúc ấ TEXTMETRIC ch a thơng tin c n b n v font v t lý. T t c cácứ ă ả ề ậ ấ ả kích th c đ c đ a ra trong các đ n v lu n lý t c là chúng ph thu c vào ch đ ánhướ ượ ư ơ ị ậ ứ ụ ộ ế ộ x hi n hành ng c nh màn hình.ạ ệ ữ ả
N i dung ý ngh a c a các d li u trong c u trúc này đã trình bày trong ch ng 4:ộ ĩ ủ ữ ệ ấ ươ K t xu t v n b n.ế ấ ă ả
2 – C u trúc POINT:ấ
- Dùng đ đ nh ngh a t a đ x, y c a m t đi m.ể ị ĩ ọ ộ ủ ộ ể - Cú pháp:
typedef struct tagPOINT { LONG x; LONG y; } 3 – C u trúc STRUCT:ấ - nh ngh a t a đ các gĩc upper-left và lower-right c a m t hình ch nh tĐị ĩ ọ ộ ủ ộ ữ ậ - Cú pháp:
typedef struct tagRECT { LONG left; LONG top; LONG right; LONG bottom; } RECT;
4 – C u trúc PAINTSTRUCT:ấ
- Dùng ch a thơng tin dùng đ tơ v m t client area thu c c a s .ứ ể ẽ ộ ộ ử ổ - Cú pháp:
typedef struct tagPAINTSTRUCT { HDC hdc; BOOL fErase; RECT rcPaint; BOOL fRestore; BYTE fIncUpdate; BYTE rgbReserved[16]; } PAINTSTRUCT; - Tham s :ố hdc handle c a DC c n vủ ầ ẽ
fErase cho bi t background cĩ v l i hay khơng, n u khác 0 thìế ẽ ạ ế tơ v cịn n u ng c l i thì khơng v .ẽ ế ượ ạ ẽ
rcPaint gĩc upper-left và lower-right c a hình ch nh t đ c vủ ữ ậ ượ ẽ fRestore dành riêng cho s d ng n i t i c a Windows.ử ụ ộ ạ ủ
fIncUpdate dành riêng cho s d ng n i t i c a Windows.ử ụ ộ ạ ủ RgbResersed[16] kh i ký c dành riêng cho s d ng n i t i c aố ứ ử ụ ộ ạ ủ
Windows.
5 – C u trúc EVENTMSG:ấ
- Ch a thơng tin t hàng ng d ng c a Windows, đ c s d ng đ l u trứ ừ ứ ụ ủ ượ ử ụ ể ư ữ thơng tin thơng đi p cho hàm callback JornalPlaybackProc.ệ
- Cú pháp:
typedef struct tagEVENTMSG { UINT message; UINT paramL; UINT paramH; DWORD time; } EVENTMSG; - Thơng s :ố
message thơng đi pệ
paramL thơng tin thêm vào v thơng đi p. Ngh a chính xác ph ề ệ ĩ ụ thu c vào giá tr thơng đi p. ộ ị ệ
paramH thơng tin thêm vào v thơng đi p. Ngh a chính xác ph ề ệ ĩ ụ thu c vào giá tr thơng đi p. ộ ị ệ
time th i đi m mà thơng đi p đ c post.ờ ể ệ ượ
6 – C u trúc MSG:ấ
- Ch a thơng tin t hàng ng d ng c a s .ứ ừ ứ ụ ử ổ - Cú pháp:
typedef struct tagMSG { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; } MSG; - Thơng s :ố hwnd c a s nh n thơng đi pử ổ ậ ệ message ố thơng đi pệ
wParam thơng tin thêm vào v thơng đi p. Ngh a chính xác ph thu cề ệ ĩ ụ ộ vào giá tr thơng đi p. ị ệ
lParam thơng tin thêm vào v thơng đi p. Ngh a chính xác ph thu cề ệ ĩ ụ ộ vào giá tr thơng đi p. ị ệ
time th i đi m thơng đi p đ c post.ờ ể ệ ượ
pt v trí cursor t a đ màn hình khi thơng đi p đ c post.ị ở ọ ộ ệ ượ
7 - C u trúc SIZE:ấ
- Ch a viewport extents, window extents, text extents, bitmap dimensions,ứ và aspect-ratio filter cho m t vài hàm m r ngộ ở ộ
- Cú pháp:
typedef struct tagSIZE { int cx; int cy; } SIZE; - Thơng s :ố cx x-extent khi hàm tr vả ề cy y-extent khi hàm tr vả ề 8 - C u trúc MOUSEHOOKSTRUCT:ấ
- C u trúc MOUSEHOOKSTRUCT ch a thơng tin v m t s ki n chu tấ ứ ề ộ ự ệ ộ - Cú pháp:
typedef struct tagMOUSEHOOKSTRUCT { POINT pt; HWND hwnd; UINT wHitTestCode; DWORD dwExtraInfo; } MOUSEHOOKSTRUCT; - Thơng s :ố
pt m t đi m cĩ c u trúc POINT ch a t a đ x,y c a mouse ộ ể ấ ứ ọ ộ ủ cursor trong h t a đ màn hình ệ ọ ộ
hwnd c a s s nh n thơng đi p chu t t ng ng v i s ki n ử ổ ẽ ậ ệ ộ ươ ứ ớ ự ệ mouse
wHitTestCode mã hit-test tr v ả ề
dwExtraInfo thơng tin thêm vào đ c t ch c v i s ki n mouse. M tượ ổ ứ ớ ự ệ ộ ng d ng cĩ th thi t l p thơng tin thêm vào này b ng
ứ ụ ể ế ậ ằ
cách g i hàm s ki n ph n c ng và l y nĩ b ng cách ọ ự ệ ầ ứ ấ ằ g i hàm GetMessageExtraInfo .ọ
Kết quả và hướng phát triểnKết quả và hướng phát triển Kết quả và hướng phát triển
Ch ng trình GETTEXT đã b c đ u đáp ng đ c yêu c u c a đ tài đ t ra:ươ ướ ầ ứ ượ ầ ủ ề ặ Nh n d ng đ c các t hi n th trên màn hình.ậ ạ ượ ừ ể ị
Tuy nhiên, do k thu t override ch m i th c hi n đ c trong mơi tr ngỹ ậ ỉ ớ ự ệ ượ ườ Windows 16 bits, nên ch ng trình này ch ch y đ c trên mơi tr ng Windowsươ ỉ ạ ượ ườ 16bits. Trong mơi tr ng Windows 9x, là mơi tr ng lai t p gi a 16bits và 32bits,ườ ườ ạ ữ nên ch ng trình ch nh n d ng đ c khi dịng v n b n đ c xu t b i các hàm k tươ ỉ ậ ạ ượ ă ả ượ ấ ở ế xu t v n b n c a mơi tr ng 16bits (nh TextOut, ExtTextOut), cịn đ i v i v nấ ă ả ủ ườ ư ố ớ ă b n đ c k t xu t b i các hàm c a mơi tr ng 32bits (nh TextOutA,ả ượ ế ấ ở ủ ườ ư ExtTextOutA - đ c dùng đ k t xu t v n b n trong các ph m m m 32bits nhượ ể ế ấ ă ả ầ ề ư Microsoft Office 97) thì ch ng trình khơng th nh n d ng đ c. Dù v y đi u màươ ể ậ ạ ượ ậ ề đ tài đã đ t đ c là đ a ra đ c m t gi i thu t khung s n mang tính kh thi, cĩ thề ạ ượ ư ượ ộ ả ậ ườ ả ể phát tri n hồn ch nh trong t ng lai. ể ỉ ươ
Do v y, đ nh n d ng đ c t t c các t xu t hi n trên màn hình Windows thìậ ể ậ ạ ượ ấ ả ừ ấ ệ ph i override đ c các hàm c a Windows 32bits. Vi c này th c s là m t v n đả ượ ủ ệ ự ự ộ ấ ề l n, và c n ph i hi u sâu s c v Windows, vì Windows cĩ ch đ b o v b nhớ ầ ả ể ắ ề ế ộ ả ệ ộ ớ r t ch t ch , nên khơng th ghi xố vào hàm API nh cách mà ch ng trình đã làm, do đĩấ ặ ẽ ể ư ươ c n ph i cĩ gi i thu t khác.ầ ả ả ậ
Ngồi ra vi c l y d li u b ng cách override ch là m t h ng đ gi i quy tệ ấ ữ ệ ằ ỉ ộ ướ ể ả ế v n đ , ta c ng cĩ th th c hi n b ng cách khác nh dùng các hàm l y text màấ ề ũ ể ự ệ ằ ư ấ Windows cĩ h tr , nh ng cĩ th v n đ s ph c t p h n.ỗ ợ ư ể ấ ề ẽ ứ ạ ơ