这个大家都知道的
我是说在一个程序中如何去调用dll中的资源
倒!!!

解决方案 »

  1.   

    很简单了,通常如果你的程序调用了一个DLL,而这个DLL中又包含了资源,如果在资源ID重复的情况下,用常规的方法肯能得不到正确的资源句柄,因此,有两种方法可以解决:1、用MFC提供的宏 
    HINSTANCE  hOldInst = AfxGetResourceHandle();
    AfxSetResourceHandle(YourDLL.hModule);  //切换到DLL资源
    //-----------------------------------
    这里可以用DLL的资源
    //------------------------------------------------------------------------
    AfxSetResourceHandle(hOldInst);2、直接用WIN API的方法,例如要装入DLL中的一个位图
    m_imgBitmap.Attach(::LoadBitmap(YourDLL.hResource,MAKEINTRESOURCE(IDB_BITMAP)));
      

  2.   

    HINSTANCE hResource = LoadLibraryEx("resource.dll",NULL,LOAD_LIBRARY_AS_DATAFILE);
    AfxSetResourceHandle(hResource);
      

  3.   

    ExtractIcon
    大概是这个函数
    你找一下帮助吧如果你愿意的话,可以找一下mfc的源代码
    你跟踪RegisterShellFileTypes就知道了,里面有怎么使用的方法
      

  4.   

    ExtractIcon 好像是取得.exe文件的Icon的,不知道dll是否可以
      

  5.   

    BOOL WINAPI Login(PopeDom *LoginUser,int nRights,const char* szPrompt)
    {
    BOOL bRet;HINSTANCE hOldResHandle=AfxGetResourceHandle();
    HINSTANCE hInst = ::GetModuleHandle("SPub.dll");//把资源句柄指向本DLL。注意!这是必须的。否则构造对话框或引用资源时极可能会出错。
    AfxSetResourceHandle(hInst);CLoginDlg dlg(NULL,nRights,szPrompt,LoginUser);
    if(dlg.DoModal()==IDOK)
    bRet=TRUE;
    else
    bRet=FALSE;//恢复老的资源句柄。注意!这也是必须的。
    AfxSetResourceHandle(hOldResHandle);
    return bRet;
    }
      

  6.   

    我这个问题有点象多语言支持的
    但更象一个插件。象photoshop,Acrobat Reader 之类的
    只要把一个dll文件拷贝到指定目录。主程序就可以直接调用dll里面的东西
    包括资源、函数。
      

  7.   

    我的主要思路是这样的
    1、app运行是到指定目录去load各种外挂的插件
    2、运行后根据不同插件让菜单、工具条等都在基本框架动态增加外挂的信息
    3、主程序和外挂的一些函数接口统一规定
    4、
    不知道哪位高人。给我个帮助。
    谢谢!!!