[游戏模版1] MFC最小框架(base function including)

简介:


 

>_<:Here are the template of mini-MFC include:

  • CPen,CBrush,Front,Paint Line and some other graph.
  • OnPaint message,OnLeftButtonDown message,you can through it know more

Hello.h

复制代码
 1 #include<afxwin.h>
 2 class CMyApp:public CWinApp
 3 {
 4 public:
 5     virtual BOOL InitInstance();
 6 };
 7 class CMainWindow:public CFrameWnd
 8 {
 9 public:
10     CMainWindow();
11 protected:
12     afx_msg void OnPaint();
13     afx_msg void OnLButtonDown(UINT m_nFlags,CPoint point);
14     DECLARE_MESSAGE_MAP();
15 };
复制代码

Hello.cpp

复制代码
  1 #include<afxwin.h>
  2 #include<math.h>
  3 #include"Hello.h"
  4 #define SEGMENTS 500
  5 #define PI 3.1415926
  6 
  7 int PenStyle[7]={PS_SOLID,PS_DASH,PS_DOT,PS_DASHDOT,PS_DASHDOTDOT,PS_NULL,PS_INSIDEFRAME};//实线\宽\窄\宽+窄\宽+2窄\没有\实线不外伸
  8 int PenNum=0;
  9 int BrushStye[6]={HS_BDIAGONAL,HS_FDIAGONAL,HS_CROSS,HS_HORIZONTAL,HS_DIAGCROSS,HS_VERTICAL};//45\135\90交叉\0\45交叉\90
 10 int BrushNum=0;
 11 
 12 CMyApp myApp;
 13 //////////////////////////////////////////////
 14 //CMyApp member function
 15 BOOL CMyApp::InitInstance()                   //初始化函数
 16 {
 17     m_pMainWnd=new CMainWindow;
 18     m_pMainWnd->ShowWindow(m_nCmdShow);
 19     m_pMainWnd->UpdateWindow();
 20     return TRUE;
 21 }
 22 /////////////////////////////////////////////
 23 //CMainWindow message map and member function
 24 BEGIN_MESSAGE_MAP(CMainWindow,CFrameWnd)           //消息映射
 25     ON_WM_PAINT()
 26     ON_WM_LBUTTONDOWN()
 27 END_MESSAGE_MAP()
 28 
 29 CMainWindow::CMainWindow()      //创建窗口
 30 {
 31     Create(NULL,_T("The Hello"),WS_OVERLAPPED,CRect(20,40,640,440));//CFrameWnd下的成员函数8个参数,6个默认
 32 }                               //这个参数产生垂直滚动条
 33 
 34 void CMainWindow::OnPaint()
 35 {
 36 
 37     CRect rect;
 38     GetClientRect(&rect);
 39 
 40     /*72点,Arial,并带有下拉阴影生成的“Hello MFC" 
 41     CFont font;
 42     font.CreatePointFont(720,_T("Arial"));//创建72点,Arial字体
 43 
 44     CPaintDC dc(this);
 45     dc.SelectObject(&font);
 46     dc.SetBkMode(TRANSPARENT);//背景模式 设为透明
 47 
 48     CString string=_T("Hello MFC");
 49 
 50     rect.OffsetRect(16,16);//从窗口中心向右向下偏移几个像素点的位置
 51     dc.SetTextColor(RGB(192,192,192));
 52     dc.DrawText(string,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);
 53 
 54     rect.OffsetRect(-16,-16);
 55     dc.SetTextColor(RGB(0,0,0));
 56     dc.DrawText(string,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);//单行、水平、竖直居中的文本
 57     */
 58 
 59     /*LOFGFONT 自定义字体 呈现出旋转效果
 60     CPaintDC dc(this);
 61     dc.SetViewportOrg(rect.Width()/2,rect.Height()/2);
 62     dc.SetBkMode(TRANSPARENT);
 63 
 64     for(int i=0;i<3600;i+=360){
 65         LOGFONT lf;//自己创建一种字体
 66         ::ZeroMemory (&lf,sizeof(lf));
 67         lf.lfHeight=180;     //26个像素点
 68         lf.lfWeight=FW_BOLD; //粗黑
 69         //lf.lfItalic=TRUE;    //倾斜
 70         lf.lfEscapement=i;     //配合使用每次旋转36度
 71         lf.lfOrientation=i;
 72         ::lstrcpy(lf.lfFaceName,_T("Arial"));
 73         CFont font;
 74         font.CreatePointFontIndirect(&lf);
 75 
 76         CFont* pOldFont=dc.SelectObject(&font);
 77         dc.TextOutA(0,0,CString(_T("Hello,MFC")));
 78         dc.SelectObject(pOldFont);
 79     }
 80     */
 81 }
 82 
 83 void CMainWindow::OnLButtonDown(UINT m_nFlags,CPoint point)//点击鼠标左键画图
 84 {
 85     //CClientDC dc(this);
 86     CPaintDC dc(this);
 87     CRect rect;
 88     GetClientRect(&rect);
 89     dc.Rectangle(rect);
 90     
 91 
 92     //dc.SetViewportOrg(rect.Width()/2,rect.Height()/2);
 93     
 94 
 95     //dc.SetROP2(R2_BLACK);//绘图模式:颜色操作;2.1.3
 96     //dc.MoveTo(rect.left,rect.top);
 97     //dc.LineTo(rect.right,rect.bottom);
 98 
 99     //POINT aPoint[5]={0,0,0,100,100,100,100,0,0,0};
100     //dc.Polyline(aPoint,5);         //将一系列点用线段连起来
101 
102     //POINT bPoint[4]={0,100,100,100,100,0};
103     //dc.MoveTo(0,0);
104     //dc.PolylineTo(bPoint,4);          //从当前位置开始将一系列的点用线段连起来,并将当前位置移折致折线的终点
105     
106     //int nWidth=rect.Width();            //画正弦曲线
107     //int nHeight=rect.Height();
108 
109     //CPoint aPoint[SEGMENTS];
110     //for(int i=0;i<SEGMENTS;i++){
111     //    aPoint[i].x=(i*nWidth)/SEGMENTS;
112     //    aPoint[i].y=(int)((nHeight/2)*(1-(sin((2*PI*i)/SEGMENTS))));
113     //}
114     //dc.Polyline(aPoint,SEGMENTS);
115 
116     /*画笔的创建和加载
117     CPen cPen(PenStyle[(PenNum++)%7],1,RGB(192,0,0));//==cPen.CreatePen(...);
118     dc.SelectObject(&cPen);
119     CBrush cBrush(BrushStye[(BrushNum++)%6],RGB(255,0,0));
120     dc.SelectObject(&cBrush);
121     */
122 
123     /*扩展笔____必须是通路
124     LOGBRUSH lb;
125     lb.lbStyle=BS_SOLID;
126     lb.lbColor=RGB(0,255,0);
127     CPen pen(PS_GEOMETRIC|PenStyle[(PenNum++)%7]|PS_ENDCAP_FLAT|
128         PS_JOIN_ROUND,3,&lb);
129     CPen* pOldPen=dc.SelectObject(&pen);
130     */
131 
132 
133     /*画刷原点
134     CPoint point(x1,y1);     //矩形左上角的逻辑坐标
135     dc.LPtoDP(&point);       //逻辑坐标转换成设备坐标     
136     point.x %= 8;            
137     point.y %= 8;
138     cBrush.UnrealizeObject();//允许画刷原点移动
139     dc.SetBrushOrg(point);   //0~7之间
140     dc.SelectObject(&cBrush);
141     dc.Rectangle(x1,y1,x2,y2);
142     */
143 
144 
145     /*建立通路
146     dc.BeginPath();
147     dc.MoveTo(0,0);
148     dc.LineTo(100,200);
149     dc.LineTo(200,100);
150     dc.CloseFigure();
151     dc.EndPath();
152     dc.StrokePath();
153     */
154 
155 
156     /*ARC
157     CRect rect0(0,0,200,100);
158     CPoint cPoint1(0,0);
159     CPoint cPoint2(200,100);
160     dc.Rectangle(rect0);
161     dc.Arc(rect0,cPoint1,cPoint2);//外接矩形+从中心引出的两个边界线所夹的范围
162     dc.MoveTo(0,0);
163     dc.LineTo(200,100);
164 
165     CRect rect1(0,102,200,202);
166     CPoint cPoint3(0,102);
167     CPoint cPoint4(200,202);    
168     dc.Rectangle(rect1);
169     dc.ArcTo(rect1,cPoint3,cPoint4);
170     CPoint cPointNow=dc.GetCurrentPosition();//终点坐标
171     */
172 
173     /*纳克
174     POINT aPoint1[4]={120,100,120,200,250,150,500,40};
175     POINT aPoint2[4]={120,100,50,350,250,200,500,40};
176     dc.PolyBezier(aPoint1,4);
177     dc.PolyBezier(aPoint2,4);
178     */
179 
180 
181 
182     //dc.SetMapMode(MM_TEXT);//映射模式2.1.4 按比例缩放输出
183     //dc.Ellipse(0,0,100,100);//矩形内切圆(弧)
184     //dc.Ellipse(rect.right-100,rect.bottom-100,rect.right,rect.bottom);
185     //dc.Ellipse(point.x,point.y,point.x+100,point.y+100);//鼠标位置
186 
187     //dc.SetMapMode(MM_ISOTROPIC);//可编程映射模式,自定义比例缩放(MM_ANISOTROPIC单位长度可以不同;MM_ISOTROPIC单位长度相同)
188     //dc.SetWindowExt(500,500);     //设置窗口逻辑值为(0,0)到(500,500)
189     //dc.SetViewportExt(rect.Width(),rect.Height());
190     //dc.Ellipse(0,0,500,500);
191 
192 }
复制代码
相关文章
|
编译器 C语言 C++
C++服务器框架开发9——日志系统LogFormatter_4/各个类的关系梳理/std::function/std::get
C++服务器框架开发9——日志系统LogFormatter_4/各个类的关系梳理/std::function/std::get
106 0
|
存储 JavaScript 前端开发
【JavaScript框架封装】使用Prototype给Array,String,Function对象的方法扩充
版权声明:本文为博主原创文章,未经博主允许不得转载。更多学习资料请访问我爱科技论坛:www.52tech.tech https://blog.csdn.net/m0_37981569/article/details/81055991 ...
1143 0
|
Android开发 Spring
An internal error occurred during: "Building UI model". com/google/common/base/Function
版权声明:本文为 testcs_dn(微wx笑) 原创文章,非商用自由转载-保持署名-注明出处,谢谢。 https://blog.csdn.net/testcs_dn/article/details/78798610 ...
1568 0
|
Android开发 Spring
An internal error occurred during: &quot;Building UI model&quot;. com/google/common/base/Function
An internal error occurred during: "Building UI model". com/google/common/base/FunctionEclipse Neon.2 Release (4.6.2) 安装了 STS(Spring Tool Suite) 后,创建项目时遇到些问题。
2757 0
|
16天前
|
中间件 Docker Python
【Azure Function】FTP上传了Python Function文件后,无法在门户页面加载函数的问题
通过FTP上传Python Function至Azure云后,出现函数列表无法加载的问题。经排查,发现是由于`requirements.txt`中的依赖包未被正确安装。解决方法为:在本地安装依赖包到`.python_packages/lib/site-packages`目录,再将该目录内容上传至云上的`wwwroot`目录,并重启应用。最终成功加载函数列表。
|
2月前
|
JavaScript
箭头函数与普通函数(function)的区别
箭头函数是ES6引入的新特性,与传统函数相比,它有更简洁的语法,且没有自己的this、arguments、super或new.target绑定,而是继承自外层作用域。箭头函数不适用于构造函数,不能使用new关键字调用。
|
2月前
|
数据可视化 开发者 索引
详解Wireshark LUA插件函数:function p_myproto.dissector(buffer, pinfo, tree)
在 Wireshark 中,LUA 插件通过 `function p_myproto.dissector(buffer, pinfo, tree)` 扩展协议解析能力,解析自定义应用层协议。参数 `buffer` 是 `PacketBuffer` 类型,表示原始数据包内容;`pinfo` 是 `ProtoInfo` 类型,包含数据包元信息(如 IP 地址、协议类型等);`tree` 是
79 1
|
2月前
|
JavaScript
箭头函数与普通函数(function)的区别
箭头函数是ES6引入的新语法,相比传统函数表达式更简洁,且没有自己的this、arguments、super或new.target绑定,而是继承自外层作用域。这使得箭头函数在处理回调和闭包时更加灵活方便。
|
2月前
|
C++ 容器
函数对象包装器function和bind机制
函数对象包装器function和bind机制
21 0
|
4月前
【Azure Durable Function】PowerShell Activity 函数遇见 Newtonsoft.Json.JsonReaderException: The reader's MaxDepth of 64 has been exceeded.
【Azure Durable Function】PowerShell Activity 函数遇见 Newtonsoft.Json.JsonReaderException: The reader's MaxDepth of 64 has been exceeded.

热门文章

最新文章