MFC基于单文档制作吹彩色泡泡程序

1、代码如下:


// 吹彩色泡泡Doc.h : interface of the CMyDoc class
//
/#if !defined(AFX_DOC_H__559CF0A7_41F7_48A5_A356_774764C0E60F__INCLUDED_)
#define AFX_DOC_H__559CF0A7_41F7_48A5_A356_774764C0E60F__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000#define MAX_BUBBLE 250 //设置吹泡泡的上限class CMyDoc : public CDocument
{
protected: // create from serialization onlyCMyDoc();DECLARE_DYNCREATE(CMyDoc)// Attributes
public:CRect m_rectBubble[MAX_BUBBLE];int x[MAX_BUBBLE],y[MAX_BUBBLE],X[MAX_BUBBLE],Y[MAX_BUBBLE] ;int a[MAX_BUBBLE],b[MAX_BUBBLE],c[MAX_BUBBLE];int m_nBubbleCount;
// Operations
public:// Overrides// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CMyDoc)public:virtual BOOL OnNewDocument();virtual void Serialize(CArchive& ar);//}}AFX_VIRTUAL// Implementation
public:virtual ~CMyDoc();
#ifdef _DEBUGvirtual void AssertValid() const;virtual void Dump(CDumpContext& dc) const;
#endifprotected:// Generated message map functions
protected://{{AFX_MSG(CMyDoc)// NOTE - the ClassWizard will add and remove member functions here.//    DO NOT EDIT what you see in these blocks of generated code !//}}AFX_MSGDECLARE_MESSAGE_MAP()
};///{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_DOC_H__559CF0A7_41F7_48A5_A356_774764C0E60F__INCLUDED_)

// 吹彩色泡泡View.h : interface of the CMyView class
//
/#if !defined(AFX_VIEW_H__50144892_DB2F_46D1_A755_F4A47754BBA2__INCLUDED_)
#define AFX_VIEW_H__50144892_DB2F_46D1_A755_F4A47754BBA2__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000class CMyView : public CView
{
protected: // create from serialization onlyCMyView();DECLARE_DYNCREATE(CMyView)// Attributes
public:CMyDoc* GetDocument();// Operations
public:// Overrides// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CMyView)public:virtual void OnDraw(CDC* pDC);  // overridden to draw this viewvirtual BOOL PreCreateWindow(CREATESTRUCT& cs);protected:virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);//}}AFX_VIRTUAL// Implementation
public:virtual ~CMyView();
#ifdef _DEBUGvirtual void AssertValid() const;virtual void Dump(CDumpContext& dc) const;
#endifprotected:// Generated message map functions
protected://{{AFX_MSG(CMyView)afx_msg void OnLButtonDown(UINT nFlags, CPoint point);afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);afx_msg void OnRButtonDblClk(UINT nFlags, CPoint point);afx_msg void OnTimer(UINT nIDEvent);afx_msg void OnPaint();//}}AFX_MSGDECLARE_MESSAGE_MAP()
};#ifndef _DEBUG  // debug version in 吹彩色泡泡View.cpp
inline CMyDoc* CMyView::GetDocument(){ return (CMyDoc*)m_pDocument; }
#endif///{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_VIEW_H__50144892_DB2F_46D1_A755_F4A47754BBA2__INCLUDED_)

