Lập trình C về Windows
lượt xem 19
download
Download
Vui lòng tải xuống để xem tài liệu đầy đủ
CreateBrushIndirect: Creates a brush with a specified style, color, and pattern • CreateDIBPatternBrushPt: Creates a brush with the pattern from a DIB • CreateHatchBrush: Creates a brush with a hatch pattern and color • CreatePatternBrush: Creates a brush with a bitmap pattern • CreateSolidBrush: Creates a brush with a solid color HDC WM_PAINT • HDC BeginPaint( HWND hwnd, //
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Lập trình C về Windows
- Lập trình C trên Windows Ví dụ và Bài tập (T4) Nguyễn Đức Hoàng Hạ Khoa CNTT – Trường ĐHKHTN Email: ndhha@fit.hcmuns.edu.vn 1
- Graphics Device Interface (GDI) 2
- HDC WM_PAINT • HDC BeginPaint( HWND hwnd, // input LPPAINTSTRUCT lpPaint // output ); • BOOL EndPaint( HWND hWnd, PAINTSTRUCT *lpPaint ); Không phải trong WM_PAINT • HDC GetDC( HWND hWnd); • int ReleaseDC( HWND hWnd, HDC hDC // handle to DC ); Chọn các đối tượng vẽ vào trong DC • HGDIOBJ SelectObject( HDC hdc, HGDIOBJ hgdiobj); 3
- HPEN • HPEN CreatePen( int fnPenStyle, int nWidth, COLORREF crColor); • BOOL DeleteObject( HGDIOBJ hObject); • Ví dụ: hdc = BeginPaint(hWnd, &ps); hPen = CreatePen(PS_SOLID,2,0); hOld = SelectObject(hdc,hPen); MoveToEx(hdc,100,200,NULL); LineTo(hdc,200,100); SelectObject(hdc,hOld); DeleteObject(hPen); EndPaint(hWnd, &ps); 4
- HBRUSH • CreateBrushIndirect: Creates a brush with a specified style, color, and pattern • CreateDIBPatternBrushPt: Creates a brush with the pattern from a DIB • CreateHatchBrush: Creates a brush with a hatch pattern and color • CreatePatternBrush: Creates a brush with a bitmap pattern • CreateSolidBrush: Creates a brush with a solid color • Ví dụ: hBr = CreateSolidBrush(255); hOldBr = SelectObject(hdc,hBr); Rectangle(hdc,0,0,400,200); … 5
- HFONT • BOOL ChooseFont(LPCHOOSEFONT lpcf ); • HFONT CreateFontIndirect( CONST LOGFONT* lplf); (xem thêm tại GDI.pdf-tr26) 6
- HBITMAP • HBITMAP LoadBitmap( HINSTANCE hInstance, LPCTSTR lpBitmapName); • HANDLE LoadImage( HINSTANCE hinst,LPCTSTR lpszName, UINT uType, int cxDesired, int cyDesired, UINT fuLoad ); uType: IMAGE_BITMAP,IMAGE_CURSOR,IMAGE_ICON fuLoad: LR_LOADFROMFILE 7
- Ví dụ 4 Robot • Mô tả: Hãy viết 1 chương trình có một robot bước đi trên màn hình • Yêu cầu: – Mô tả dữ liệu – Mô tả xử lý các sự kiện cần thiết 8
- Robot 1 2 3 Chuỗi chuyển hình 1213-1213-… 9
- Robot typedef struct { HBITMAP hBmp; int next; int dx,dy; } CANH; CANH robot[4]; int nMAX = 4; int n; int x,y; //vi tri anh 10
- Robot void DrawRobot(HDC hdc) { HDC hRobot = ::CreateCompatibleDC(hdc); HGDIOBJ hOld = SelectObject( hRobot, robot[n].hBmp ); BitBlt(hdc,x,y,50,50,hRobot,0,0,SRCCOPY); SelectObject(hRobot,hOld); DeleteDC(hRobot); } 11
- Robot case WM_CREATE: robot[0].hBmp = LoadBitmap(hInst,LPCTSTR(IDB_BITMAP1)); robot[0].next =1; robot[0].dx = 27-13; robot[0].dy =0; robot[1].hBmp = LoadBitmap(hInst,LPCTSTR(IDB_BITMAP2)); robot[1].next =2; robot[1].dx = 38-27; robot[1].dy =0; robot[2].hBmp = LoadBitmap(hInst,LPCTSTR(IDB_BITMAP1)); robot[2].next = 3; robot[2].dx = 27-13; robot[2].dy =0; robot[3].hBmp = LoadBitmap(hInst,LPCTSTR(IDB_BITMAP3)); robot[3].next =0; robot[3].dx = 38-27; robot[3].dy =0; n = 0; x = y = 0; SetTimer(hWnd,1,1000,NULL); break; 12
- Robot case WM_TIMER: x += robot[n].dx; y += robot[n].dy; n = robot[n].next ; InvalidateRect(hWnd, NULL,TRUE); break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); DrawRobot(hdc); EndPaint(hWnd, &ps); break; 13
- Bài tập 4 • Mô tả: Viết một chương trình cho phép điều khiển robot di chuyển trên màn hình. Robot luôn di chuyển, người sẽ điều khiển hướng đi của robot 14
- Bài tập 5 Đồng hồ KIM • Mô tả Viết chương trình mô phỏng đồng hồ kim trên máy tính. 15
- Bài tập 5 • Hướng dẫn: Sử dụng hàm sau để lấy ngày giờ hệ thông: void GetLocalTime( LPSYSTEMTIME lpSystemTime ); typedef struct _SYSTEMTIME { WORD wYear; WORD wMonth; WORD wDayOfWeek; WORD wDay; WORD wHour; WORD wMinute; WORD wSecond; WORD wMilliseconds; } SYSTEMTIME 16
- Ví dụ 6 • Mô tả: Hãy đóng gói HDC thành lớp CMyDC nhằm hỗ trợ người lập trình C trên Windows. • Yêu cầu: classCMyDC { Public: PAINTSTRUCT m_ps; HDC m_hdc; HWND m_hwnd; HDC BeginPaint(HWND); void EndPaint(); void MoveTo(POINT); void LineTo(POINT); void Line(POINT, POINT); … }; 17
- Ví dụ 6 HDC CMyDC::BeginPaint(HWND hwnd) { m_hwnd = hwnd; m_hdc = BeginPaint(m_hwnd, &m_ps); return m_hdc; } void CMyDC::EndPaint() { EndPaint(m_hwnd,&m_ps); } void CMyDC::Line(POINT p1, POINT p2) { MoveTo(p1); LineTo(p2); } 18
- Microsoft Foundation Class (MFC) Library Xem chi tiết trong MSDN 19
- DLL? 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Lập trình C trên Windows: Kỹ thuật lập trình Visual C++ (MFC)
36 p |
1153
|
443
-
Lập trình C trên Windows : Thư viện đồ họa GDI
37 p |
432
|
150
-
Tài liệu lập trình C++ tiếng Việt
200 p |
304
|
74
-
CÁC QUI ĐỊNH - Môn học: Lập trình C trên Windows
1 p |
306
|
57
-
Ví dụ và Bài tập Lập trình C trên Windows
20 p |
223
|
44
-
Bài giảng Ngôn ngữ lập trình C# - Nguyễn Hồng Phương
409 p |
224
|
41
-
Lập trình C trên Windows - ĐH KHTN Tp.HCM
17 p |
208
|
39
-
Bài giảng Lập trình C# 2010: Chương 2 - ĐH Công nghệ Đồng Nai
46 p |
113
|
22
-
Bài giảng Lập trình C# 2010: Chương 2.3 - ĐH Công nghệ Đồng Nai
21 p |
103
|
20
-
Bài giảng Lập trình C# 2010: Chương 2.4 - ĐH Công nghệ Đồng Nai
16 p |
93
|
19
-
Bài giảng Chuyên đề C#: Chương 3 - Windows Forms
243 p |
113
|
17
-
Bài giảng Lập trình C trên Windows - Nguyễn Đạt Thông
353 p |
109
|
17
-
Bài giảng Lập trình C trên Windows: Thư viện lập trình Multi-Media
7 p |
71
|
6
-
Bài giảng Lập trình trên môi trường Window: Chương 2 - ThS. Dương Thành Phết
45 p |
57
|
5
-
Giáo trình Lập trình C# (Ngành: Công nghệ thông tin - Cao đẳng liên thông) - Trường Cao đẳng Xây dựng số 1
115 p |
12
|
4
-
Bài giảng Lập trình môi trường Window: Chương 2 - Ngô Thanh Hùng
139 p |
31
|
3
-
Bài giảng Lập trình môi trường Window - Chương 0: Giới thiệu môn học
7 p |
30
|
3
-
Bài giảng Lập trình môi trường Window - Chương 2: Ngôn ngữ C#
139 p |
20
|
2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn