CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  ATL/ActiveX/COM

求救!!程序报错:必需的资源无法得到!!

楼主nickzwd(缘分的水水)2005-01-06 14:34:08 在 VC/MFC / ATL/ActiveX/COM 提问

多谢关注!  
   
  本人的程序在一台机器上完成调试没有任何问题之后,拿到另外一个没有安装VC的机器上使用,程序出  
   
  错,提示:必需的资源无法得到    
   
  1.有人说:是需要包含VC的动态库,将MFC42D.DLL   MSVCIRTD.DLL   MSVCRTD.DLL等提示所需要的DLL文件拷贝到执行文件目录下,就可以了。  
      我将所有需要的dll文件都考过去了,不行。然后,甚至还拷贝一份全部的dll到VC的BIN目录下  
  重新编译后还是不行。  
   
   
  2.有人说:需要   ReleaseDC(&dc);  
   
  试过之后,还是失败。  
   
   
  3.有人说:2000下编的程序在98下使用或者是那个机子中毒了  
   
  不是的,两台机器都是2000server的,也肯定不是病毒的原因。唯一区别就是出错那台没有安装VC.  
   
   
  4有人说:建成Realease的版本  
   
  还是不行。任何版本都不行的。我都试过了/也用了动态或者静态链接重复试了很多次。  
   
   
   
   
   
  没办法,我就在那台机器上安装了VC,重新调试。发现运行到这里时:  
   
  CDataBackupDlg   dlg;  
  m_pMainWnd   =   &dlg;  
  int   nResponse   =   dlg.DoModal();//   调试到这一行弹出了“必需的资源无法得到”  
   
  跟进之后是VC自带的东西了。  
   
  自己怀疑是这个DoModal();     有问题,进去,到了这里D:\...\MFC\SRC\DLGCORE.CPP   的  
   
  int   CDialog::DoModal()  
  {  
  //   can   be   constructed   with   a   resource   template   or   InitModalIndirect  
  ASSERT(m_lpszTemplateName   !=   NULL   ||   m_hDialogTemplate   !=   NULL   ||  
  m_lpDialogTemplate   !=   NULL);  
   
  //   load   resource   as   necessary  
  LPCDLGTEMPLATE   lpDialogTemplate   =   m_lpDialogTemplate;  
  HGLOBAL   hDialogTemplate   =   m_hDialogTemplate;  
  HINSTANCE   hInst   =   AfxGetResourceHandle();  
  if   (m_lpszTemplateName   !=   NULL)  
  {  
  hInst   =   AfxFindResourceHandle(m_lpszTemplateName,   RT_DIALOG);  
  HRSRC   hResource   =   ::FindResource(hInst,   m_lpszTemplateName,   RT_DIALOG);  
  hDialogTemplate   =   LoadResource(hInst,   hResource);  
  }  
  if   (hDialogTemplate   !=   NULL)  
  lpDialogTemplate   =   (LPCDLGTEMPLATE)LockResource(hDialogTemplate);  
   
  //   return   -1   in   case   of   failure   to   load   the   dialog   template   resource  
  if   (lpDialogTemplate   ==   NULL)  
  return   -1;  
   
  //   disable   parent   (before   creating   dialog)  
  HWND   hWndParent   =   PreModal();  
  AfxUnhookWindowCreate();  
  BOOL   bEnableParent   =   FALSE;  
  if   (hWndParent   !=   NULL   &&   ::IsWindowEnabled(hWndParent))  
  {  
  ::EnableWindow(hWndParent,   FALSE);  
  bEnableParent   =   TRUE;  
  }  
   
  TRY  
  {  
  //   create   modeless   dialog  
  AfxHookWindowCreate(this);  
  if   (CreateDlgIndirect(lpDialogTemplate,  
  CWnd::FromHandle(hWndParent),   hInst))  
  {  
  if   (m_nFlags   &   WF_CONTINUEMODAL)  
  {  
  //   enter   modal   loop  
  DWORD   dwFlags   =   MLF_SHOWONIDLE;  
  if   (GetStyle()   &   DS_NOIDLEMSG)  
  dwFlags   |=   MLF_NOIDLEMSG;  
  VERIFY(RunModalLoop(dwFlags)   ==   m_nModalResult);  
  }  
   
  //   hide   the   window   before   enabling   the   parent,   etc.  
  if   (m_hWnd   !=   NULL)  
  SetWindowPos(NULL,   0,   0,   0,   0,   SWP_HIDEWINDOW|  
  SWP_NOSIZE|SWP_NOMOVE|SWP_NOACTIVATE|SWP_NOZORDER);  
  }  
  }  
  CATCH_ALL(e)  
  {  
  DELETE_EXCEPTION(e);  
  m_nModalResult   =   -1;  
  }  
  END_CATCH_ALL  
   
  if   (bEnableParent)  
  ::EnableWindow(hWndParent,   TRUE);  
  if   (hWndParent   !=   NULL   &&   ::GetActiveWindow()   ==   m_hWnd)  
  ::SetActiveWindow(hWndParent);  
   
  //   destroy   modal   window  
  DestroyWindow();  
  PostModal();  
   
  //   unlock/free   resources   as   necessary  
  if   (m_lpszTemplateName   !=   NULL   ||   m_hDialogTemplate   !=   NULL)  
  UnlockResource(hDialogTemplate);  
  if   (m_lpszTemplateName   !=   NULL)  
  FreeResource(hDialogTemplate);  
   
  return   m_nModalResult;  
  }  
   
   
  在这里一步一步往下走,然后在这里面到了这一步  
   
  AfxHookWindowCreate(this);  
      if   (CreateDlgIndirect(lpDialogTemplate,  
            CWnd::FromHandle(hWndParent),   hInst))//到这个判断的时候弹出“必需的资源无法得到”  
   
   
  继续往下调试的话就一直在VC自带的那些函数里面了。还请各位帮忙分析~~~  
   
   
   
  问题点数:20、回复次数:3Top

