MFC 求大神

我用VS2012非向导空项目MFC动态库Unicode在CMainFrame中直接添加WM_paint消息函数时就能画图了附上代码,但是为什么用了MFC类向导单文档在CM... 我用VS2012 非向导 空项目 MFC动态库 Unicode 在CMainFrame 中直接添加WM_paint消息函数时就能画图了附上代码,但是为什么用了 MFC类向导 单文档 在CMainFrame中添加就不行了 而要在CView的子类中ONpaint才行?
#include<afxwin.h>
class CMainFrame:public CFrameWnd
{
public:
CMainFrame()
{
Create(NULL,TEXT("asd"));
}

DECLARE_MESSAGE_MAP()
afx_msg void OnPaint();
};
class CMyApp:public CWinApp
{
public:
virtual BOOL InitInstance();
};
CMyApp theApp;

BOOL CMyApp::InitInstance()
{
// TODO: 在此添加专用代码和/或调用基类

CMainFrame*pmain=new CMainFrame();
m_pMainWnd=pmain;
pmain->ShowWindow(SW_SHOW);
pmain->UpdateWindow();
return CWinApp::InitInstance();
}
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_WM_PAINT()
END_MESSAGE_MAP()
class CMyView:public CView
{
public:

DECLARE_MESSAGE_MAP()
afx_msg void OnPaint();
};

void CMainFrame::OnPaint()
{
CPaintDC dc(this); // device context for painting
CPen pen1(PS_DASH,10,RGB(0,255,0));
dc.SelectObject(&pen1);
dc.Rectangle(20,20,90,90);
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CFrameWnd::OnPaint()
}
BEGIN_MESSAGE_MAP(CMyView, CView)
ON_WM_PAINT()
END_MESSAGE_MAP()

void CMyView::OnPaint()
{
CPaintDC dc(this); // device context for painting

// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CView::OnPaint()
CPen pen1(PS_DASH,10,RGB(0,255,0));
dc.SelectObject(&pen1);
dc.Ellipse(100,100,200,200);
}
展开
 我来答
xth21
2015-07-22 · TA获得超过471个赞
知道小有建树答主
回答量:603
采纳率:55%
帮助的人:449万
展开全部
不是不行,是CMainFrame中画的Rectangle被CMyView画的Ellipse挡住了看不到。
你把
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
里的CFrameWnd::OnCreate注释掉(不再创建CMyView)就能看到CMainFrame中画的Rectangle了。
追问
没有视图类的窗口 可以直接画图OnPaint么?
来自:求助得到的回答
AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式