1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo bài tập lớn môn Hệ điều hành: Tìm hiểu lập trình API trong Window

22 55 0

Đ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 22
Dung lượng 805,55 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Báo cáo bài tập lớn môn Hệ điều hành: Tìm hiểu lập trình API trong Window có kết cấu nội dung gồm 3 phần. Trong đó, phần mở đầu giới thiệu chung, phần 2 giới thiệu sơ lược về Window API, phần 3 đề cập đến một số thành phần cơ bản của ứng dụng.

Trang 2

M c l c ụ ụ

Mục lục 2

I.MỞ ĐẦU: 2

II, SƠ BỘ WINDOW API, CÁCH THỨC LÀM VIỆC 4

1 Các thư viện lập trình của Windows SDK – Software Development Kit: 4

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

3 Các thành phần giao diện đồ họa (GUI – Graphics User Interface) 5

4 Qui trình hoạt động của chương trình ứng dụng: 6

5 Ví dụ 6

III, MỘT SỐ THÀNH PHẦN CƠ BẢN 12

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

2 Một số kiểu dữ liệu mới: 13

3 Một số hàm đồ họa cơ sở: 15

4.HỘP THOẠI VÀ ĐIỀU KHIỂN 17

IV.Kết luận 21

I.M  Đ U: Ở Ầ

Trang 3

Các  ng d ng c a Windows r t d  s  d ng, nh ng r t khó đ i v iứ ụ ủ ấ ễ ử ụ ư ấ ố ớ  

người đã t o l p ra chúng. Đ  đ t đạ ậ ể ạ ược tính d  dùng đòi h i ngễ ỏ ườ ậi l p trình 

ph i b  ra r t nhi u công s c đ  cài đ t. ả ỏ ấ ề ứ ể ặ

L p trình trên Windows khó và ph c t p h n nhi u so v i l p trìnhậ ứ ạ ơ ề ớ ậ  trên DOS. Tuy nhiên l p trình trên Windows s  gi i quy t đậ ẽ ả ế ược m t s  v nộ ố ấ  

đ  khó khăn trong môi trề ường DOS nh  xây d ng giao di n ngư ự ệ ười dùng, 

qu n lý b  nh   o, đ c l p thi t b  vào ra, thâm nh p Internet, kh  năng chiaả ộ ớ ả ộ ậ ế ị ậ ả  

s  tài nguyên,   ẻ

Windows cung c p các hàm đ  ngấ ể ườ ậi l p trình thâm nh p các đ cậ ặ  

tr ng c a h  đi u hành g i là giao di n l p trình  ng d ng (Applicationư ủ ệ ề ọ ệ ậ ứ ụ  Programming Interface – API). Nh ng hàm này đữ ược đ t trong các th  vi nặ ư ệ  liên k t đ ng (Dynamic Link Library – DLL). Các chế ộ ương trình  ng d ng sứ ụ ử 

d ng chúng thông qua các l i g i hàm và ch  chia s  đụ ờ ọ ỉ ẻ ược khi trong máy có cài đ t Windows. ặ

Trang 4

II, S  B  WINDOW API, CÁCH TH C LÀM VI C Ơ Ộ Ứ Ệ

­ Đượ ử ục s  d ng nh  là th  vi n c  s  đ  t o ra nh ng th  vi n caoư ư ệ ơ ở ể ạ ữ ư ệ  

c p h n trong nh ng ngôn ng  l p trình. VD: OWL c a BorlandC, MFC c aấ ơ ữ ữ ậ ủ ủ  Visual C++,… 

Trang 5

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ọ ở  

 + 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 – Multi 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. ử ổ

vi c. ệ

Trang 6

4.  Qui trình ho t đ ng c a chạ ộ ủ ương trình  ng d ngứ ụ

 ­ C a s  đử ổ ược hi n th  lên màn hình. ể ị

 ­ L p trình trên Windows là l p trình trên c  s  thông đi p, quá trình traoậ ậ ơ ở ệ  

đ i thông tin và đi u khi n d a trên thông đi p. Có r t nhi u thông đi pổ ề ể ự ệ ấ ề ệ  

được phát sinh ng u nhiên nh  nh n phím hay chu t, ch n menu,   ẩ ư ấ ộ ọ

 ­ Tương tác c a  ng d ng v i ngủ ứ ụ ớ ườ ử ụi s  d ng thông qua m t hay nhi uộ ề  

c a s , t o l p các c a s  khi c n thi t và qu n lý thông tin trong đó. ử ổ ạ ậ ử ổ ầ ế ả

