画硬币

  1. 建立菜单栏:增加硬币和减少硬币

(1)、创建DrawCoin应用程序

(2)、ResourceView->Menu->IDR_MAINFRAME(双击)->菜单栏右边虚线框(双击)->Caption框输入:画硬币(&C),其他默认;

(3)、重复步骤二,在主菜单:画硬币,下方虚线框(双击)->输入ID:ID_COIN_ADD, Caption:增加硬币(&A)\tCtrl+A,Prompt:在客户区多画一个硬币,其他默认;(减少硬币也如此)

2、添加菜单命令处理函数

(1)、ClassView->CDrawCoinDoc(单击右键)->Add member Variable(单击)->添加int型,public,变量名m_nCoins;

(2)、按下Ctrl+W->Class Name: CDrawCoinDoc,Object IDs: CDrawCoinDoc,Messages:DeleteContents->Add Function(单击)->点击ok-> Edit Code(单击)

(3)、输入红色代码:

void CDrawCoinDoc::DeleteContents()

{

// TODO: Add your specialized code here and/or call the base class

m_nCoins=1;

CDocument::DeleteContents();

}

(3)、按下Ctrl+W->Class Name: CDrawCoinDoc,Object IDs:ID_COIN_ADD, Messages:COMMAND-> Add Function(单击)-> 点击ok-> Edit Code(单击);ID_COIN_SUB同样

(4)、分别输入红色代码:

void CDrawCoinDoc::OnCoinAdd()

{

// TODO: Add your command handler code here

m_nCoins++;

UpdateAllViews(NULL);

}

void CDrawCoinDoc::OnCoinSub()

{

// TODO: Add your command handler code here

if(m_nCoins>0) m_nCoins--;

UpdateAllViews(NULL);

}

(5)、ClassView-> CDrawCoinView->OnDraw()(双击)->在该函数输入代码:

for(int i=0;i<pDoc->m_nCoins;i++)

{

int y=200-10*i;

pDC->Ellipse(200,y,300,y-30);

pDC->Ellipse(200,y-10,300,y-35);

}

  1. 灰显的函数添加

(1)、按下Ctrl+W->Class Name: CDrawCoinDoc,Object IDs:ID_COIN_SUB, Messages:UPDATE_COMMAND_UI-> Edit Code(单击)

(2)、输入红色代码:

void CDrawCoinDoc::OnUpdateCoinSub(CCmdUI* pCmdUI)

{

// TODO: Add your command update UI handler code here

if(m_nCoins<1)

pCmdUI->Enable(FALSE);

else pCmdUI->Enable(TRUE);

}

(3)、ADD同理

4、快捷键功能的添加

(1)、ResourceView->Accelerator->IDR_MAINFRAME(双击)

(2)、ID:ID_COIN_ADD,Key:A,其他默认

(3). ID_COIN_SUB同理

5、添加弹出式菜单

(1). 按下Ctrl+W->Class Name: CDrawCoinView, Messages:WM_CONTEXTMENU-> Add Function(单击)-> 点击ok -> Edit Code(单击)

(2). 输入红色代码:

void CDrawCoinView::OnContextMenu(CWnd* pWnd, CPoint point)

{

// TODO: Add your message handler code here

CMenu menuPopup;

if(menuPopup.CreatePopupMenu())

{

menuPopup.AppendMenu(MF_STRING,ID_COIN_ADD,"增加硬币\tCtrl+A");

menuPopup.AppendMenu(MF_STRING,ID_COIN_SUB,"减少硬币\tCtrl+B");

menuPopup.TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);

}

}

6、标题栏的修改

ClassView-> CDrawCoinApp->InitInstance()(双击)->在该函数输入代码:

m_pMainWnd->SetWindowText("画硬币-DrawCoin");

7、添加工具栏按钮

(1). ResourceView->Tooibar->IDR_MAINFRAME(双击)

(2).单击工具栏末尾两个空白按钮->用画笔分别绘制成“+”和“-”

(3).分别双击工具栏末尾两个空白按钮:

双击“+”->输入ID:ID_COIN_ADD, Prompt:在客户区多画一个硬币\n增加硬币;减少硬币也同理。

8、在状态栏显示硬币的数量

(1).ResourceView->String Table(双击)->双击列表最下方的空白行->输入ID:ID_INDICATOR_COIN,Caption:硬币数量

(2). ClassView-> CMainFrame-> CMainFrame(双击)

(3). 输入红色代码:

static UINT indicators[] =

{

ID_SEPARATOR,           // status line indicator

ID_INDICATOR_COIN,

ID_INDICATOR_CAPS,

ID_INDICATOR_NUM,

ID_INDICATOR_SCRL,

};

(3).在OnDraw()函数中添加如下红色代码:

void CDrawCoinView::OnDraw(CDC* pDC)

{

CDrawCoinDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

// TODO: add draw code for native data here

CPen *pPenOld,PenNew;

CPen *pPenNew=new CPen(PS_SOLID,1,RGB(255,40,100));

pPenOld=pDC->SelectObject(pPenNew);

for(int i=0;i<pDoc->m_nCoins;i++)

{

int y=200-10*i;

pDC->Ellipse(200,y,300,y-30);

pDC->Ellipse(200,y-10,300,y-35);

}

CString strCoins;

CStatusBar* pStatus=(CStatusBar*)AfxGetApp()->m_pMainWnd->GetDescendantWindow(ID_VIEW_STATUS_BAR);

if(pStatus)

{

strCoins.Format("硬币:%d",pDoc->m_nCoins);

pStatus->SetPaneText(1,strCoins);

}

pDoc->SetModifiedFlag();

}