// 吹彩色泡泡Doc.cpp : implementation of the CMyDoc class
//#include "stdafx.h"
#include "吹彩色泡泡.h"#include "吹彩色泡泡Doc.h"#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif/
// CMyDocIMPLEMENT_DYNCREATE(CMyDoc, CDocument)BEGIN_MESSAGE_MAP(CMyDoc, CDocument)//{{AFX_MSG_MAP(CMyDoc)// NOTE - the ClassWizard will add and remove mapping macros here.//    DO NOT EDIT what you see in these blocks of generated code!//}}AFX_MSG_MAP
END_MESSAGE_MAP()/
// CMyDoc construction/destructionCMyDoc::CMyDoc()
{// TODO: add one-time construction code here}CMyDoc::~CMyDoc()
{
}BOOL CMyDoc::OnNewDocument()
{if (!CDocument::OnNewDocument())return FALSE;// TODO: add reinitialization code here// (SDI documents will reuse this document)m_nBubbleCount=0;return TRUE;
}/
// CMyDoc serializationvoid CMyDoc::Serialize(CArchive& ar)
{if (ar.IsStoring()){// TODO: add storing code here}else{// TODO: add loading code here}
}/
// CMyDoc diagnostics#ifdef _DEBUG
void CMyDoc::AssertValid() const
{CDocument::AssertValid();
}void CMyDoc::Dump(CDumpContext& dc) const
{CDocument::Dump(dc);
}
#endif //_DEBUG/
// CMyDoc commands

// 吹彩色泡泡View.cpp : implementation of the CMyView class
//
#include<afxwin.h>#include "stdafx.h"
#include "吹彩色泡泡.h"#include "吹彩色泡泡Doc.h"
#include "吹彩色泡泡View.h"#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif/
// CMyViewIMPLEMENT_DYNCREATE(CMyView, CView)BEGIN_MESSAGE_MAP(CMyView, CView)//{{AFX_MSG_MAP(CMyView)ON_WM_LBUTTONDOWN()ON_WM_LBUTTONDBLCLK()ON_WM_RBUTTONDBLCLK()ON_WM_TIMER()ON_WM_PAINT()//}}AFX_MSG_MAP// Standard printing commandsON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()/
// CMyView construction/destructionCMyView::CMyView()
{// TODO: add construction code here}CMyView::~CMyView()
{
}BOOL CMyView::PreCreateWindow(CREATESTRUCT& cs)
{// TODO: Modify the Window class or styles here by modifying//  the CREATESTRUCT csreturn CView::PreCreateWindow(cs);
}/
// CMyView drawingvoid CMyView::OnDraw(CDC* pDC)
{CMyDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data herefor(int i=0;i<pDoc->m_nBubbleCount;i++)         pDC->Ellipse(pDoc->m_rectBubble[i]);}/
// CMyView printingBOOL CMyView::OnPreparePrinting(CPrintInfo* pInfo)
{// default preparationreturn DoPreparePrinting(pInfo);
}void CMyView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{// TODO: add extra initialization before printing
}void CMyView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{// TODO: add cleanup after printing
}/
// CMyView diagnostics#ifdef _DEBUG
void CMyView::AssertValid() const
{CView::AssertValid();
}void CMyView::Dump(CDumpContext& dc) const
{CView::Dump(dc);
}CMyDoc* CMyView::GetDocument() // non-debug version is inline
{ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyDoc)));return (CMyDoc*)m_pDocument;
}
#endif //_DEBUG/
// CMyView message handlersvoid CMyView::OnLButtonDown(UINT nFlags, CPoint point) 
{// TODO: Add your message handler code here and/or call defaultCMyDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);
if(pDoc->m_nBubbleCount<MAX_BUBBLE){int r=rand()%50+10;int j;j=pDoc->m_nBubbleCount;pDoc->a[j]=rand()%255,pDoc->b[j]=rand()%255,pDoc->c[j]=rand()%255;pDoc->x[j]=point.x-r;pDoc->y[j]=point.y-r;pDoc->X[j]=point.x+r;pDoc->Y[j]=point.y+r;CRect rect(point.x-r,point.y-r,point.x+r,point.y+r);pDoc->m_rectBubble[pDoc->m_nBubbleCount]=rect;pDoc->m_nBubbleCount++;pDoc->SetModifiedFlag();InvalidateRect(rect,FALSE);}CView::OnLButtonDown(nFlags, point);
}void CMyView::OnLButtonDblClk(UINT nFlags, CPoint point) 
{// TODO: Add your message handler code here and/or call defaultSetTimer(1,200,NULL);CView::OnLButtonDblClk(nFlags, point);
}void CMyView::OnRButtonDblClk(UINT nFlags, CPoint point) 
{// TODO: Add your message handler code here and/or call defaultKillTimer(1);CView::OnRButtonDblClk(nFlags, point);
}void CMyView::OnTimer(UINT nIDEvent) 
{// TODO: Add your message handler code here and/or call defaultInvalidate();CView::OnTimer(nIDEvent);
}void CMyView::OnPaint() 
{CMyDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);
CPaintDC dc(this); // device context for paintingfor(int i=0;i<pDoc->m_nBubbleCount;i++){CBrush  brushNew;CPen  penNew;	   brushNew.CreateSolidBrush(RGB(pDoc->a[i],pDoc->b[i],pDoc->c[i]));penNew.CreatePen(PS_SOLID,1,RGB(255,0,0));dc.SelectObject(&brushNew);  dc.SelectObject(&penNew);dc.Ellipse(pDoc->x[i],pDoc->y[i],pDoc->X[i],pDoc->Y[i]);pDoc->y[i]=pDoc->y[i]-15-(pDoc->X[i]-pDoc->x[i])/5,pDoc->Y[i]=pDoc->Y[i]-15-(pDoc->X[i]-pDoc->x[i])/5;RECT r;GetClientRect(&r);if(pDoc->Y[i]<0){pDoc->y[i]=r.bottom,pDoc->Y[i]=r.bottom-pDoc->X[i]+pDoc->x[i];}}	// TODO: Add your message handler code here// Do not call CView::OnPaint() for painting messages
}

