>_<: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. [游戏模版2] 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.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.lang.NoClassDefFoundError: com/google/common/base/Function)

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

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

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

  8. Exception in thread "main" java.lang.UnsupportedClassVersionError: com/google/common/base/Function : Unsupported major.minor version 52.0的解决办法(图文详解)

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

  9. 浏览器启动不起来java.lang.NoClassDefFoundError: com/google/common/base/Function

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

随机推荐

  1. ajax请求后根据条件进行页面跳转

    $.ajx({ url: "@Url.Action("DetectCorporationCompetencyCreated", "DataBase") ...

  2. Python全栈开发day3

    1.Pycharm使用介绍 1.1 新建py文件自动添加python和编码 1.2 更改pycharm默认字体和风格 点击左上角“file”-->“Settings”(或者用“Ctrl+Alt+ ...

  3. 关于 this 和 prototype 的理解

    1:this 的理解比较好的书是 <Javascript语言精粹> 平时我们全局写 var a = 1, 其实就是 window.a = 1; var f = function(){},  ...

  4. 9.springMVC中的拦截器

    springMVC中的拦截器大概大致可以分为以下几个步骤去学习: 1.自定义一个类实现HandlerInterceptor接口,这里要了解其中几个方法的作用 2.在springMVC的配置文件中添加拦 ...

  5. 博客的开端,找对象不再new

    今天是第一次用blog,小白开始完善了!! 希望大家多多照顾一下.

  6. POJ 2155 Matrix (二维树状数组)

    Matrix Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 17224   Accepted: 6460 Descripti ...

  7. C++STL学习笔记_(1)string知识

    /*============================================ string是STL的字符串类型,通常用来表示字符串 = ======================== ...

  8. iframe跨域访问

    js跨域是个讨论很多的话题.iframe跨域访问也被研究的很透了. 一般分两种情况: 一. 是同主域下面,不同子域之间的跨域: 同主域,不同子域跨域,设置相同的document.domian就可以解决 ...

  9. 加载form表单

    var row = $('#dg').datagrid('getData').rows[rowIndex];      $('#moneyff').form('load', row);//row 可以 ...

  10. R--相关分布函数、统计函数的使用

    分布函数家族: *func()r : 随机分布函数d : 概率密度函数p : 累积分布函数q : 分位数函数 func()表示具体的名称如下表: 例子 #r : 随机分布函数 #d : 概率密度函数 ...