MFC-4简单的窗口重绘(非部分重绘)

简介: #include #include "resource.h" #include //定义模板类的头文件 class MyDocument : public CDocument { public: CArray pArray;// void AddPoint(CPoint p) { pArray.
#include <afxwin.h>
#include "resource.h"
#include <afxtempl.h>   //定义模板类的头文件

class MyDocument : public CDocument
{
public:
	CArray<CPoint,CPoint &> pArray;//<保存的数据类型,读取保存数据类型的返回值>
	void AddPoint(CPoint p)
	{
		pArray.Add(p);
	}
	CPoint GetPoint(int i)
	{
		return pArray[i];
	}
	int GetSize()
	{
		return pArray.GetSize();
	}
	DECLARE_DYNCREATE(MyDocument)//声明run-time类
	DECLARE_MESSAGE_MAP()
};

IMPLEMENT_DYNCREATE(MyDocument,CDocument)//声明MyDocument为run-time类
BEGIN_MESSAGE_MAP(MyDocument,CDocument)
END_MESSAGE_MAP();

class MyView : public CView
{
public:
	void OnDraw(CDC * aDC)//必须重载的虚函数,重绘函数
	{
		MyDocument *doc = (MyDocument *)GetDocument();//取得当前Document的指针
		int num = doc->GetSize();
		int i;
		for(i=0;i<num;++i)
		{
			CPoint point = doc->GetPoint(i);
			aDC->SetPixel(point,RGB(255,0,0));
		}
	}

	afx_msg void OnLButtonDown(UINT,CPoint point)
	{
		SetCapture();//取得鼠标消息的接收权
	}

	afx_msg void OnMouseMove(UINT,CPoint point)
	{
		if(this == GetCapture())
		{
			CClientDC aDC(this);//建立画布
			aDC.SetPixel(point,RGB(255,0,0));
			MyDocument *doc = (MyDocument *)GetDocument();
			doc->AddPoint(point);
		}
	}

	afx_msg void OnLButtonUp(UINT,CPoint point)
	{
		::ReleaseCapture();
	}

	DECLARE_MESSAGE_MAP()
	DECLARE_DYNCREATE(MyView)//声明为run-time类
};

BEGIN_MESSAGE_MAP(MyView,CView)
	ON_WM_LBUTTONDOWN()
	ON_WM_MOUSEMOVE()
	ON_WM_LBUTTONUP()
END_MESSAGE_MAP()

IMPLEMENT_DYNCREATE(MyView,CView)//声明MyView为run-time类

class MyFrame:public CFrameWnd
{
	DECLARE_DYNCREATE(MyFrame)//声明run-time类
	DECLARE_MESSAGE_MAP()
};

BEGIN_MESSAGE_MAP(MyFrame,CFrameWnd)
END_MESSAGE_MAP()

IMPLEMENT_DYNCREATE(MyFrame,CFrameWnd)//声明MyFrame为run-time类
	 
class MyApp:public CWinApp
{
public:
	BOOL InitInstance()
	{
		CDocument *doc;//指向文件的指针
		CSingleDocTemplate * DocTemplate;//文件指向单文档模板对象的指针
		DocTemplate = new CSingleDocTemplate(
			IDR_MENU1,//用于单文档框架之资源标志符
			RUNTIME_CLASS(MyDocument),//单文档窗口的Document类
			RUNTIME_CLASS(MyFrame),//单文档窗口的窗口框架类
			RUNTIME_CLASS(MyView)//单文档窗口的View类
			);//建立单文档模板对象

		AddDocTemplate(DocTemplate);//将单文档模板对象设置给MyApp;

		doc = DocTemplate->CreateNewDocument();//建立一个新的文档

		m_pMainWnd = DocTemplate->CreateNewFrame(doc,NULL);//建立一个窗口框架

		DocTemplate->InitialUpdateFrame((CFrameWnd*)m_pMainWnd,doc);//初始化窗口框架并连接view

		m_pMainWnd->ShowWindow(SW_SHOW);//显示窗口
		return true;
	}
} a_app;//建立应用程序对象
目录
相关文章
|
6月前
|
存储
Qt无边框窗口可拖动
Qt无边框窗口可拖动
|
C++ Windows
2.1 窗口和控件
2.1 窗口和控件
2.1 窗口和控件
C#(三十五)之在滚动窗口中绘图
窗体中的三个属性: Size:窗体大小(包括标题栏和边框) ClientSize:工作区大小(不包括标题栏和边框) AutoScrollMinSize:出现滚动条的最小尺寸
219 0
C#(三十五)之在滚动窗口中绘图
|
消息中间件 调度
Qt | 关于重绘事件处理函数 paintEvent()
关于页面刷新和绘制的操作。
892 0
QT软件开发: 点击鼠标在窗口里绘制矩形(窗口透明背景)
QT软件开发: 点击鼠标在窗口里绘制矩形(窗口透明背景)
544 0
QT软件开发: 点击鼠标在窗口里绘制矩形(窗口透明背景)
QT隐藏窗口标题栏、最大化、最小化、关闭按钮
QT隐藏窗口标题栏、最大化、最小化、关闭按钮
1455 0
Qt6-鼠标移动窗口
新版的Qt6 鼠标事件中函数是有更新了,不过帮助文档还没有更新过来。希望官方也要快速同步呦。 在Qt5中代码
213 0
|
开发工具
MFC窗口特效之动画效果(一) .
最近在学习MFC的过程中,看到一个窗口动画特效例子,不过它是在一个对话框里面嵌入效果,我想如果能把它的代码提取出来再写成一个窗口动画类就好了。于是便着手写了这个类,你可以去CSND下载这个代码运行看看。
1316 0
MFC窗口特效之动画效果(一) .
Qt 控件随窗口缩放
在Qt的界面设计中,我们有时候希望窗口在最大化的时候,上面的控件也跟着缩放,那么我们就需要调整控件的SizePolicy属性,关于这个属性的讲解请参见我之前的博客Qt SizePolicy 属性,由于窗口的拉伸,会导致控件的拉伸,有时候我们只需要某一个或者某几个控件被拉伸,那么我们可以将需要拉伸的控件的Horizontal Policy设为Minimum,表示可以放大不能缩小,然后将不希望拉伸的设为Fixed,设置好了之后,我们在空白处点击鼠标右键,选择Lay Out,选择其中的Lay Out in a Grid,如果有不合理的地方继续进行调整即可。
3646 0