首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

mfc中摘引自己的方法。

2012-12-28 
mfc中引用自己的方法。。各位大大,小弟是以前学JAVA,现在做MFC,请教个问题。现在写了一个CComboBox,然后双击

mfc中引用自己的方法。。
各位大大,小弟是以前学JAVA,现在做MFC,请教个问题。
现在写了一个CComboBox,然后双击进去就进入了一个代码界面,现在我想使用这个控件的一个函数比如A();
然后我就CComboBox *c=(CComboxBox)GETWINDOW(控件ID);
c->A();
但是会报出那种强制异常。。现在已经确定是获得指针这段代码错误了。。
请问怎么办,如何调用到A()=.=,,不知道我说清楚没有
[最优解释]
CComboBox *c=(CComboxBox*)GetDlgItem(控件ID);
[其他解释]
(CComboxBox*)
[其他解释]
那么你需要有一个思路上的大转变:java中类和句柄是一个整体,比如JLabel。但是mfc中他们不是一个整体。
这一点可以这么说:class My : public CButton; 假设My有个ID 1314,通过GetDlgItem获取到的只能是CButton* 而不能是My*,这是与java的大区别。因为返回的这个CButton*是临时的,它只包含句柄,并不包含My的数据。所以,你要访问My,可以这么做,为1314关联一个变量,类型为My,之后通过这个变量访问My的方法。
[其他解释]
麻烦你说清楚,你是要在哪个类的哪个函数中调用这个按钮的方法?你可以用Classwizard为这个按钮绑定一个CButton成员变量。
[其他解释]
对于从CWnd继承而来的方法是可以使用的,但是自己继承控件写的新方法不能直接用。
CButton* btn = (CButton*) GetDlgItem(IDC_BTN);
ASSERT(btn);  //如果btn为空,会触发断言
CString str;
btn->GetWindowText(str);
//其实,对于这些CWnd的方法,不必转换,可以这么用CWnd* pWnd = GetDlgItem(IDC_BTN); 后续一样

在mfc还要注意一点,java中String是unicode,但是mfc中CString分为ascii和unicode,你可以看看我写的转换。里面有2个转换多余了,看我自己的评论。
http://blog.csdn.net/zhoujielunzhimi/article/details/8082286
[其他解释]

引用:
CComboBox *c=(CComboxBox*)GetDlgItem(控件ID);

我是这样写的CComboBox *c=(CComboxBox*)GetDlgItem(控件ID);
我写错了。。。。。。前面加了*的。
[其他解释]
引用:
那么你需要有一个思路上的大转变:java中类和句柄是一个整体,比如JLabel。但是mfc中他们不是一个整体。
这一点可以这么说:class My : public CButton; 假设My有个ID 1314,通过GetDlgItem获取到的只能是CButton* 而不能是My*,这是与java的大区别。因为返回的这个CButton*是临时的,它只包含句柄,并不包含My的数据。所以,你要访问M……

。。。。。。。好复杂。。看起来。。
[其他解释]
我可能没说明白吧。。。。
比如现在界面上有个BUTTON,我双击进去了,然后就跳转到点击函数体里面去了。现在我想调用这个BUTTON的内置方法(比如获得这个按钮的文字),该如何调用??

像上面所说的如果我在这个函数中使用这样调用,CButton *c=(CButton*)GetDlgItem(控件ID); 就会报一种不知名的错误。

各位大大。。我表述清楚没有=。=
[其他解释]
该回复于2012-11-21 08:41:35被管理员删除
[其他解释]

谢谢版主和各位啦,问题解决了。。。。。。。。虽然我也不知道为什么。。。调用GetDlgItem就可以了。。。。我开始调用的是GETWINDOW......一直报错- -,给分结贴。

热点排行