VC++中 每个CWnd派生的类都一定和一个窗口关联吗?
每个对话框是一定需要和一个类关联吗!
我在资源中增加对话框时候是怎么和类关联起来的呢,是VC自动完成的呢 还是需要做什么相关的设置!

解决方案 »

  1.   

    一定要有一个类关联,否则这个对话框是没有任何功能的,见下面的例子:
    void CDragTestDlg::DoDataExchange(CDataExchange* pDX)
    {
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CDragTestDlg)
    DDX_Control(pDX, IDC_LIST_RIGHT, m_listR);
    DDX_Control(pDX, IDC_LIST_LEFT, m_listL);
    //}}AFX_DATA_MAP
    }
    CDragTestDlg是对话框对应的类名,DDX_Control(pDX, IDC_LIST_RIGHT, m_listR)就是变量的关联,当你通过ClassWizzard添加变量时,它就自动将这些代码添加到这里。如果你熟悉了,可以在这里自己手动添加,不过手动添加麻烦一点,还要在头文件中添加变量名,所以还是用classwizzard方便。
      

  2.   


    1、你先增加一个新的对话框资源;2、按 Ctrl + W 调出 ClassWizard ,系统机会提醒你为这个对话框建立一个类。
      

  3.   

    class SetupDlg1 : public CDialog
    {
    // Construction
    public:
    SetupDlg1(CWnd* pParent = NULL);   // standard constructor// Dialog Data
    //{{AFX_DATA(SetupDlg1)
    enum { IDD = IDD_CHOOSE1 };          //这个就是和类绑定的对话框
    // NOTE: the ClassWizard will add data members here
    //}}AFX_DATA你搜索对话框的ID如“IDD_CHOOSE1”,然后就可以找到了,要充分用好搜索这个功能,它帮助你很好的理解工作流程。
      

  4.   

    不要使用这个类就清除关联了。使用对话框类是为了方便的控制对话框,当然你也可以完全不用对话框类,使用两个API就可以打开对话框:
    DialogBox()根据你指定的资源打开模式对话框;
    CreateDialog()根据你指定的资源打开非模式对话框;
    MFC也是在CDialog中封装了这两个API而已
      

  5.   

    只要包含windows.h就可以了。如果你调用报错,调用GetLastError检查一下错误类型,然后检查调用参数是否正确