2、运行效果如下:




左键单击画圆,左键双击画动圆,右键双击定圆。




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492472.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MFC制作贪吃蛇教程详解

写在前面的话 本次贪吃蛇教程主要知识点包括以下几个方面 1 CView类中的消息响应 2 控件的消息响应 3 基于CView类内的具体游戏实现 4 数组 5 游戏图形的实现用CDC类实现。 本版游戏的具体实现是在CViewl类中实现&#xff0c;所以其他…

人们对社会与金钱奖赏的预期共享神经环路

来源&#xff1a;神经科技摘要&#xff1a;在日常生活中&#xff0c;作为多种多样的目标导向行为的诱因&#xff0c;社会性奖赏与物质性奖赏扮演着同样重要的角色。2019年2月23日&#xff0c;国际神经科学杂志《Neuroscience & Biobehavioral Reviews》(影响因子&#xff1…

埃塞俄比亚空难,人机控制权争夺后的悲剧

来源&#xff1a;姬扬科学网博客2019年3月10日&#xff0c;埃塞俄比亚航空客机起飞后6分钟突然坠毁&#xff0c;机上157人死难、无人生还&#xff0c;包括8名来自中国大陆的旅客。这次失事的飞机是刚投入使用不久的波音737-MAX8&#xff0c;与去年十月份印度尼西亚航空失事的飞…

MFC制作员工信息管理系统

1.在MFC中建立如下的对话框。 2.修改相关控件的ID如下&#xff1a; 添加按钮的ID为&#xff1a;IDC_ADD,删除按钮的ID为&#xff1a;IDC_DEL&#xff0c;修改按钮的ID为&#xff1a;IDC_MOD。 三个编辑框的ID分别为&#xff1a;IDC_NUMB,IDC_NAME,IDC_SALA。列表控件的ID为&a…

中国AI创新者论坛将于3月21日在清华大学举办

来源&#xff1a;网易智能创新者是如何改变世界的&#xff1f;史蒂夫乔布斯生前在苹果产品发布会上&#xff0c;经常会用同一张幻灯片作为总结&#xff0c;在他身后的大屏幕上会出现一个路标&#xff0c;上面标示着“技术”&#xff08;Technology&#xff09;和“人文”&#…

边缘计算:5G 时代的万亿市场

来源&#xff1a;安信证券摘要&#xff1a;边缘计算将能力从云端下沉至边缘&#xff0c;有效支撑对时延等指标要求较高的城市、交通、家居、制造等场景应用落地&#xff0c;带来边缘节点、服务商两个核心增量机遇。▌边缘计算&#xff0c;5G时代的万亿市场边缘计算成为物理世界…

MFC创建模式对话框与非模式对话框

一、创建模式对话框 1、分别添加如下三个对话框&#xff0c;其ID分别为IDD_ABOUT、IDD_CHAT、IDD_MFCTEST_DIALOG 双击”关于“按钮&#xff0c;添加相应的消息函数如下&#xff1a; void CMFCTestDlg::OnAbout() {// TODO: Add your control notification handler code here…

Mobdata:2019大数据行业研究报告

来源&#xff1a;网络大数据未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&#xff0c;互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联网&…

怎样在MySQL中显示中文,而不出现乱码?

1、首先修改MySQL的服务器的编码方式为utf8。具体怎样修改&#xff0c; 可以参考http://blog.csdn.net/ywxk1314/article/details/51280839 2、修改好之后&#xff0c;如果我们想查看数据表中的内容&#xff0c;我们会发现&#xff0c;表中原来的中文会出现部分乱码。如下图所示…

