1
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:
2
Graphics Device Interface
(GDI)
3
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);
4
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);
5
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);
…
6
HFONT
•BOOL ChooseFont(LPCHOOSEFONT lpcf );
•HFONT CreateFontIndirect(
CONST LOGFONT* lplf);
(xem thêm tại GDI.pdf-tr26)
7
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
8
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