在View类中如何得到Dialog类的数据?

Lingoesforstudy 2011-03-22 05:47:27
想用MFC写一个程序,实现画一条过给定两点的直线。

我建立了一个单文档工程,又在它菜单的“帮助”后加入了一个“输入”项;

在它的View类中增加了两个CPoint成员变量m_p1,m_p2;

当单击“输入”时,就弹出一个模态对话框。

在这个对话框中可以输入4个数字,数字将赋值给View类中的成员变量m_p1,m_p2;

当单击这个对话框的“确定”时,对话框关闭,
这时在“输入”项后面又增加了一个“画线”项。

这时如果单击“画线”就会在View上画出一条过m_p1,m_p2两点的直线!




通过下面的语句可以实现给View类中的成员变量m_p1,m_p2赋值:

m_p1.x=GetDlgItemInt(IDC_EDIT1);
m_p1.y=GetDlgItemInt(IDC_EDIT2);
m_p2.x=GetDlgItemInt(IDC_EDIT3);
m_p2.y=GetDlgItemInt(IDC_EDIT4);

我的问题是:
1、这些语句要写在哪个文件中的什么函数中?
2、实现画线功能的语句是写在View类的OnDraw中,还是要写在“画线”的响应函数中?


...全文
122 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
King_hhuang 2011-03-22
  • 打赏
  • 举报
回复
你需要传值的话,最后还是在对话框窗口中获得View的指针pView,然后在确定的时候执行:
pView->m_p1.x=GetDlgItemInt(IDC_EDIT1);
pView->m_p1.y=GetDlgItemInt(IDC_EDIT2);
pView->m_p2.x=GetDlgItemInt(IDC_EDIT3);
pView->m_p2.y=GetDlgItemInt(IDC_EDIT4);
并且将View类绘图的标志位设置为true
pView->m_EnabelDraw = true;

另外你的画图还是在View类的OnDraw中做吧,判断标志位为true时,执行绘图:
if(m_EnabelDraw)
{
pDC->MoveTo(m_p1);
pDC->LineTo(m_p2);

}
leotody 2011-03-22
  • 打赏
  • 举报
回复
负责数据管理的应该是CDocument类,负责数据输出与用户界面交互的是CView类。
CView类的OnDraw()函数,它负责文档对象的数据在用户视图区的显示输出。
z8323664 2011-03-22
  • 打赏
  • 举报
回复
响应鼠标左键消息
然后:
CPaintDC dc(this)
dc.MoveTo(point);
dc.LineTo(m_p1,m_p2);

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