全球回报最好的 40 个 VC 投资案例,我们可以从中学到什么?

来源&#xff1a;IT桔子&#xff08;itjuzi521&#xff09;美国知名创投研究机构 CBInsights 日前发布文章《From Alibaba to Zynga: 40 Of The Best VC Bets Of All Time And What We Can Learn From Them》&#xff0c;统计了他们所认为的 VC 最好回报的 40 个案例&#xff0…

php 实现同一个账号同时只能一个人登录

php 实现同一个账号同时只能一个人登录 张映 发表于 2015-01-22 分类目录&#xff1a; php 标签&#xff1a;mysql, nginx, openfire, php, redis 以前考虑过这个问题&#xff0c;今天实现了一下&#xff0c;挺快的&#xff0c;从研究到开发完成差不多4个小时。有点类似QQ&…

空间简史-人类认识空间的旅程与其对强化学习的启示

来源&#xff1a;混沌巡洋舰摘要&#xff1a;本文是对okeefe 1978(栅格细胞发现者&#xff0c; 2014诺贝尔奖得主)的论文 cognitive map 的总结和延申。一 空间的先验与后验之争对于我们在其中生存和繁衍的空间&#xff0c; 是如何在我们的心理世界表达的&#xff0c; 这是一…

MFC中文件打开与保存

1、文件打开与保存 // NotePad01Dlg.cpp : implementation file //#include "stdafx.h" #include "NotePad01.h" #include "NotePad01Dlg.h"#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] __FILE__; #endif/ …

《经济学人》万字长文:DeepMind和谷歌的AI拉锯战

大数据文摘出品来源&#xff1a;Economics编译&#xff1a;橡树_hiangsug、林安安、小七、张秋玥摘要&#xff1a;Deepmind或许是当今世界对AGI影响最深远的公司。《经济学人》近日长文撰写了这家明星AI公司及其创始人的故事。通过对二十余名内部人士的采访&#xff0c;研究了这…

MFC制作计算器

1、代码如下&#xff1a; // zsjsqDlg.cpp : implementation file //#include "stdafx.h" #include "zsjsq.h" #include "zsjsqDlg.h"#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] __FILE__; #endif/ // CAb…

AI2:预计2030年中国AI研究或领跑全球

来源&#xff1a;网络大数据据美国科技媒体GeekWire报道&#xff0c;美国西雅图艾伦人工智能研究所(AI2)的一项最新分析表明&#xff0c;到2030年&#xff0c;中国有望成为人工智能领域的全球领跑者。A12研究所对人工智能领域最具影响力的研究论文加以统计&#xff0c;并利用语…

MFC中树形控件的应用——电话簿

一、电话薄的代码如下&#xff1a; 1、 // PhoneDlg.cpp : implementation file //#include "stdafx.h" #include "Phone.h" #include "PhoneDlg.h" #include "AddDlg.h" #include "ModifyDlg.h" #ifdef _DEBUG #define ne…

一口气逛完AWE的10个展馆 我观察出了三大趋势

来源&#xff1a;网易智能走进任何一个展位&#xff0c;你都可以感受到人工智能大脑的神奇之处。3月14日&#xff0c;中国家电及消费电子博览会&#xff08;AWE&#xff09;在上海开幕&#xff0c;如果说2018年AWE是AI赋能的开局之年&#xff0c;那对于2019年而言&#xff0c;A…

下一次工业革命:计算生物学与生物平台

来源&#xff1a;资本实验室人类科技的进步一直离不开两个方向的并行&#xff1a;一是不断扩大对外部世界的探索&#xff0c;例如新元素与新材料的发现、月球与火星探险、极地气候变化研究&#xff1b;一个是不断深化对我们自身身体与生命的认识&#xff0c;例如手术技术开发、…

MFC制作打地鼠小游戏

一、游戏说明如下&#xff1a; 打中老鼠加一分&#xff0c;当得分值小于10分时&#xff0c;老鼠每0.8秒出现一次&#xff0c;当得分值大于等于10分并且小于50分时&#xff0c;老鼠每0.6秒出现一次。当得分值大于等于50分时&#xff0c;老鼠每0.4秒出现一次。这个游戏是参考别人…