我建了一个 Win32 项目的dll(不用MFC),然后我插入了一个对话框,并在其中一个导出函数中使用了 DialogBox(NULL,MAKEINTRESOURC(IDD_SETDLG),pParent,SetDlgProc) 来显示对话框,但调用这个导出函数时对话框却显示不出来, DialogBox 返回了 -1,用 GetLastError 返回 1814,我发誓 IDD_SETDLG 这个资源是存在于中的,请问这到底是怎么回事啊?天哪!

解决方案 »

  1.   

    error 1814 : The specified resource name cannot be found in the image file. 是不是你的资源文件有问题,检查一下资源名称!你也可以使用MFC扩展DLL来导出对话框
    http://www.vccode.com/file_show.php?id=1636
      

  2.   

    模块的资源句柄不正确
    DialogBox(hInst,MAKEINTRESOURC(IDD_SETDLG),pParent,SetDlgProc)
      

  3.   

    1814:找不到映像文件中指定的资源名。#include "resource.h"?
      

  4.   

    参数hInstance定义为: 
    Identifies an instance of the module whose executable file contains the dialog box template. 
    即要指定包含改对话框的摸板。
    如果你的摸板在dll中,那么就要dll库的模块句柄。可以用GetModuleHandle函数来得到模块句柄。
    如果在.exe文件中,就要程序的实例句柄。
      

  5.   

    啊,没看到
    DialogBox的句柄不能用NULL
      

  6.   

    如果找不到资源名,编译时就回出错的。
    如果是句柄不正确,那那个 hInst 该如何获得呢?
    使用扩展 DLL 的话,是不是发布 dll 时还要带一个 MFC 的 DLL?
      

  7.   

    我把第一个参数换为了 (HINSTANCE)GetModuleHandle(NULL) ,错误依旧啊,,
    郁闷中。怎么回事啊?
      

  8.   

    hInst 是DllMain的第一个参数~