Windows序设计课件第七章.pptVIP

  • 0
  • 0
  • 约2.79千字
  • 约 21页
  • 2017-05-15 发布于贵州
  • 举报
Windows序设计课件第七章

* 新的消息与 API 新的消息 WM_TIMER、WM_CONTEXTMENU、WM_SYSCOMMAND、WM_SIZE 新的API SetTimer、KillTimer、GetLocalTime、 GetSystemMenu、AppendMenu、TrackPopupMenu SetWindowPos * 第七讲 Windows界面编程-3 主讲:何军 2011-秋季学期 * Refreshing GDI与设备环境 基本的绘图函数 * Outline Windows 界面编程的综合实验 Windows DC使用的双缓冲技术 * 1. 界面编程综合实验 * 1.1 实验要求 带有指针的能够正常运行的时钟 时针、分针、秒针 * 1.2 关键问题 什么因素驱动时钟运行? 如何绘制时钟表面? 如何动态刷新时钟的秒针、分针、时针? * 1.2 关键问题 什么因素驱动时钟运行? Windows消息——WM_TIMER,定时器消息 Windows的系统时间 * 1.2 关键问题 如何绘制时钟表面? 为了方便绘制圆形表盘,将坐标映射方式改为MM_ISOTROPIC 设置坐标原点为客户区中心位置 * 1.2 关键问题 如何动态刷新时钟的秒针、分针、时针? 屏幕全部重新绘制 仅绘制变更的部分 * 1.3 关键代码 定时器消息 #define IDT_CLOCK 1 // 创建定时器 ::SetTimer(hWnd, IDT_CLOCK, 1000, NULL); case WM_TIMER: { // 下面填写定时器代码 return 0; } * 1.3 关键代码 改变坐标映射 void SetIsotropic(HDC hdc, int cx, int cy) { ::SetMapMode(hdc, MM_ISOTROPIC); ::SetWindowExtEx(hdc, 1000, 1000, NULL); ::SetViewportExtEx(hdc, cx, -cy, NULL); ::SetViewportOrgEx(hdc, cx/2, cy/2, NULL); } // 建立坐标系 HDC hdc = ::GetDC(hWnd); SetIsotropic(hdc, s_cxClient, s_cyClient); * 1.3 关键代码 绘制表针 void DrawHand(HDC hdc, int nLength, int nWidth, int nDegrees, COLORREF clrColor) { // 将角度nDegrees转化成弧度. 2*3.1415926/360 == 0.0174533 double nRadians = (double)nDegrees*0.0174533; // 计算坐标 POINT pt[2]; pt[0].x = (int)(nLength*sin(nRadians)); pt[0].y = (int)(nLength*cos(nRadians)); pt[1].x = -pt[0].x/5; pt[1].y = -pt[0].y/5; // 创建画笔,并选如DC结构中 HPEN hPen = ::CreatePen(PS_SOLID, nWidth, clrColor); HPEN hOldPen = (HPEN)::SelectObject(hdc, hPen); // 画线 ::MoveToEx(hdc, pt[0].x, pt[0].y, NULL); ::LineTo(hdc, pt[1].x, pt[1].y); ::SelectObject(hdc, hOldPen); ::DeleteObject(hPen); } DrawHand(hdc, 400, 1, time.wSecond*6, RGB(0, 0, 0)); DrawHand(hdc, 400, 6, time.wMinute*6, RGB(0, 0, 0)); DrawHand(hdc, 200, 8, time.wHour*30 + time.wMinute/2, RGB(0, 0, 0)); 秒针 分针 时针 * 1.3 关键代码 动态刷新时钟指针 wcex.hbrBackground = (HBRUSH)(COLOR_3DFACE +1); case WM_TIMER: { // 以COLOR_3DFACE为背景色就可以擦除指针了(因为窗口的背景色也是COLOR_3DFACE) COLORREF crfColor = ::GetSysCo

文档评论(0)

1亿VIP精品文档

相关文档