怎么获取某个对话框类里面的成员变量
我用
if(!IsWindow(hWndModeLess))
 { hWndModeLess=CreateDialog(NULL,(LPCTSTR)IDD_THUMBNAIL_DIALOG, m_hwnd, (DLGPROC)NULL);
....
在程序里面动态创建了一个对话框
但怎么获取这个对话框类里面的成员变量?
还有对应这个对话框的类指针?

解决方案 »

  1.   

    GetDlgItem(IDD_THUMBNAIL_DIALOG)拿到的指针,这个是对象,不是类,要弄懂的。
      

  2.   

    这是API创建的对话框,不存在对话框类。可以在创建好后用一个对话框类实例去子类化这个窗口句柄,或者直接用类实例的Create函数创建对话框。
      

  3.   

    用类实例的Create函数创建对话框  这种方法最方便!
      

  4.   

    你不是有窗口句柄hWndModeLess吗?
    可以通过CWnd::FromHandle来得到你的窗口指针。
    如果是多线程的话用CWnd::FromHandlePermanent比较安全。
      

  5.   

    顶3楼的。。
    子类化可以使用CWnd的SubclassWindow函数
    BOOL SubclassWindow( HWND hWnd );也可以使用CDialog的Create函数
    BOOL Create( UINT nIDTemplate, CWnd* pParentWnd = NULL );以上,还请牛人确认。。
      

  6.   

    这个对话框只有窗口句柄,没有类对象,自然也没有对象指针和成员变量。可以把窗口句柄保存起来,通过句柄GetDlgItem可以获得具有唯一ID的控件的句柄。
      

  7.   

    你的问题有些不大清楚,对话框类的成员变量分两种,一种是某个控件所对应的变量,其实也就是对象,这种可以用GetDlgItem()函数来获取它的指针,然后调用相关操作,当然,如果所调用的操作属于某一个控件指针需要类型转换,比如对列表框添加一个字符串,代码就是((CListBox*)GetDlgItem(IDC_LIST1))->AddString(m_str1);另外一种情况就像一般C++类的成员变量,它的调用CMyDlg dlg;dlg.m_str1 = _T("第一个字符创");dlg.DoModal();这是m_str1的值就是_T("第一个字符创")