新学MFC,大家请多帮助,现在有一个小问题。

五号智能 2008-07-06 01:34:57
MFC中是否每个一控件都要有一个类与其关联?
控件怎么与类关联?请详细的说一下,谢谢了。
俺用的编译器是VS2005
...全文
152 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
destinycncn 2008-07-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 xgywd 的回复:]
引用 4 楼 Crob 的回复:
另外,控件也不必一定需要与一个类关联。
例如还可以这样调取并使用一个控件

CButton* pbtn = (CButton*)GetDlgItem(IDC_BUTTON_GO);
if(pbtn && pbtn->GetSafeHwnd()){
pbtn->SetWindowText("我是按钮");
}



这句看懂了,用基类的指针去调用子类的方法,这句让我明白了,资源也是类,继承于它们自己的基类。
可以使用基类的指针去调用子类的方法,来操作控件


引用 5 楼…
[/Quote]
楼主可以自己随便关联一个试一试,就知道程序中添加的东西了!从上边哥们来看你也是程序高手了,建议你初学的话看看孙鑫老师的Vc++20课的视频,相信对你的帮助应该很大!
GoAssemblyNow 2008-07-07
  • 打赏
  • 举报
回复
楼主果然博学多才,现在又学mfc啦,我c++还没有学会哪。555555
长尾巴的悟空 2008-07-06
  • 打赏
  • 举报
回复
每个控件与一个类是关联的.
你可以在点控件的时候,看他出现什么样的提示,假如是Button 则对应的类为CButoon
其它同理.
zhkefa 2008-07-06
  • 打赏
  • 举报
回复
平时这么用啊用,都有点迷茫,,
在给控件关联变量时,可以选Value,Control两类,Control所对应的变量类型就时MFC为该控件封装的控件类,用这个控件类的就可以使用控件类的方法啦,
cnzdgs 2008-07-06
  • 打赏
  • 举报
回复
Windows系统中用WndClass表示一类Window,在系统中有一个结构记录该类Window的一些基本信息,包括类名称、风格、回调函数地址等,例如“BOTTON”就是系统中的一种Window,此外还有“EDIT”、“STATIC”、“LISTBOX”等常用的控件。控件是用CreateWindow/CreateWindowEx创建的,创建时要给出控件的类名,这样系统才能知道你要创建的是哪种控件。应用程序可以使用系统中预定义的控件类型,也可以使用RegisterClass/RegisterClassEx自己注册新的类型。控件的特征主要是通过WindowProc(用于接收消息的回调函数)中的处理来体现的。
你可以参考MSDN中RegisterClass、CreateWindow、SetWindowLong、SetClassLong等函数的说明。
以上所提到的类,与C++中的class是不同概念。
五号智能 2008-07-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 Crob 的回复:]
另外,控件也不必一定需要与一个类关联。
例如还可以这样调取并使用一个控件

CButton* pbtn = (CButton*)GetDlgItem(IDC_BUTTON_GO);
if(pbtn && pbtn->GetSafeHwnd()){
pbtn->SetWindowText("我是按钮");
}
[/Quote]



这句看懂了,用基类的指针去调用子类的方法,这句让我明白了,资源也是类,继承于它们自己的基类。
可以使用基类的指针去调用子类的方法,来操作控件



[Quote=引用 5 楼 cnzdgs 的回复:]

不知道你所说的“类”是C++中的class还是Window中的WndClass。
每个窗口(控件)都必须是某一个已经注册的WndClass类型。
窗口(控件)可以与MFC中的CWnd类或其派生类相关联,但不是必须的。关联实际上是修改窗口(控件)的WindowProc,通过窗口句柄找出类对象指针,然后调用类的WindowProc虚函数。可以利用CWnd类的SubclassWindow函数把一个类对象与窗口建立关联;如果使用CWnd类或其派生类的Create或CreateEx函数来创建窗口(空间),会自动建立关联。

[/Quote]

我说的类,应该是C++的类,因为我对MFC还不是很了解,不知道wndclss是何物。
不过您的说法让我验证了自己的理解。