5. Ví dụ

#include <windows.h> 

LRESULT CALLBACK XulyMessage (HWND,UNIT,WPARAM,LPARAM);  char szAppName [ ] = “Vidu”;

int WINAPI WinMain (HANDLE hInst, HANDLE hPrevInst, 

LPSTR lpszCmdLine, int nCmdShow)  { 

HWND hwnd; MSG msg; 

WNDCLASSEX wndclass; 

wndclass.cbSize = sizeof(wndclass); 

wndclass.style = CS_HREDRAW | CS_VREDRAW; 

Trang 7

break; 

Trang 8

nh  Do v y, nguyên t c l p trình trên Windows ch  y u là sao chép và ch nhớ ậ ắ ậ ủ ế ỉ  

s a nh ng n i c n thi t d a vào m t chử ữ ơ ầ ế ự ộ ương trình m u có s n.ẫ ẵ

a. Hàm WinMain() được th c hi n đ u tiên hay còn g i là đi m vào c aự ệ ầ ọ ể ủ  

chương trình. 

Ta th y hàm này có 4 tham s : ấ ố

+  hInst, hPrevinst: Ch  s  chỉ ố ương trình khi chúng đang ch y. Vìạ  Windows là h  đi u hành đa nhi m, có th  có nhi u b n c aệ ề ệ ể ề ả ủ  cùng m t chộ ương trình cùng ch y vào cùng m t th i đi m nênạ ộ ờ ể  

ph i qu n lý ch t ch  chúng. hInst là ch  s  b n chả ả ặ ẽ ỉ ố ả ương trình 

v a kh i đ ng, hPrevinst là ch  s  c a b n đã đừ ở ộ ỉ ố ủ ả ược kh i đ ngở ộ  

trước đó và chúng luôn có giá tr  NULL. ị+  lpszCmdLine: ch a đ a ch  đ u c a xâu ký t  các đ i s  dòngứ ị ỉ ầ ủ ự ố ố  

l nh. ệ+  nCmdShow: Cho bi t cách th c hi n th  c a s  khi chế ứ ể ị ử ổ ương trình 

kh i đ ng. Windows có th  gán giá tr  SW_SHOWNORMALở ộ ể ị  hay SW_SHOWMINNOACTIVE. 

Các tham s  trên do h  đi u hành truy n vào. ố ệ ề ề

Đ nh nghĩa l p c a s  và đăng ký v i Windows ị ớ ử ổ ớ

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

đ nhnghĩa trị ước b i HĐH Windows. Các  ng d ng không th  ở ứ ụ ể

h y b  ủ ỏ

Trang 9

­ 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).ớ ụ ộ ủ ứ ụ

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

Khi l n đ u ch y,  ng d ng ph i đ nh nghĩa và đăng ký l p v i c aầ ầ ạ ứ ụ ả ị ớ ớ ử  

s  (Window Class). Đây là c u trúc d  li u mô t  tính ch t c a c a s , l nổ ấ ữ ệ ả ấ ủ ử ổ ầ  

lượt ta gán các giá tr  ban đ u cho các thành ph n c a c u trúc l p c a s ,ị ầ ầ ủ ấ ớ ử ổ  bao g m: Kích thồ ước, ki u, đ a ch  hàm x  lý thông đi p c a s , đ nh nghĩaể ị ỉ ử ệ ử ổ ị  hình d ng cho con tr  chu t (cursor) và bi u tạ ỏ ộ ể ượng (Icon), màu n n, tên l pề ớ  

+ Sau khi đã đ nh nghĩa các thành ph n l p c a s  ta ph i đăng kýị ầ ớ ử ổ ả  

l p c a s  v i h  đi u hành (RegisterClassEX). ớ ử ổ ớ ệ ề

ATOM RegisterClassEx (CONST WNDCLASSEX *lpWClass); 

v i: Ki u giá tr  c a ATOM đớ ể ị ủ ược đ nh nghĩa trong window.h làị  WORD; lpWClass là con tr  đ n c u trúc l p c a s ; hàm nàyỏ ế ấ ớ ử ổ  

tr  v  ch  s  c a l p c a s  ả ề ỉ ố ủ ớ ử ổ+Có hai nguyên nhân d n đ n vi c đăng ký c a s  th t b i: ẫ ế ệ ử ổ ấ ạ

­ Trùng tên gi a các  ng d ng trong h  đi u hành. ữ ứ ụ ệ ề

