用Visual C++编写一个SDI应用程序,按以下要求编程:
(1)执行"编辑/输入数据(I)..."命令打开标题为"输入数据"的对话框,通过该对话框输入X和Y坐标值,要求输入值在100到400范围内.(2)在视图中定义两个成员变量...
(1)执行"编辑/输入数据(I)..."命令打开标题为"输入数据"的对话框,通过该对话框输入X和Y坐标值,要求输入值在100到400范围内.
(2)在视图中定义两个成员变量,单击对话框的"确定"按钮时接收输入数据,并赋值给视图对象的两个成员变量,调用Invalidate()函数刷新窗口.
(3)在OnDraw()函数中添加代码,画一条从当前位置到输入坐标的直线. 展开
(2)在视图中定义两个成员变量,单击对话框的"确定"按钮时接收输入数据,并赋值给视图对象的两个成员变量,调用Invalidate()函数刷新窗口.
(3)在OnDraw()函数中添加代码,画一条从当前位置到输入坐标的直线. 展开
1个回答
2013-11-17
展开全部
MFC基础编程,你这个要求挺简单的,我们课本上貌似就有,不过我现在这里没有安装vc,你这个程序就是一些操作,也不好贴代码,如果你要是实在弄不出来,我回去帮你弄一下,然后把操作过程写清楚,把工程都发给你吧,不过至少得到明天,今天没时间。
现在把操作过程发给你吧,希望你能操作出来,我已经编译运行过了的。如果有问题,可能是你操作上的问题,我一步步操作然后一步步发给你。实在还有问题就找我交流吧,
1.新建MFC工程,命名MySdi,选择单文档,完成。
2.插入(insert)->资源(resources),选择Dialog,点击new(新建)。 //这步完成新建一个对话框资源
3.然后就是编辑这个资源了,画两个静态文本框提示x和y,画两个编辑框用来输入坐标的。
4.在对话框最上面点右键点击类向导,为资源添加一个新类,命名为CTestDlg。
5.给类CTestDlg添加成员变量POINT m_point,公有变量。然后在CTestDlg的构造函数中初始化
m_point.x=0;
m_point.y=0;
6.回到对话框资源编辑那里(就是刚才画图那里),在OK按钮双击确定然后进入OnOk()函数编写中。添加如下代码:
m_point.x=GetDlgItemInt(IDC_EDIT1);
m_point.y=GetDlgItemInt(IDC_EDIT2);
7.以上就弄好了对话框了,下面就是菜单和显示对话框的问题了。
首先在菜单资源中编辑中添加菜单项“输入数据(I)..”,ID为IDM_INPUT,caption为“输入数据(I)...\\tCtrl+I”,点击资源中Accelerator下的IDR_MAINFRAME然后添加快捷键(这个会吧。。。)。
8.回到刚才菜单资源编辑中,在输入数据菜单项上点击右键选择类向导添加菜单项的命令响应,选择CMySdiVie类,选择command,点击add function,edit exsiting进入代码编辑状态。添加如下代码:
CMyDialog dlg;
if(dlg.DoModal()==IDOK)
{
x=dlg.m_point.x;
y=dlg.m_point.y;
Invalidate();
}
然后给CMySdiView类添加成员变量x,y并在构造函数中初始化。
注意:还要在这个文件最上面添加如下代码:#include "TestDlg.h"
9.这个时候你可以编译试试,点菜单项可以弹出对话框了。
10.最后,就是在OnDraw()函数中添加如下代码:
pDC->MoveTo(0,0);
pDC->LineTo(x,y);
(我这里每次画一条原点到输入点的线,不知道你题目说的“画一条从当前位置到输入坐标的直线”中当前位置是什么意思,你也可以自己改一下坐标就可以画出你要的线了)。
哎,够详细吧,我可是画了几个小时啊,写这么详细,为了保证不出错,我先做出来了,然后重新做了一次,做一步写一步。如果你操作正确,肯定错不了。不过万一你还有什么问题就直接找我交流就是了。
不是吧,给你弄这么详细还不给个好评给我,我伤心啊。。。
现在把操作过程发给你吧,希望你能操作出来,我已经编译运行过了的。如果有问题,可能是你操作上的问题,我一步步操作然后一步步发给你。实在还有问题就找我交流吧,
1.新建MFC工程,命名MySdi,选择单文档,完成。
2.插入(insert)->资源(resources),选择Dialog,点击new(新建)。 //这步完成新建一个对话框资源
3.然后就是编辑这个资源了,画两个静态文本框提示x和y,画两个编辑框用来输入坐标的。
4.在对话框最上面点右键点击类向导,为资源添加一个新类,命名为CTestDlg。
5.给类CTestDlg添加成员变量POINT m_point,公有变量。然后在CTestDlg的构造函数中初始化
m_point.x=0;
m_point.y=0;
6.回到对话框资源编辑那里(就是刚才画图那里),在OK按钮双击确定然后进入OnOk()函数编写中。添加如下代码:
m_point.x=GetDlgItemInt(IDC_EDIT1);
m_point.y=GetDlgItemInt(IDC_EDIT2);
7.以上就弄好了对话框了,下面就是菜单和显示对话框的问题了。
首先在菜单资源中编辑中添加菜单项“输入数据(I)..”,ID为IDM_INPUT,caption为“输入数据(I)...\\tCtrl+I”,点击资源中Accelerator下的IDR_MAINFRAME然后添加快捷键(这个会吧。。。)。
8.回到刚才菜单资源编辑中,在输入数据菜单项上点击右键选择类向导添加菜单项的命令响应,选择CMySdiVie类,选择command,点击add function,edit exsiting进入代码编辑状态。添加如下代码:
CMyDialog dlg;
if(dlg.DoModal()==IDOK)
{
x=dlg.m_point.x;
y=dlg.m_point.y;
Invalidate();
}
然后给CMySdiView类添加成员变量x,y并在构造函数中初始化。
注意:还要在这个文件最上面添加如下代码:#include "TestDlg.h"
9.这个时候你可以编译试试,点菜单项可以弹出对话框了。
10.最后,就是在OnDraw()函数中添加如下代码:
pDC->MoveTo(0,0);
pDC->LineTo(x,y);
(我这里每次画一条原点到输入点的线,不知道你题目说的“画一条从当前位置到输入坐标的直线”中当前位置是什么意思,你也可以自己改一下坐标就可以画出你要的线了)。
哎,够详细吧,我可是画了几个小时啊,写这么详细,为了保证不出错,我先做出来了,然后重新做了一次,做一步写一步。如果你操作正确,肯定错不了。不过万一你还有什么问题就直接找我交流就是了。
不是吧,给你弄这么详细还不给个好评给我,我伤心啊。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询