>_<:这里第一次介绍MFC的时间函数,功能和Win32里的计时器类似。

>_<:这里还介绍了MFC的图形绘制函数,和Win32有一点区别

>_<:ABC.h

 #define EX 1            //该点左鼠标
#define OH 2 //该点右鼠标 class CMyApp : public CWinApp
{
public:
virtual BOOL InitInstance ();
}; class CMainWindow : public CFrameWnd //不是继承CFrameWnd 因此需要在CMainWindow()自己定义窗口类了
{
protected: public:
CMainWindow (); protected:
virtual void PostNcDestroy ();//在程序终止之前销毁CMainWindow对象 afx_msg int OnCreate (LPCREATESTRUCT lpcs);
afx_msg void OnTimer (UINT nTimerID);
DECLARE_MESSAGE_MAP ()
};

>_<:ABC.cpp

 #include <afxwin.h>
#include "ABC.h"
#define ID_TIMER_ELLIPSE 1
#define ID_TIMER_RECTANGLE 2 CMyApp myApp; /////////////////////////////////////////////////////////////////////////
// CMyApp member functions BOOL CMyApp::InitInstance ()
{
m_pMainWnd = new CMainWindow;
m_pMainWnd->ShowWindow (m_nCmdShow);
m_pMainWnd->UpdateWindow ();
return TRUE;
} /////////////////////////////////////////////////////////////////////////
// CMainWindow message map and member functions BEGIN_MESSAGE_MAP (CMainWindow, CFrameWnd)
ON_WM_CREATE ()
ON_WM_TIMER ()
END_MESSAGE_MAP () CMainWindow::CMainWindow ()
{
//初始化游戏
//InitGame(); //注册一个 WNDCLASS 窗口类.
CString strWndClass = AfxRegisterWndClass (
CS_DBLCLKS, // Class style(有双击时间发生的窗口类型)
AfxGetApp ()->LoadStandardCursor (IDC_ARROW), // Class cursor(加载一个系统光标,也可自己定义)
(HBRUSH) (COLOR_3DFACE + ), // Background brush(每次::BeginPaint时用它清空客户区);COLOR_3DFACE+1是指定窗口具有与按钮对话框一致的背景色和其他一些3D属性;默认为灰亮色
AfxGetApp ()->LoadStandardIcon (IDI_WINLOGO) // Class icon(加载系统图标,也可自己定义)
); //调用CWnd::CreateEx()创建主窗口
//第一个参数表示0个或是多个WS_EX标志组合;2:AfxRegisterWndClass()返回的WNDCLASS名称;
//3、标题;4、窗口样式
CreateEx (, strWndClass, _T ("Timer"),
WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX, //WS_THICKFRAME窗口可调大小属性(这里不用)
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, //初始位置和大小,这里用CW_USEDEFAULT让Windows拾取窗口和大小
NULL, NULL); //处理窗口位置和尺寸
CRect rect (, , , ); //理想客户区窗口矩形形状
CalcWindowRect (&rect); //根据分辨率、菜单...计算窗口矩形大小(必须在窗口创建后调用) SetWindowPos (NULL, , , rect.Width (), rect.Height (),
SWP_NOZORDER | SWP_NOMOVE | SWP_NOREDRAW);
} //在程序结束之前销毁创建的CMainWindow对象
void CMainWindow::PostNcDestroy ()
{
delete this;
} int CMainWindow::OnCreate (LPCREATESTRUCT lpcs)
{
if (CFrameWnd::OnCreate (lpcs) == -)
return -; if (!SetTimer (ID_TIMER_ELLIPSE, , NULL)||
!SetTimer (ID_TIMER_RECTANGLE, , NULL)) {
MessageBox (_T ("Error: SetTimer failed"));
return -;
}
return ;
} void CMainWindow::OnTimer (UINT nTimerID)
{
CRect rect;
GetClientRect (&rect); int x1 = rand () % rect.right;
int x2 = rand () % rect.right;
int y1 = rand () % rect.bottom;
int y2 = rand () % rect.bottom; CClientDC dc (this);
CBrush brush (RGB (rand () % , rand () % , rand () % ));
CBrush* pOldBrush = dc.SelectObject (&brush);
if (nTimerID == ID_TIMER_ELLIPSE)
dc.Ellipse (min (x1, x2), min (y1, y2), max (x1, x2),
max (y1, y2));
else
dc.Rectangle (min (x1, x2), min (y1, y2), max (x1, x2),
max (y1, y2));
dc.SelectObject (pOldBrush);
}

