#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)
DECLARE_MESSAGE_MAP()
};
IMPLEMENT_DYNCREATE(MyDocument,CDocument)
BEGIN_MESSAGE_MAP(MyDocument,CDocument)
END_MESSAGE_MAP();
class
MyView :
public
CView
{
public
:
void
OnDraw(CDC * aDC)
{
MyDocument *doc = (MyDocument *)GetDocument();
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)
};
BEGIN_MESSAGE_MAP(MyView,CView)
ON_WM_LBUTTONDOWN()
ON_WM_MOUSEMOVE()
ON_WM_LBUTTONUP()
END_MESSAGE_MAP()
IMPLEMENT_DYNCREATE(MyView,CView)
class
MyFrame:
public
CFrameWnd
{
DECLARE_DYNCREATE(MyFrame)
DECLARE_MESSAGE_MAP()
};
BEGIN_MESSAGE_MAP(MyFrame,CFrameWnd)
END_MESSAGE_MAP()
IMPLEMENT_DYNCREATE(MyFrame,CFrameWnd)
class
MyApp:
public
CWinApp
{
public
:
BOOL InitInstance()
{
CDocument *doc;
CSingleDocTemplate * DocTemplate;
DocTemplate =
new
CSingleDocTemplate(
IDR_MENU1,
RUNTIME_CLASS(MyDocument),
RUNTIME_CLASS(MyFrame),
RUNTIME_CLASS(MyView)
);
AddDocTemplate(DocTemplate);
doc = DocTemplate->CreateNewDocument();
m_pMainWnd = DocTemplate->CreateNewFrame(doc,NULL);
DocTemplate->InitialUpdateFrame((CFrameWnd*)m_pMainWnd,doc);
m_pMainWnd->ShowWindow(SW_SHOW);
return
true
;
}
} a_app;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统