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

Tiêu đề Lập Trình C Trên Windows Ví Dụ Và Bài Tập
Tác giả Nguyễn Đức Hoàng Hạ
Trường học Trường Đại Học Khoa Học Tự Nhiên
Chuyên ngành Công Nghệ Thông Tin
Thể loại Ví dụ
Định dạng
Số trang 20
Dung lượng 79,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

Lập trình C Windows

Trang 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: ndhha@fit.hcmuns.edu.vn

Trang 2

Graphics Device Interface

(GDI)

Trang 3

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);

Trang 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);

Trang 5

• 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);

Trang 6

HFONT

• BOOL ChooseFont(LPCHOOSEFONT lpcf );

• HFONT CreateFontIndirect(

CONST LOGFONT* lplf);

(xem thêm tại GDI.pdf-tr26)

Trang 7

• 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

Trang 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

Trang 9

Robot

Trang 10

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

Trang 11

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);

}

Trang 12

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;

Trang 13

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);

Trang 14

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

Trang 15

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.

Trang 16

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

Trang 17

Ví dụ 6

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.

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);

Trang 18

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);

}

Trang 19

Microsoft Foundation Class (MFC)

Library

Trang 20

DLL?

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

TỪ KHÓA LIÊN QUAN