(高分,急,在线等)MFC 类与类之间的问题(vc6.0)

一个普通的类A的int型成员变量x,要获得一个对话框B的编辑框(IDC_EDIT1)的值,编辑框的值需要用户输入,我想在A中用GetDlgItemInt()函数,但这个函... 一个普通的类A的int型成员变量x,要获得一个对话框B的编辑框(IDC_EDIT1)的值,编辑框的值需要用户输入,我想在A中用GetDlgItemInt()函数,但这个函数是需要B的句柄,请你们解决如下问题:
1.怎么在A中获得B的句柄。
2,即使或得句柄以后,用GetDlgItemInt()函数,能实现这样的功能,如果不行,请支招。谢谢,我在网上搜了很久,都是TMD废话加无用。。。
我希望你们不要给出这样的回答,不要用bug。
现在谁能回答第1个问题(在A中获得B的句柄)?????
给出代码;
只要正确,分给他
展开
 我来答
清风or朗月
2010-07-29 · TA获得超过1089个赞
知道小有建树答主
回答量:248
采纳率:0%
帮助的人:325万
展开全部
1,在A的.cpp文件中包含那个类的.h文件,然后实例化一个B的对象,那么B的句柄自然也就得到了,就是B的public数据成员。
2,理论上说GetDlgItemInt()是可以的,也可以使用GetDlgItem(),然后GetWindowText(),不过这样貌似有点麻烦。
对于这个功能你首先要把你的Edit里面的数值给传递给你和你的Edit绑定的变量,可以定义为CString类型的,也可以定义为其他的如:int,等等,然后让你的Edit处理EN_CHANGE消息,进行数据交换,当然你必须调用Update()才行。

你要是还不懂的话,我可以给你做一个,你需要的话就说一声....
还是给你看一个吧,和你需要的要求是一样的,但是题目对不上
void CSDI_FileOperationView::OnChangeEditChinese() //当控件的内容改变时,如:编辑框的内容变了,就会发出一个EN_CHANGE的消息
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CFormView::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.

// TODO: Add your control notification handler code here
CSDI_FileOperationDoc *pDoc=GetDocument();
UpdateData(TRUE);//当UpdateData()函数的参数是TRUE时,说明是把数据从控件传到控件相关联的控件变量,一般一次是把所有的控件和它相关联的变量全部更新

if(pDoc->fChinese!=m_Edit_Chinese)
{
pDoc->fChinese=m_Edit_Chinese;
m_Edit_Sum=m_Edit_Chinese+m_Edit_Math+m_Edit_English+m_Edit_Physics+m_Edit_Chemistry+m_Edit_Biology+m_Edit_Politics+m_Edit_History;
pDoc->fSum=m_Edit_Sum;
pDoc->SetModifiedFlag(TRUE);

UpdateData(FALSE);

这个的作用就是你的输入的值就和绑定Edit的变量绑定在一起了

我新建了对话框程序,在里面新建了一个普通类:Usually
在Usually的构造函数中得到了CtestDlg类的对话框的句柄:
代码如下:
#include "stdafx.h"
#include "test.h"
#include "Usually.h"

#include "TestDlg.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

Usually::Usually()
{
CTestDlg dlg;
HWND hWnd=dlg.m_hWnd;
GetDlgItemInt(hWnd,IDC_EDIT1,.....);

}

Usually::~Usually()
{

}

很容易就得到了B的句柄....
A526503998
2010-07-28 · 超过46用户采纳过TA的回答
知道小有建树答主
回答量:108
采纳率:88%
帮助的人:36.6万
展开全部
给对话框B添加一个变量,作为成员变量添加到A中。通过这个成员变量获取编辑框(IDC_EDIT1)。编辑框(IDC_EDIT1)一般添加为B中的一个变量(也可以不添)一般是CString类型的。需要整型的话在编辑框属性中有“数字”选项,选中即可。CString转int型也比较简单。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
来自美国认真的兔子
2010-07-28 · TA获得超过644个赞
知道小有建树答主
回答量:550
采纳率:100%
帮助的人:418万
展开全部
问题是,你在A类中用GetDlgItemInt()函数时,对话框B(或者说实例)还在内存中不呢?如果在的话你可以这样用HWND WINAPI GetWindow(
__in HWND hWnd,
__in UINT uCmd
);可以得到这个对话框B的句柄,这样就用可以在A类中用GetdlgItemInt()来得到你想要的数据了,不知道你是不是这个意思,
2,你也可能是这种情况,A中不能使用GetDlgItemInt函数,因为这时对话框B不存在了,所以你可以这样,把B中编辑框的数据放在一个公共的类中,比如你的CXXXApp中呀,
这两种方法都可以,有什么不懂的问我。 你可以对编辑框绑定一个变量,然后再对这个编辑框加个EN_CHANGE消息,在这个消息的里面改变值呀,然后传给A中的X就好了

还不行的话,你就把代码贴出来看看,这样说。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式