自己在vc里面写了个测试程序是能成功的,但是我用pb调用,掉到.domodel的时候就会出错!!愁死了

解决方案 »

  1.   

    估计资源切换出问题的可能性大些,构造对话框前需要把资源句柄设为当前DLL的。
      

  2.   

    HINSTANCE hOldRes;

    hOldRes = AfxGetResourceHandle();
    AfxSetResourceHandle(g_hInstance); CLoginDlg dlg;
            dlg.DoModal(); AfxSetResourceHandle(hOldRes);
      

  3.   

    int DialogBox( 
      HINSTANCE hInstance, //dll中这个参数不能为NULL,要为dll句柄,不然后程序不能搜索到该资源
      LPCTSTR lpTemplate, 
      HWND hWndParent, 
      DLGPROC lpDialogFunc
    ); 
      

  4.   

    话说在函数前加上这句是不是等价楼上几位说的呢?
    AFX_MANAGE_STATE(AfxGetAppModuleState());
      

  5.   

    回3楼AfxSetResourceHandle(g_hInstance);  g_hInstance如何得到?
    我的工程是MFC Extention DLL的
      

  6.   

    还是不行啊,下面是我的代码void CInputPassword::showDlg()
    {
    HINSTANCE   hOldRes; 
    hOldRes   =   AfxGetResourceHandle(); 
    HINSTANCE g_hInstance=GetModuleHandle(NULL);
    AfxSetResourceHandle(g_hInstance); 
    AfxMessageBox("11111");
    this->DoModal();
    AfxMessageBox("22222");
    AfxSetResourceHandle(hOldRes); 
    }
    在pb调用的时候1111能弹出来但是2222不能
      

  7.   

    this->DoModal()函数就停在这儿了
    AfxMessageBox("22222");还没执行到
      

  8.   

    晕了,2222 没弹出来当然是停在this-> DoModal()了,问题是为什么我用vc自己创建的工程引用动态库的就没问题,而我用pb调用却出问题?