9、序列化

(1). ClassView-> CDrawCoinDoc -> Serialize()(双击)

(2). .在该函数中添加如下红色代码:

void CDrawCoinDoc::Serialize(CArchive& ar)

{

if (ar.IsStoring())

{

// TODO: add storing code here

ar<<m_nCoins;

}

else

{

// TODO: add loading code here

ar>>m_nCoins;

}

}

(3).在OnDraw()函数末尾添加如下代码:

pDoc->SetModifiedFlag();

10、颜色设置

在OnDraw()函数中添加如下红色代码:

void CDrawCoinView::OnDraw(CDC* pDC)

{

CDrawCoinDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

// TODO: add draw code for native data here

CPen *pPenOld,PenNew;

CPen *pPenNew=new CPen(PS_SOLID,1,RGB(255,40,100));

pPenOld=pDC->SelectObject(pPenNew);

for(int i=0;i<pDoc->m_nCoins;i++)

{

int y=200-10*i;

pDC->Ellipse(200,y,300,y-30);

pDC->Ellipse(200,y-10,300,y-35);

}

·

·

·

·

}

VC++:编写画硬币程序相关推荐

  1. VC编写的程序不能在其他机器上运行的解决方案(续)

    我在前面的文章里面提到由于side-by-side问题导致的VC编写的程序不能正常启动的问题的解决方案,这种方法是针对于单个可执行文件的解决方案,但是有的时候你可能会碰到另外一种情况-也是由于side ...

  2. vc下c语言网络编程,用VC编写C/S消息传送程序

    下载本文示例代码 网络编程已经成为一种时髦,以TCP/IP协议的网络更为流行.自己编一个服务器与客户机互相传送消息的程序,以便增加自己网络编程的经验.下面我就介绍一下我编的程序. 首先介绍服务器程序: ...

  3. VC编写程序在debug下正常,在release下错误

    Debug 和 Release 编译方式的区别 Debug 和 Release 的真正秘密,在于一组编译选项.下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /Fo,但区别并不重要, ...

  4. VC6.0(VC++6.0)使用教程(使用VC6.0编写C语言程序)

    VC6.0(VC++6.0)使用教程(使用VC6.0编写C语言程序) Visual C++ 6.0简称VC或者VC6.0,是微软1998年推出的一款C/C++ IDE,界面友好,调试功能强大.VC6. ...

  5. VC++编写USB接口通讯程序

    用VC++编写USB接口通讯程序 摘要:详细介绍Visual C++ 6.0环境下利用Windows API(Application Program Interface)函数来实现与符合HID设备类的 ...

  6. VC++编写电子邮件程序 第二篇 也是用simple mapi

    VC++编写电子邮件程序 一.概述 ---- 本文主要讲述如何使用Visual C++用MAPI编写E-mail程序.MAPI是包含在Windows之中的, 因此不需要安装其他额外的部件.MAPI有以 ...

  7. 【181221】VC 编写的网址收藏夹程序(Access)源代码

    源码下载简介 VC 编写的网址收藏夹程序(Access),网络小工具,碰到一些好的网址可以方便记录下来,程序极其简单,高手可不看,刚学习VC的朋友用来学习数据库的简单操作还可以,它可以练习数据库记录的 ...

  8. VC控件MSComm编写串口通信程序

    转载:http://blog.csdn.net/liangzhao_jay/article/details/45647229 在众多网友的支持下,串口调试助手从2001年5月21日发布至今,短短一个月 ...

  9. 使用VC编写VB使用DLL

    使用VC编写VB使用DLL 一.在函数定义前必须加上extern "c",_stdcall关键字.  extern "C" int _stdcall Sum(i ...

最新文章

  1. ChineseCalendar类[转]
  2. android 绘制分割线,Android EditText在其drawable和它的文本之间绘制一个分隔线
  3. implementation of CreateBindingContext
  4. 什么是软件危机?产生原因?如何解决?
  5. C#子窗体运行时无法正常最大化的解决办法
  6. windowsCE镜像文件结构
  7. 基于虚拟帐号的邮件系统extmail(1)
  8. 计算机二级office函数日期,Excel函数-日期和文本函数-计算机二级Office
  9. Python – numpy.arange()
  10. Java 任务调度,分布式定时任务XXL-JOB,elastic-job
  11. OpenWrt搭建KMS服务(Vlmcsd)
  12. 计算机控制d a数模转换实验,实验一 D、A数模转换实验
  13. HTML <abbr> 标签
  14. [答疑]举报卖家、举报买家还是举报
  15. Flink 入门教程
  16. 如何在小米9 se(安卓9)安装Xposed框架?
  17. node-inspector调试node程序
  18. 什么是JRE?Java运行环境简介
  19. 昨晚,奔奔第一次哭伤心了。。。
  20. 毕业设计\毕业论文论文下载查询\查重降重\PPT工具合集

热门文章

  1. Go并发之同步异步、异步回调
  2. linux卸载命令rpm,Linux之rpm包的卸载与安装方法步骤
  3. 用Python实现二分法查找
  4. 17届智能车竞赛技术报告-极速越野 | 南昌大学-闪电小飞侠
  5. mysql varbinary 乱码_mysql解决中文乱码
  6. 机房预订系统(水文)
  7. webwork+velocity整合案例
  8. 高等数学基础02:极限
  9. SQL Server 获评2016 DB-Engines年度DBMS榜首
  10. oppo watch安装王者荣耀,adb完整代码及步骤