­ Không đ  b  nh  ủ ộ ớ + T o l p  c a s  làm vi c (Frame Window) ạ ậ ử ổ ệ

­ Sau khi đăng ký thành công ta có th  t o l p c a s  thông quaể ạ ậ ử ổ  

hàm CreateWindow(). HWND CreateWindow ( 

LPCSTR lpClassName,  LPCSTR lpWinName,  DWORD dwStyle,  int X, int Y, 

Trang 10

int Width, int Height,  HWND hParent,  HMENU hMenu,  HINSTANCE hInst,  LPVOID lpszAdditional); 

­   G i   hàm   ShowWindow()đ   hi n   th   c a   s   BOOLọ ể ể ị ử ổ  ShowWindow (HWND hwnd, int nShow); 

v i: hwnd ch  s  c a s  c n hi n th  ớ ỉ ố ử ổ ầ ể ị

nShow cách th c hi n th  c a c a s , tham s  này đứ ể ị ủ ử ổ ố ược nh nậ  giá tr  l n đ u tiên c a hàm WinMain() ị ầ ầ ủ

­ Đ  thông báo cho  ng d ng bi t là ph i v  l i vùng làm vi cể ứ ụ ế ả ẽ ạ ệ  

c a c a s , ta ph i g i hàm UpdateWindow() yêu c u Windowsủ ử ổ ả ọ ầ  

g i thông đi p đ n hàm x  lý thông đi p c a s  ử ệ ế ử ệ ử ổ

+ Vòng l p thông đi p ặ ệ

­ Khi nh n phím hay chu t, Windows chuy n  đ i s  ki n nàyấ ộ ể ổ ự ệ  thành các thông đi p và đ t vào hàng đ i thông đi p. Vòng l pệ ặ ợ ệ ặ  thông đi p có nhi m v  nh n và x  lý các thông đi p trongệ ệ ụ ậ ử ệ  hàng đ i. ợ

­ TranslateMessage: D ch thông đi p sang d ng tiêu chu n. ị ệ ạ ẩ

­ DispatchMessage: Phân ph i thông đi p đ n hàm x  lý thôngố ệ ế ử  

đi p tệ ương  ng. ứ

b. Th  t c x  lý thông đi p ủ ụ ử ệ

+ Nh n và x  lý thông đi p c a chậ ử ệ ủ ương trình. 

+ M t chộ ương trình có th  có nhi u th  t c window. ể ề ủ ụ

+ M t l p c a s  s  khai báo 1 th  t c window. ộ ớ ử ổ ẽ ủ ụ

+ Các thông đi p sau khi x  lý nên tr  v  giá tr  0. ệ ử ả ề ị

+ D ng t ng quát: ạ ổ

LRESULT CALLBACK WndProc( 

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

UINT message, //ID c a thông đi p (tên thông đi p) ủ ệ ệ

WPARAM wParam, //thams  th  nh t c a message (WORD) ố ứ ấ ủLPARAM lParam) //thams  th  hai c a message (LONG) ố ứ ủ

Trang 11

}

Thông đi p WM_PAINT: ệ

C p nh t l i thông tin v  trên màn hình ậ ậ ạ ẽ

Các tr ng thái xu t hi n thông đi p WM_PAINT:ạ ấ ệ ệ

 i. T o c a s  Hi n th  C p nh t ạ ử ổ ể ị ậ ậ

BeginPaint: L y ng  c nh thi t b  ấ ữ ả ế ị

EndPaint: Gi i phóng ng  c nh thi t b  ả ữ ả ế ị

Trang 12

III, M T S  THÀNH PH N C  B N Ộ Ố Ầ Ơ Ả

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

+ 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 (linking). 

+ Các d ng resource: ạ

Trang 13

2. M t s  ki u d  li u m i:ộ ố ể ữ ệ ớ

Trang 15

V  m t đi m màu clrRef t i v  trí (nXPos, nYPos) lên hDC. Giá tr  tr  ẽ ộ ể ạ ị ị ả

v  là màu c a đi m (nXPos, nYPos) ho c ­1 n u đi m này n m ngoài ề ủ ể ặ ế ể ằvùng hi n th  ể ị

  +DWORD MoveToEx(HDC hDC, int x, int y); 

Di chuy n bút v  đ n t a đ  (x, y) trên hDC. Giá tr  tr  v  là t a đ  cũ ể ẽ ế ọ ộ ị ả ề ọ ộ

Trang 17

