findResource,LoadResource,lockResource是怎么使用的,使用之后怎么释放内存!

解决方案 »

  1.   


    The   following   example   copies   a   dialog   box   resource   from   one   executable   file,   HAND.EXE,   to   another,   FOOT.EXE,   by   following   these   steps:     
        
      HRSRC   hResLoad;           //   handle   to   loaded   resource     
      HANDLE   hExe;                 //   handle   to   existing   .EXE   file     
      HRSRC   hRes;                   //   handle/ptr.   to   res.   info.   in   hExe     
      HANDLE   hUpdateRes;     //   update   resource   handle     
      char   *lpResLock;         //   pointer   to   resource   data     
      BOOL   result;     
          
      //   Load   the   .EXE   file   that   contains   the   dialog   box   you   want   to   copy.     
      hExe   =   LoadLibrary("hand.exe");     
          
      if   (hExe   ==   NULL)     
      {     
              ErrorHandler("Could   not   load   exe.");     
      }     
          
      //   Locate   the   dialog   box   resource   in   the   .EXE   file.     
      hRes   =   FindResource(hExe,   "AboutBox",   RT_DIALOG);     
          
      if   (hRes   ==   NULL)     
      {     
              ErrorHandler("Could   not   locate   dialog   box.");     
      }     
          
      //   Load   the   dialog   box   into   global   memory.     
      hResLoad   =   LoadResource(hExe,   hRes);     
          
      if   (hResLoad   ==   NULL)     
      {     
              ErrorHandler("Could   not   load   dialog   box.");     
      }     
          
      //   Lock   the   dialog   box   into   global   memory.     
      lpResLock   =   LockResource(hRes);     
          
      if   (lpResLock   ==   NULL)     
      {     
              ErrorHandler("Could   not   lock   dialog   box.");     
      }     
          
      //   Open   the   file   to   which   you   want   to   add   the   dialog   box   resource.     
      hUpdateRes   =   BeginUpdateResource("foot.exe",   FALSE);     
          
      if   (hUpdateRes   ==   NULL)     
      {     
              ErrorHandler("Could   not   open   file   for   writing.");     
      }     
          
      //   Add   the   dialog   box   resource   to   the   update   list.     
      result   =   UpdateResource(hUpdateRes,               //   update   resource   handle     
                RT_DIALOG,                                       //   change   dialog   box   resource     
                "AboutBox",                                     //   dialog   box   name     
                MAKELANGID(LANG_NEUTRAL,   SUBLANG_NEUTRAL),     //   neutral   language   
                lpResLock,                                       //   ptr   to   resource   info     
                SizeofResource(hExe,   hRes));   //   size   of   resource   info.     
          
      if   (result   ==   FALSE)     
      {     
              ErrorHandler("Could   not   add   resource.");     
      }     
          
      //   Write   changes   to   FOOT.EXE   and   then   close   it.     
      if   (!EndUpdateResource(hUpdateRes,   FALSE))     
      {     
              ErrorHandler("Could   not   write   changes   to   file.");     
      }     
          
      //   Clean   up.     
      if   (!FreeLibrary(hExe))     
      {     
              ErrorHandler("Could   not   free   executable.");     
      }     
      
      

  2.   

    如果仅是使用findResource,LoadResource,lockResource 的话,不需要释放内存。FreeResource 现在已经被废除了