1 楼nickzwd(缘分的水水)回复于 2005-01-06 14:36:29 得分 0

需要分数的话再开一贴专门送~~~~~~~~~~~~~~还请各位高手多多援手,小弟再次拜谢!!Top

2 楼huakai8866(xiaoqu)回复于 2005-01-07 10:32:45 得分 20

gzTop

3 楼nickzwd(缘分的水水)回复于 2005-01-07 10:42:17 得分 0

现在查出来这个类   CDataBackupDlg     里面的   函数有点问题。  
   
  void   CDataBackupDlg::OnShowWindow(BOOL   bShow,   UINT   nStatus)    
  {  
  CDialog::OnShowWindow(bShow,   nStatus);  
   
  CCommService::Instance()->m_Log.LogInit(   "c:\\e-FAXbr"   );  
  CCommService::Instance()->m_Log.SetDebugLevel(   LEVEL_DEBUG_DETAIL   );  
   
  CWnd *pWnd   =   GetDlgItem(IDC_EDIT_EFAXSERVERIP);  
   
  if(   PathFileExists("c:\\faxserver")   )  
  {  
  m_bIsLocal   =   TRUE;  
  if(   pWnd   )  
  pWnd->EnableWindow(   FALSE   );  
  }  
  else  
  {  
  m_bIsLocal   =   FALSE;  
  if(   pWnd   )  
  pWnd->EnableWindow(   TRUE   );  
  }  
   
  UpdateData(   FALSE   );  
  }  
   
   
  我把代码注销掉,然后一行一行的查。调试到了这一行时开始报错“必需的资源无法得到”  
  CCommService::Instance()->m_Log.LogInit(   "c:\\e-FAXbr"   );Top

相关问题

  • 高分求救!!!程序报错:必需的资源无法得到!!
  • 启动程序时报错
  • 运行程序总是报错 “Stack overflow” !!!
  • 连接unicode版程序时报错
  • 这个程序为什么报错?
  • 运行程序的时候报错:(
  • 简单程序报错不简单!
  • 程序报错 高手过来看
  • C++ Primer中的程序编译报错
  • 程序报错?说找不到类?

关键词

  • dll
  • 安装
  • 文件
  • vc
  • null
  • hdialogtemplate
  • lpdialogtemplate
  • 必需
  • lpsztemplatename
  • cdatabackupdlg

得分解答快速导航

  • 帖主:nickzwd
  • huakai8866

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo