MFC中是否每个一控件都要有一个类与其关联?
控件怎么与类关联?请详细的说一下,谢谢了。
俺用的编译器是VS2005

解决方案 »

  1.   

    vs2005到是没用过!我说的是vc6.0lz应该也知道一些基础知识吧,我也是新手!控件和类关联只需在关联类型中选择control,关联一个类的对象.右键点击弹出菜单中选择classwizard或者直接在view中点击classwizard在add menber variables找到这个控件的id,classwizard都给你出示他能够关联的类的名称你只需定义这个对象就可以了!控件关联成员变量类似选择value选择你所要关联的类型就可以了如float.
      

  2.   

    对了 选择control是关联一个类的对象
      

  3.   

    没有控件与类关联一说,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);
    }
      

  4.   

    另外,控件也不必一定需要与一个类关联。
    例如还可以这样调取并使用一个控件CButton* pbtn = (CButton*)GetDlgItem(IDC_BUTTON_GO);
    if(pbtn && pbtn->GetSafeHwnd()){
        pbtn->SetWindowText("我是按钮");
    }
      

  5.   

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

  6.   

    微软给控件定义了相应的类,如果你的程序不打算在运行时对控件进行调整可以忽略这件事
    如果要调整,只要在声明变量时选中“control”那个复选框即可
      

  7.   


    这句看懂了,用基类的指针去调用子类的方法,这句让我明白了,资源也是类,继承于它们自己的基类。
    可以使用基类的指针去调用子类的方法,来操作控件
    我说的类,应该是C++的类,因为我对MFC还不是很了解,不知道wndclss是何物。
    不过您的说法让我验证了自己的理解。这个说法和上面的基本上一样,不过,怎么做控件变量?好像没有上面说的指针方法方便。
    3楼说,DDX_Control(pDX, IDC_BUTTON_INFO, m_btnInfo); 这个就是与变量关联的代码吗? 这几个参数怎么讲?
      

  8.   

    Windows系统中用WndClass表示一类Window,在系统中有一个结构记录该类Window的一些基本信息,包括类名称、风格、回调函数地址等,例如“BOTTON”就是系统中的一种Window,此外还有“EDIT”、“STATIC”、“LISTBOX”等常用的控件。控件是用CreateWindow/CreateWindowEx创建的,创建时要给出控件的类名,这样系统才能知道你要创建的是哪种控件。应用程序可以使用系统中预定义的控件类型,也可以使用RegisterClass/RegisterClassEx自己注册新的类型。控件的特征主要是通过WindowProc(用于接收消息的回调函数)中的处理来体现的。
    你可以参考MSDN中RegisterClass、CreateWindow、SetWindowLong、SetClassLong等函数的说明。
    以上所提到的类,与C++中的class是不同概念。
      

  9.   

    平时这么用啊用,都有点迷茫,,
    在给控件关联变量时,可以选Value,Control两类,Control所对应的变量类型就时MFC为该控件封装的控件类,用这个控件类的就可以使用控件类的方法啦,
      

  10.   

    每个控件与一个类是关联的.
    你可以在点控件的时候,看他出现什么样的提示,假如是Button 则对应的类为CButoon
    其它同理.
      

  11.   

    楼主果然博学多才,现在又学mfc啦,我c++还没有学会哪。555555