Tô màu m t vùng kín, fillStyle quy t đ nh cách tô : ộ ế ị

­ FLOODFILLBORDER : Tô màu vùng có màu đường biên là cRef. 

­FLOODFILLSURFACE : Tô vùng có màu cRef.

4.H P THO I VÀ ĐI U KHI NỘ Ạ Ề Ể

4.1 H p tho i  ộ ạ

H p tho i ph i h p gi a ngộ ạ ố ợ ữ ườ ử ụi s  d ng v i chớ ương trình b ng ằ

m t s  ph n t   đi u khi n mà các ph n t  này nh n nhi m v  thu nh n ộ ố ầ ử ề ể ầ ử ậ ệ ụ ậthông tin t  ngừ ười dùng và cung c p thông tin đ n ngấ ế ười dùng khi người dùng tác đ ng đ n các ph n t  đi u khi n. Các ph n t  đi u khi n này nh nộ ế ầ ử ề ể ầ ử ề ể ậ  

c a s  cha là m t h p tho i. Các ph n t   đi u khi n thử ổ ộ ộ ạ ầ ử ề ể ường là các Button, List Box, Combo Box, Check Box, Radio Button, Edit Box, Scroll Bar, Static. 

  H p tho i tr ng thái (modal). ộ ạ ạ

  H p tho i không tr ng thái (modeless). ộ ạ ạ

  H p tho i thông d ng (common dialog) ộ ạ ụ

4.2Thi t k  h p th aiế ế ộ ọ

Ví d : ụ

Trang 18

4.3Các ki u đi u khi n  ể ề ể

Trang 19

Các ki u đi u khi n để ề ể ược khai báo trong resource script có d ng nh  ạ ư

sau, ngo i tr  ki u  đi u khi n  LISTBOX,  COMBOBOX, SCROLLBAR, ạ ừ ể ề ểEDITTEXT. 

Control­type "text", id, xPos, yPos, xWidth, yHeight, iStyle 

Các ki u  đi u khi n  LISTBOX,  COMBOBOX,  SCROLLBARể ề ể , EDITTEXT 

được khai báo trong resource script v i c u trúc nh  trên ớ ấ ư

nh ng không có trư ường "text".  

Thêm thu c tính cho các ki u  đi u khi n b ng cách thay  đ i tham ộ ể ề ể ằ ổ

s  ố

iStyle

  Ví d  ta mu n t o radio button v i chu i di n đ t n m   bên trái ụ ố ạ ớ ỗ ễ ạ ằ ở

c a nút thì ta gán trủ ường iStyle b ng BS_LEFTTEXT c  th  nh  sau:ằ ụ ể ư

Trang 20

4.4  Th  t c x  lý h p th ai  ủ ụ ử ộ ọ

  Đ c đi m :ặ ể

•  M i h p th ai c n có m t th  t c x  lý riêng. ỗ ộ ọ ầ ộ ủ ụ ử

•  Các thông đi p không đệ ược g i t i hàm x  lý c a s  chính. ử ớ ử ử ổ

•  X  lý thông  đi p nào thì tr  vử ệ ả ề TRUE, n u không tr  v  FALSE ế ả ề

•  Thường ph i x  lý hai thông đi p chínhả ử ệ : WM_INITDIALOG và  WM_COMMAND: LOWORD(WPARAM) ch a ID các  đi u  khi nứ ề

4.5  H p tho i tr ng thái   ộ ạ ạ

  Hi n th  h p tho i ể ị ộ ạ

  G i thông đi p đ n hàm WndProc yêu c u x  lý ngay c  khi h p ở ệ ế ầ ử ả ộ

tho i đang m  nh  hàm SendMessageạ ở ờ

Trang 21

4.6  H p tho i không tr ng thái   ộ ạ ạ

  Hi n th  h p tho i ể ị ộ ạ

Trang 22

h n  . M c dù đã r t c  g ng nh ng do l n đ u ti p xúc v i l p trình ơ ặ ấ ố ắ ư ầ ầ ế ớ ậWindows API nên  chúng em không tránh kh i nh ng  sai sót .Vì v y chúng ỏ ữ ậ

em r t mong th y góp ý thêm cho bài làm c a nhómấ ầ ủ

M t l n n a, chúng em xin c m  n s  nhi t tình c a ộ ầ ữ ả ơ ự ệ ủ th yầ  giáo đã giúp nhóm hoàn thành bài t p l n nàyậ ớ

Ngày đăng: 06/04/2022, 08:11

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w