我想用C和SDK写一个DLL,给这个DLL加入一个对话框资源。
然后在DLL的接口中提供一个函数,当外界调用这个函数时,
由这个函数寻找那个对话框资源,然后弹出对话框。
在这个函数里,我用CreateBox方法弹出对话框。
但对话框始终不能出来。
用debug看到错误码是1814,MSDN说是:
The specified resource name cannot be found in the image file. 
我该怎么办???

解决方案 »

  1.   

    你说的思路我使用过,可行,关键是:int DialogBox(
      HINSTANCE hInstance,  // handle to application instance
      LPCTSTR lpTemplate,   // identifies dialog box template
      HWND hWndParent,      // handle to owner window
      DLGPROC lpDialogFunc  // pointer to dialog box procedure
    );
     
    hInstance 需要使用包含资源的 hInstance.
    如果对话框资源在 dll 中,那么这个就是 dll 的 hInstance.
      

  2.   

    我是这样找对话框资源的:
    DialogBox (NULL, "IDD_DIALOG", NULL, NULL);
    第一个NULL是因为我不知道如何取得DLL的句柄,
    "IDD_DIALOG"是DLL工程里加入的对话框资源的ID,
    第二个NULL是因为这个对话框没有父窗口,
    第三个NULL是对话框的消息处理函数,还没有写,所以暂时用NULL代替。我不知道这四个参数用的对不对,但是在普通的SDK程序里这样用可以调出对话框。
    到了DLL里就调不出来了,真急人!
      

  3.   

    BOOL APIENTRY DllMain(HINSTANCE hinstDLL,  // DLL module handle
      DWORD fdwReason,              // reason called
      LPVOID lpvReserved)           // reserved第一个参数就是DLL句柄 !资源名称没有找到!!
    看看的的对话框资源ID是否是 "IDD_DIALOG" 注意ID要带";
    如果没有带"
    改为
    DialogBox(hInst,(LPCSTR)IDD_DIALOG,NULL,DlgProc);