我想在CTabCtrl中插入一个对话框,
在 .h 文件中定义了一个该对话框的一个指针: CPay1Dlg *m_dlgPay1;在OnInitialUpdate()中有如下代码: m_dlgPay1=new CPay1Dlg;
m_dlgPay1->Create(IDD_DIALOG_PAY1,m_ExtData.GetSafeHwnd());但一编译,就报Create出错:error C2664: 'int __thiscall CDialog::Create(const char *,class CWnd *)' : cannot convert parameter 1 from 'const int' to 'const char *'
        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style castCreate明明有两个重载函数的,为什么在这里它就偏只认一种呢?

解决方案 »

  1.   

    m_dlgPay1->Create(IDD_DIALOG_PAY1,this);
      

  2.   

    是不是你自己重载Create()函数了?
    就算是那样,你也可以直接使用继承类函数
    m_dlgPay1->Create(IDD_DIALOG_PAY1,this);

    m_dlgPay1->Create(IDD_DIALOG_PAY1,NULL);顺便问一下,m_ExtData是什么东东?
      

  3.   

    m_dlgPay1->Create(IDD_DIALOG_PAY1,m_ExtData.GetSafeHwnd());
    改為:
    m_dlgPay1->Create( UINT(IDD_DIALOG_PAY1) ,m_ExtData.GetSafeHwnd());
      

  4.   

    IDD_DIALOG_PAY1 你定义成什么了
    应该是一个整数才对,在resource.sh
      

  5.   

    楼主的调用是没有错的。
    不过为什么他不认就有点奇怪。
    要MSDN查查看 。
      

  6.   

    CDialog::Create(
           const char *,
           class CWnd *    // 不是已经说明了吗?它是一个指向类的指针,而不是一个句柄类型!
           )
      

  7.   

    按说你的第二个参数传的才有问题,他为什么非说第一个错了。
    而且他和CWND的Create方法也配不起来啊。
    搞不懂啊。
      

  8.   

    把 IDD_DIALOG_PAY1 改成 MAKEINTRESOURCE(IDD_DIALOG_PAY1) 试试
      

  9.   


    m_dlgPay1->Create(IDD_DIALOG_PAY1,this);
      

  10.   

    楼主自己重载了create函数啊,覆盖了基类的create函数,当然会报错了!
     只要去掉重载的create函数,一切ok了!
      

  11.   

    真是多谢各位了,真的是第二个错了,期待的是 &m_ExtData,但写成了m_ExtData.GetSafeHwnd()),结贴。感谢大家的帮助