[Quote=引用 7 楼 sizi8 的回复:]

按我的理解是有个类,与之关联的,,,

我们可以,为这个控件做个控件变量,这个变量就能调用这个控件的方法了...,,,,

VS2005也是差不多的!!

[/Quote]

这个说法和上面的基本上一样,不过,怎么做控件变量?好像没有上面说的指针方法方便。
3楼说,DDX_Control(pDX, IDC_BUTTON_INFO, m_btnInfo); 这个就是与变量关联的代码吗? 这几个参数怎么讲?

sizi8 2008-07-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 xgywd 的帖子:]
MFC中是否每个一控件都要有一个类与其关联?
控件怎么与类关联?请详细的说一下,谢谢了。
俺用的编译器是VS2005
[/Quote]

按我的理解是有个类,与之关联的,,,

我们可以,为这个控件做个控件变量,这个变量就能调用这个控件的方法了...,,,,

VS2005也是差不多的!!
caimps 2008-07-06
  • 打赏
  • 举报
回复
微软给控件定义了相应的类,如果你的程序不打算在运行时对控件进行调整可以忽略这件事
如果要调整,只要在声明变量时选中“control”那个复选框即可
cnzdgs 2008-07-06
  • 打赏
  • 举报
回复
不知道你所说的“类”是C++中的class还是Window中的WndClass。
每个窗口(控件)都必须是某一个已经注册的WndClass类型。
窗口(控件)可以与MFC中的CWnd类或其派生类相关联,但不是必须的。关联实际上是修改窗口(控件)的WindowProc,通过窗口句柄找出类对象指针,然后调用类的WindowProc虚函数。可以利用CWnd类的SubclassWindow函数把一个类对象与窗口建立关联;如果使用CWnd类或其派生类的Create或CreateEx函数来创建窗口(空间),会自动建立关联。
Crob 2008-07-06
  • 打赏
  • 举报
回复
另外,控件也不必一定需要与一个类关联。
例如还可以这样调取并使用一个控件

CButton* pbtn = (CButton*)GetDlgItem(IDC_BUTTON_GO);
if(pbtn && pbtn->GetSafeHwnd()){
pbtn->SetWindowText("我是按钮");
}


Crob 2008-07-06
  • 打赏
  • 举报
回复
没有控件与类关联一说,MFC中的对话框等等都称之为资源,是资源与类进行关联。
所有以CWnd派生出来的对话框、窗口,都用DoDataExchange来与控件资源关联。
就像下面代码,IDC_BUTTON_GO这些就是资源ID,btnGO是一个按钮的CButton类的实例

void CSYSL2ToolkitDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSYSL2ToolkitDlg)
DDX_Control(pDX, IDC_BUTTON_GO, m_btnGO);
DDX_Control(pDX, IDC_EDIT_CODE, m_editCode);
DDX_Control(pDX, IDC_BUTTON_TOPMOST, m_btnTopmost);
//}}AFX_DATA_MAP
DDX_Control(pDX, IDC_BUTTON_INFO, m_btnInfo);
DDX_Control(pDX, IDC_BUTTON_SET, m_btnSet);
DDX_Control(pDX, IDC_BUTTON_R1, m_btnR1);
DDX_Control(pDX, IDC_BUTTON_R2, m_btnR2);
}
destinycncn 2008-07-06
  • 打赏
  • 举报
回复
对了 选择control是关联一个类的对象
destinycncn 2008-07-06
  • 打赏
  • 举报
回复
vs2005到是没用过!我说的是vc6.0lz应该也知道一些基础知识吧,我也是新手!控件和类关联只需在关联类型中选择control,关联一个类的对象.右键点击弹出菜单中选择classwizard或者直接在view中点击classwizard在add menber variables找到这个控件的id,classwizard都给你出示他能够关联的类的名称你只需定义这个对象就可以了!控件关联成员变量类似选择value选择你所要关联的类型就可以了如float.

16,472

社区成员

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

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

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