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

时间:2022-01-29 09:25:26

>_<: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

 #include<afxwin.h>
class CMyApp:public CWinApp
{
public:
virtual BOOL InitInstance();
};
class CMainWindow:public CFrameWnd
{
public:
CMainWindow();
protected:
afx_msg void OnPaint();
afx_msg void OnLButtonDown(UINT m_nFlags,CPoint point);
DECLARE_MESSAGE_MAP();
};

Hello.cpp

 #include<afxwin.h>
#include<math.h>
#include"Hello.h"
#define SEGMENTS 500
#define PI 3.1415926 int PenStyle[]={PS_SOLID,PS_DASH,PS_DOT,PS_DASHDOT,PS_DASHDOTDOT,PS_NULL,PS_INSIDEFRAME};//实线\宽\窄\宽+窄\宽+2窄\没有\实线不外伸
int PenNum=;
int BrushStye[]={HS_BDIAGONAL,HS_FDIAGONAL,HS_CROSS,HS_HORIZONTAL,HS_DIAGCROSS,HS_VERTICAL};//45\135\90交叉\0\45交叉\90
int BrushNum=; CMyApp myApp;
//////////////////////////////////////////////
//CMyApp member function
BOOL CMyApp::InitInstance() //初始化函数
{
m_pMainWnd=new CMainWindow;
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}
/////////////////////////////////////////////
//CMainWindow message map and member function
BEGIN_MESSAGE_MAP(CMainWindow,CFrameWnd) //消息映射
ON_WM_PAINT()
ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP() CMainWindow::CMainWindow() //创建窗口
{
Create(NULL,_T("The Hello"),WS_OVERLAPPED,CRect(,,,));//CFrameWnd下的成员函数8个参数,6个默认
} //这个参数产生垂直滚动条 void CMainWindow::OnPaint()
{ CRect rect;
GetClientRect(&rect); /*72点,Arial,并带有下拉阴影生成的“Hello MFC"
CFont font;
font.CreatePointFont(720,_T("Arial"));//创建72点,Arial字体 CPaintDC dc(this);
dc.SelectObject(&font);
dc.SetBkMode(TRANSPARENT);//背景模式 设为透明 CString string=_T("Hello MFC"); rect.OffsetRect(16,16);//从窗口中心向右向下偏移几个像素点的位置
dc.SetTextColor(RGB(192,192,192));
dc.DrawText(string,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER); rect.OffsetRect(-16,-16);
dc.SetTextColor(RGB(0,0,0));
dc.DrawText(string,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);//单行、水平、竖直居中的文本
*/ /*LOFGFONT 自定义字体 呈现出旋转效果
CPaintDC dc(this);
dc.SetViewportOrg(rect.Width()/2,rect.Height()/2);
dc.SetBkMode(TRANSPARENT); for(int i=0;i<3600;i+=360){
LOGFONT lf;//自己创建一种字体
::ZeroMemory (&lf,sizeof(lf));
lf.lfHeight=180; //26个像素点
lf.lfWeight=FW_BOLD; //粗黑
//lf.lfItalic=TRUE; //倾斜
lf.lfEscapement=i; //配合使用每次旋转36度
lf.lfOrientation=i;
::lstrcpy(lf.lfFaceName,_T("Arial"));
CFont font;
font.CreatePointFontIndirect(&lf); CFont* pOldFont=dc.SelectObject(&font);
dc.TextOutA(0,0,CString(_T("Hello,MFC")));
dc.SelectObject(pOldFont);
}
*/
} void CMainWindow::OnLButtonDown(UINT m_nFlags,CPoint point)//点击鼠标左键画图
{
//CClientDC dc(this);
CPaintDC dc(this);
CRect rect;
GetClientRect(&rect);
dc.Rectangle(rect); //dc.SetViewportOrg(rect.Width()/2,rect.Height()/2); //dc.SetROP2(R2_BLACK);//绘图模式:颜色操作;2.1.3
//dc.MoveTo(rect.left,rect.top);
//dc.LineTo(rect.right,rect.bottom); //POINT aPoint[5]={0,0,0,100,100,100,100,0,0,0};
//dc.Polyline(aPoint,5); //将一系列点用线段连起来 //POINT bPoint[4]={0,100,100,100,100,0};
//dc.MoveTo(0,0);
//dc.PolylineTo(bPoint,4); //从当前位置开始将一系列的点用线段连起来,并将当前位置移折致折线的终点 //int nWidth=rect.Width(); //画正弦曲线
//int nHeight=rect.Height(); //CPoint aPoint[SEGMENTS];
//for(int i=0;i<SEGMENTS;i++){
// aPoint[i].x=(i*nWidth)/SEGMENTS;
// aPoint[i].y=(int)((nHeight/2)*(1-(sin((2*PI*i)/SEGMENTS))));
//}
//dc.Polyline(aPoint,SEGMENTS); /*画笔的创建和加载
CPen cPen(PenStyle[(PenNum++)%7],1,RGB(192,0,0));//==cPen.CreatePen(...);
dc.SelectObject(&cPen);
CBrush cBrush(BrushStye[(BrushNum++)%6],RGB(255,0,0));
dc.SelectObject(&cBrush);
*/ /*扩展笔____必须是通路
LOGBRUSH lb;
lb.lbStyle=BS_SOLID;
lb.lbColor=RGB(0,255,0);
CPen pen(PS_GEOMETRIC|PenStyle[(PenNum++)%7]|PS_ENDCAP_FLAT|
PS_JOIN_ROUND,3,&lb);
CPen* pOldPen=dc.SelectObject(&pen);
*/ /*画刷原点
CPoint point(x1,y1); //矩形左上角的逻辑坐标
dc.LPtoDP(&point); //逻辑坐标转换成设备坐标
point.x %= 8;
point.y %= 8;
cBrush.UnrealizeObject();//允许画刷原点移动
dc.SetBrushOrg(point); //0~7之间
dc.SelectObject(&cBrush);
dc.Rectangle(x1,y1,x2,y2);
*/ /*建立通路
dc.BeginPath();
dc.MoveTo(0,0);
dc.LineTo(100,200);
dc.LineTo(200,100);
dc.CloseFigure();
dc.EndPath();
dc.StrokePath();
*/ /*ARC
CRect rect0(0,0,200,100);
CPoint cPoint1(0,0);
CPoint cPoint2(200,100);
dc.Rectangle(rect0);
dc.Arc(rect0,cPoint1,cPoint2);//外接矩形+从中心引出的两个边界线所夹的范围
dc.MoveTo(0,0);
dc.LineTo(200,100); CRect rect1(0,102,200,202);
CPoint cPoint3(0,102);
CPoint cPoint4(200,202);
dc.Rectangle(rect1);
dc.ArcTo(rect1,cPoint3,cPoint4);
CPoint cPointNow=dc.GetCurrentPosition();//终点坐标
*/ /*纳克
POINT aPoint1[4]={120,100,120,200,250,150,500,40};
POINT aPoint2[4]={120,100,50,350,250,200,500,40};
dc.PolyBezier(aPoint1,4);
dc.PolyBezier(aPoint2,4);
*/ //dc.SetMapMode(MM_TEXT);//映射模式2.1.4 按比例缩放输出
//dc.Ellipse(0,0,100,100);//矩形内切圆(弧)
//dc.Ellipse(rect.right-100,rect.bottom-100,rect.right,rect.bottom);
//dc.Ellipse(point.x,point.y,point.x+100,point.y+100);//鼠标位置 //dc.SetMapMode(MM_ISOTROPIC);//可编程映射模式,自定义比例缩放(MM_ANISOTROPIC单位长度可以不同;MM_ISOTROPIC单位长度相同)
//dc.SetWindowExt(500,500); //设置窗口逻辑值为(0,0)到(500,500)
//dc.SetViewportExt(rect.Width(),rect.Height());
//dc.Ellipse(0,0,500,500); }

[游戏模版1] MFC最小框架(base function including)的更多相关文章

  1. &lbrack;游戏模版2&rsqb; Win32最小框架

    >_<:Just the minimum Win32  frame don't have any other special function. //{{NO_DEPENDENCIES}} ...

  2. Unity3D游戏轻量级xlua热修复框架

    Unity3D游戏轻量级xlua热修复框架   一 这是什么东西 前阵子刚刚集成xlua到项目,目的只有一个:对线上游戏C#逻辑有Bug的地方执行修复,通过考察xlua和tolua,最终选择了xlua ...

  3. css 框架——base&period;css,作用是重设浏览器默认样式和提供通用原子类。自己留存

    今天发下我自己的 css 框架——base.css,作用是重设浏览器默认样式和提供通用原子类. @charset "utf-8"; /*! * @名称:base.css * @功能 ...

  4. MFC基本框架

    MFC基本框架 By  小戴 发表于 2006-12-21 15:59:00  MFC 应用程序框架 1. MFC 简介: MFC ( Microsoft Foundation Class )是由 ...

  5. Phaser是一款专门用于桌面及移动HTML5 2D游戏开发的开源免费框架

    Phaser是一款专门用于桌面及移动HTML5 2D游戏开发的开源免费框架,提供JavaScript和TypeScript双重支持,内置游戏对象的物理属性,采用Pixi.js引擎以加快Canvas和W ...

  6. Selenium 运行时出现错误(java&period;lang&period;NoClassDefFoundError&colon; com&sol;google&sol;common&sol;base&sol;Function)

    已经写好了java脚本,点击运行的过程中如果出现如下的错误提示时: java.lang.NoClassDefFoundError: com/google/common/base/Function 问题 ...

  7. 03、NetCore2&period;0下Web应用之搭建最小框架

    03.NetCore2.0下Web应用之搭建最小框架 这里我们不使用VS2017或者CLI命令的方式创建Asp.Net Core 2.0网页应用程序,而是完全手工的一点点搭建一个Web框架,以便更好的 ...

  8. Exception in thread &quot&semi;main&quot&semi; java&period;lang&period;UnsupportedClassVersionError&colon; com&sol;google&sol;common&sol;base&sol;Function &colon; Unsupported major&period;minor version 52&period;0的解决办法(图文详解)

    不多说,直接上干货! 问题详情 Exception in thread "main" java.lang.UnsupportedClassVersionError: com/goo ...

  9. 浏览器启动不起来java&period;lang&period;NoClassDefFoundError&colon; com&sol;google&sol;common&sol;base&sol;Function

    java.lang.NoClassDefFoundError: com/google/common/base/Function 原因:只有以下两个包 解决方案:导入 selenium-server-s ...

随机推荐

  1. Ubuntu安装和设置SSH服务

    1.安装 Ubuntu缺省安装了openssh-client,所以在这里就不安装了,如果你的系统没有安装的话,再用apt-get安装上即可. 安装ssh-server sudo apt-get ins ...

  2. PHP慕课网教程

    PHP入门篇:http://www.imooc.com/learn/54 3-2 如何定义变量 ”var_dump”函数可以将我们的变量的数据类型(后面小节会做介绍)显示出来. <?php $v ...

  3. spring中&commat;value注解需要注意

    首先,@value需要参数,这里参数可以是两种形式:@Value("#{configProperties['t1.msgname']}")或者@Value("${t1.m ...

  4. Flash Recovery Area 的备份

    Flash Recovery Area 的备份 备份命令是Flash recovery Area,该命令是Oracle 10g以后才有的.10g引进了flash recovery area,同时在rm ...

  5. 将app接口服务器改为dotnet core承载

    昨天我的一个 app 的接口服务器挂掉了,国外的小鸡意外的翻车,连同程序和数据一起,猝不及防.我的服务端程序是 asp.net mvc ,小鸡是 256 M 的内存跑不了 windows 系统,装的 ...

  6. 【原】Java学习笔记015 - 面向对象

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 传递 值类型参数 ...

  7. &num;WEB安全基础 &colon; HTTP协议 &vert; 0x15 HTTPS&colon;给你点颜色看看

    "你好,我是HTTPS,我只是披了个外壳,我还是原来的HTTP." 这是HTTPS叫我转达给你的话. HTTPS本质上就是HTTP,只不过加了点调料.它比HTTP更安全,使用了加密 ...

  8. CentOS 7 keepalived&plus;LVS

    LVS架构中 , 不管是NAT模式还是DR模式 , 当后端的RS宕机了 , 调度器还是会把请求转发到宕掉的RS上 , 然而keepalived可以解决该问题 , 它不仅仅有高可用的功能 , 还有负载均 ...

  9. the project already contains a form or module named pcm001怎麼解決

    the project already contains a form or module named pcm001怎麼解決 菜单Project -> Remove from project.. ...

  10. JS中点击事件冒泡阻止

    JS中点击事件冒泡阻止 解析: 一个div层'out',内含有一个div层'in'.如下: 两个层都绑定了点击事件,但是点击in层的时候,点击事件会出现冒泡现象,同时也会触发out层的点击事件. 但是 ...