[游戏学习26] MFC 时间函数 画图形的更多相关文章

  1. [游戏学习27] MFC 匀速运动

    >_<:理解上一个时间函数的概念和用法,本节的实现也比较简单 >_<:就是简单的绘图+时间函数 >_<:TicTac.h #define EX 1 //该点左鼠标 ...

  2. [游戏学习23] MFC 画尺子

    >_<:这是个简单的MFC程序,有利于了解MFC的框架结构 >_<:Ruler.h #include<afxwin.h> class CMyApp:public C ...

  3. [游戏学习25] MFC 橡皮筋画线效果

    >_<:这是给出窗口内外不同情况的处理展示的例子. >_<:MouseCap.h #include<afxwin.h> class CMyApp :public C ...

  4. [游戏学习22] MFC 井字棋 双人对战

    >_<:太多啦,感觉用英语说的太慢啦,没想到一年做的东西竟然这么多.....接下来要加速啦! >_<:注意这里必须用MFC和前面的Win32不一样啦! >_<:这也 ...

  5. [游戏学习24] MFC 各种绘图 字体学习

    >_<:这里包含字体设置及各种绘图,只要稍微看一下代码就能理解,这里不多介绍 >_<:Hello.h #include<afxwin.h> class CMyApp ...

  6. [游戏学习28] MFC 时钟

    >_<:这是一个时钟小程序 >_<:通过调用获得系统时间然后经过计算得出当前时间,然后再以3个圆环表示时分秒. >_<:TAO_CLOCK.h class CMyA ...

  7. matlab画图形函数 semilogx

    matlab画图形函数 semilogx loglog 主要是学习semilogx函数,其中常用的是semilogy函数,即后标为x的是在x轴取对数,为y的是y轴坐标取对数.loglog是x y轴都取 ...

  8. Mysql学习笔记(五)数学与日期时间函数

    学习内容: 1.数学函数 2.日期时间函数 这些函数都是很常用的函数...在这里进行简单的介绍... 数学函数: mysql); //取绝对值函数 这个函数可安全地使用于 BIGINT 值. mysq ...

  9. MYSQL学习笔记三:日期和时间函数

    MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...

随机推荐

  1. 1-9 TCP/IP参考模型

    ISO/OSI参考模型与TCP/IP模型对比 一.网络访问层 功能:包括IP地址与物理硬件地址的映射以及将IP地址封装成帧. 基于不同类型的网络接口,网路访问层定义了和物理介质的连接 网路访问层包含了 ...

  2. word 批量删除书签

    打开word    按住alt+F11 进入vba 界面 Sub test() Dim MyBk As Bookmark For Each MyBk In ActiveDocument.Bookmar ...

  3. C#模拟浏览器发get,post请求

    调用: JArray ja = (JArray)JsonConvert.DeserializeObject("["+GetDataPost()+"]"); Re ...

  4. 开源PLM软件Aras详解一 安装

    对于Aras,一定很多人陌生,Aras Innovator是开源的PLM系统,优点就是免费license,没有节点限制,最棒的是基于SOAP,扩展性非常强,但是国内很多想入手的人入门很难, 关于Ara ...

  5. Centos6.7 python2.6升级到python2.7

    查看python版本: #python -V Python 2.6.6 1.下载python 2.7.3 #wget http://python.org/ftp/python/2.7.3/Python ...

  6. myBatis自动生成mapping,dao和model

    myBatis没有自动封装实体类.所以都需要自己编写,但是表数据过多时.编写难度就会增加,错误率也会增加! 所以myBatis提供mybatis-generator-core-1.3.2-bundle ...

  7. PHP开发环境配置

    wamp:windows apache MySQL php 下载php版本问题在windows 下apache+php用vc6 thread safe版本 1.首先安装apache到e盘myenv/a ...

  8. Odoo10尝鲜:制造

    Odoo10主要是对 MRP 进行重构, 增加制造领料类型 简化工作中心 指定投料的作业 工作中心的生产效率指标,例如 OEE 基于历史工单数据,统计.计算工序作业时长     并增加了新功能,例如 ...

  9. option3

    option = { tooltip : { trigger: 'item', formatter: "{a} <br/>{b} : {c} ({d}%)" }, le ...

  10. 恢复SQLSERVER被误删除的数据(转——收藏)

    恢复SQLSERVER被误删除的数据 摘自:http://www.cnblogs.com/lyhabc/p/3683147.html 曾经想实现Log Explorer for SQL Server的 ...