然后我发现我弄错了,B1=C2,B2=C1了。
B代表按钮,C代表类。
我可以把他们换过来吗?怎么操作。还有不明白的一点,
为什么不是类的一个对象和按钮关联,而是按钮直接与类关联。
1,我们建立的类会变成一个对象吗?
2,对按钮的操作都是通过类还是“类的对象”传递消息(比如鼠标单击,双击,移动上去)?
3,MFC所有的代码都包含在5个类中吗?外面是不是还有一个不在类中的CPP文件对类进行调用呢?

解决方案 »

  1.   

    为什么不是类的一个对象和按钮关联,而是按钮直接与类关联。
    1,我们建立的类会变成一个对象吗?
    可以,你为控件添加控件类型的成员变量,此时类就实例化了。
    2,对按钮的操作都是通过类还是“类的对象”传递消息(比如鼠标单击,双击,移动上去)?
    按钮和其他控件有父窗口,比如对话框,如果是拖动控件,对话框会自动进行消息的控制和数据的交换。
    当然,某些自定义消息也可以由控件自己控制。
    3,MFC所有的代码都包含在5个类中吗?外面是不是还有一个不在类中的CPP文件对类进行调用呢?
    你说的是CView、CDoc类吗?
    MFC是对WindowsAPI的封装,大大简化了我们的工作;学VC主要就是要学MFC,大约有100多个类,但常用的也就二三十个。
    重要的有
    CWnd:窗口、视图CView、框架窗口CFrameWnd、工具条CToolBar、对话框CDialog、按钮CButton等等;CDocument文档,CDC设备文本等
      

  2.   

    你是说那个按钮的IDC_BTN什么的吧?
    直接把ID对调就行
      

  3.   

    你是说那个按钮的IDC_BTN什么的吧?
    直接把ID对调就行,确实可以这样做
      

  4.   

    [Quote=引用 3 楼  的回复:]
    为什么不是类的一个对象和按钮关联,而是按钮直接与类关联。
    1,我们建立的类会变成一个对象吗?
        类只要被实例化就会生成一个对象,针对一个类可以生成多个类对象。
        比如“人”是一个类(Class Human {...} ) 那么针对这个类可以根据构造函数的参数列表生成诸如“张三”,“李四”的具体对象。
    2,对按钮的操作都是通过类还是“类的对象”传递消息(比如鼠标单击,双击,移动上去)?
        问题看的不是特别明白,这样说吧。
        按钮按钮,当然基本是按了,所以常规的操作是响应点击消息。当然移动上去响应某个消息也可以实现(获取响应的坐标)。另外,MFC中,按钮只是控件的一种,其他很多文本框、列表等空间都可以尝试使用,每个空间本身确实也是类,但这些类一般作为其所在父窗口位置(比如对话框)的成员变量存在,可以拖动创建,也可以通过代码直接创建,具体空间类中存在的成员变量和操作方法可以参照MSDN,很详细。3,MFC所有的代码都包含在5个类中吗?外面是不是还有一个不在类中的CPP文件对类进行调用呢?
    你说的是CView、CDoc类吗?
        这么说吧,MFC是有main函数的,但是对你是不可见的,这个你暂时可以完全忽略。
        结构上,MFC都会有一个App类,代表这个应用程序,一般还会自动生成一个CAboutDlg类,这个相关版本信息你暂时也可以忽略。然后,最简单的是创建一个基于对话框的工程。除了上面两个类之外,它还会生成一个主对话框类代表主界面的对话框。如果是单文档工程的话,需要着重操作的是..View和..Doc类,还有一个MainFrame控制主框架的布局。多文档会有子View类,基本这样。具体能说的很多,你可以找相关的资料书籍学习。
        5个类,太小看MFC了,不算你自己写的类,你去MSDN上查看下,包含控件类、窗口类、绘图类、字符串操作类、模版类、线程类、网络通信类在内上百个类呢。学习的话可以有针对性的慢慢学。最后,你换按钮的问题。
        我理解的同样是你想交换两个按钮的功能,这样直接换ID确实可以实现(如果是托出来的按钮)。
    理解下这段代码吧,消息响应的绑定BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
    //{{AFX_MSG_MAP(CTestDlg)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
    ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    注意,修改ID后重新编译下(重新组建),否则可能会看不到效果的。