VC++:编写画硬币程序
画硬币
- 建立菜单栏:增加硬币和减少硬币
(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)、按下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++:编写画硬币程序相关推荐
- VC编写的程序不能在其他机器上运行的解决方案(续)
我在前面的文章里面提到由于side-by-side问题导致的VC编写的程序不能正常启动的问题的解决方案,这种方法是针对于单个可执行文件的解决方案,但是有的时候你可能会碰到另外一种情况-也是由于side ...
- vc下c语言网络编程,用VC编写C/S消息传送程序
下载本文示例代码 网络编程已经成为一种时髦,以TCP/IP协议的网络更为流行.自己编一个服务器与客户机互相传送消息的程序,以便增加自己网络编程的经验.下面我就介绍一下我编的程序. 首先介绍服务器程序: ...
- VC编写程序在debug下正常,在release下错误
Debug 和 Release 编译方式的区别 Debug 和 Release 的真正秘密,在于一组编译选项.下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /Fo,但区别并不重要, ...
- 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. ...
- VC++编写USB接口通讯程序
用VC++编写USB接口通讯程序 摘要:详细介绍Visual C++ 6.0环境下利用Windows API(Application Program Interface)函数来实现与符合HID设备类的 ...
- VC++编写电子邮件程序 第二篇 也是用simple mapi
VC++编写电子邮件程序 一.概述 ---- 本文主要讲述如何使用Visual C++用MAPI编写E-mail程序.MAPI是包含在Windows之中的, 因此不需要安装其他额外的部件.MAPI有以 ...
- 【181221】VC 编写的网址收藏夹程序(Access)源代码
源码下载简介 VC 编写的网址收藏夹程序(Access),网络小工具,碰到一些好的网址可以方便记录下来,程序极其简单,高手可不看,刚学习VC的朋友用来学习数据库的简单操作还可以,它可以练习数据库记录的 ...
- VC控件MSComm编写串口通信程序
转载:http://blog.csdn.net/liangzhao_jay/article/details/45647229 在众多网友的支持下,串口调试助手从2001年5月21日发布至今,短短一个月 ...
- 使用VC编写VB使用DLL
使用VC编写VB使用DLL 一.在函数定义前必须加上extern "c",_stdcall关键字. extern "C" int _stdcall Sum(i ...
最新文章
- ChineseCalendar类[转]
- android 绘制分割线,Android EditText在其drawable和它的文本之间绘制一个分隔线
- implementation of CreateBindingContext
- 什么是软件危机?产生原因?如何解决?
- C#子窗体运行时无法正常最大化的解决办法
- windowsCE镜像文件结构
- 基于虚拟帐号的邮件系统extmail(1)
- 计算机二级office函数日期,Excel函数-日期和文本函数-计算机二级Office
- Python – numpy.arange()
- Java 任务调度,分布式定时任务XXL-JOB,elastic-job
- OpenWrt搭建KMS服务(Vlmcsd)
- 计算机控制d a数模转换实验,实验一 D、A数模转换实验
- HTML <abbr> 标签
- [答疑]举报卖家、举报买家还是举报
- Flink 入门教程
- 如何在小米9 se(安卓9)安装Xposed框架?
- node-inspector调试node程序
- 什么是JRE?Java运行环境简介
- 昨晚,奔奔第一次哭伤心了。。。
- 毕业设计\毕业论文论文下载查询\查重降重\PPT工具合集