A为自定义的类
B为对话框类
我在A中加入了B的头文件,无论生成B的对象还是B的指针都无法调试通过(编译无错误提示)A类CPP中:
CBDlg *dlg;
HWND hWnd = dlg->m_hWnd;(单步调试至此出错Access Violation)先谢谢了!

解决方案 »

  1.   

    CBDlg *dlg;
    HWND hWnd = dlg->m_hWnd;
    你对话框都没有创建,自然没有对话框句柄等
    CBDlg *dlg = new CBDlg;
    dlg->Create();...
      

  2.   

    dialog在domal()之后窗口句柄才生效存在的。
      

  3.   

    CBDlg *dlg; 只是一个指针。没有实例。要么像楼上一样重新创建一个。要么赋值一个已有的。。
      

  4.   

    是这样的,你要得到dialog的窗口句柄,必须在窗口创建之后在尝试的去的,而不能简单的定义一个对象之后就开始去的。
      

  5.   

    你要是已经在其他地方创建了
    那可以把this指针传过来
      

  6.   

    我尽量说的清楚点
    一个基于对话框的(类B)工程,自定义了一个实现某一功能的类(类A),在此类(类A)中的构造函数中需要使用到主对话框(类B)的一些参数(如主对话框的长,宽),如何传递对话框的句柄
      

  7.   

    CBDlg *dlg = (CBDlg*)AfxGetApp()->GetMainWnd(); 
    HWND hWnd = AfxGetApp()->GetMainWnd()->GetSafeHwnd()
      

  8.   

    oyljerry 的方法我刚试过 可以创建新对话框得到参数后delete dlg,但应该还有更通用的方法 希望大家指点指点
      

  9.   


    早说啊,就是说b已经有了,而且是主窗口HWND hWnd = ::AfxGetMainWnd()->GetSafeHwnd();