1. Trang chủ
  2. » Công Nghệ Thông Tin

Lập trình C Windows 12_Ví dụ

20 474 1
Tài liệu đã được kiểm tra trùng lặp

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

Nội dung

Lập trình C Windows

Lập trình C Windows Ví dụ Bài tập (T4) Nguyễn Đức Hoàng Hạ Khoa CNTT – Trường ĐHKHTN Email: ndhha@fit.hcmuns.edu.vn Graphics Device Interface (GDI) HDC WM_PAINT • HDC BeginPaint( HWND hwnd, // input LPPAINTSTRUCT lpPaint // output ); • BOOL EndPaint( HWND hWnd, PAINTSTRUCT *lpPaint ); Khơng phải WM_PAINT • HDC GetDC( HWND hWnd); • int ReleaseDC( HWND hWnd, HDC hDC // handle to DC ); Chọn đối tượng vẽ vào DC • HGDIOBJ SelectObject( HDC hdc, HGDIOBJ hgdiobj); 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); 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); … HFONT • BOOL ChooseFont(LPCHOOSEFONT lpcf ); • HFONT CreateFontIndirect( CONST LOGFONT* lplf); (xem thêm GDI.pdf-tr26) 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 Ví dụ Robot • Mơ tả: Hãy viết chương trình có robot bước hình • u cầu: – Mơ tả liệu – Mô tả xử lý kiện cần thiết Robot Chuỗi chuyển hình 1213-1213-… 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 • Mơ tả: Viết chương trình cho phép điều khiển robot di chuyển hình Robot di chuyển, người điều khiển hướng robot 14 Bài tập Đồng hồ KIM • Mơ tả Viết chương trình mơ đồng hồ kim máy tính 15 Bài tập • Hướng dẫn: Sử dụng hàm sau để lấy ngày 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ụ • Mơ tả: Hãy đóng gói HDC thành lớp CMyDC nhằm hỗ trợ người lập trình C 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ụ 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 MSDN 19 DLL? 20 ... wSecond; WORD wMilliseconds; } SYSTEMTIME 16 Ví dụ • Mơ tả: Hãy đóng gói HDC thành lớp CMyDC nhằm hỗ trợ người lập trình C Windows • u c? ??u: classCMyDC { Public: PAINTSTRUCT m_ps; HDC m_hdc; HWND... 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);... CreateSolidBrush: Creates a brush with a solid color • Ví dụ: hBr = CreateSolidBrush(255); hOldBr = SelectObject(hdc,hBr); Rectangle(hdc,0,0,400,200); … HFONT • BOOL ChooseFont(LPCHOOSEFONT lpcf ); • HFONT CreateFontIndirect(

Ngày đăng: 14/11/2012, 17:00

TỪ KHÓA LIÊN QUAN

w