zoukankan      html  css  js  c++  java
  • dll中创建非模式对话框的问题

     今天在dll的输出函数中用非模态对话框遇到一个错误,File : dlgcore.cpp,line : 173。经过追踪调试,发现在非模态对话的创建过程中,在查找资源的时候出了问题。
      HINSTANCE hInst = AfxFindResourceHandle(lpszResource, RT_DIALOG);
      HRSRC hResource = ::FindResource(hInst, lpszResource, RT_DIALOG);
      查到的资源句柄hResource为空,即没有查到这个资源。
      在函数AfxFindResourceHandle的调用过程中有这样一段
      // first check the main module state
      AFX_MODULE_STATE* pModuleState = AfxGetModuleState();
      if (!pModuleState->m_bSystem)
      {
        hInst = AfxGetResourceHandle();
        if (::FindResource(hInst, lpszName, lpszType) != NULL)
        return hInst;
      }
      函数AfxGetModuleState是取得当前模块的状态。哦,原来在输出函数的开头忘记更改当前模块状态为dll了,于是在函数开头加了个
      AFX_MANAGE_STATE(AfxGetStaticModuleState());
      就好了。
  • 相关阅读:
    数列大小比较
    C的输入&输出
    PHP常用函数大全
    选择成就不一样的周末
    美图上市,跟我有关系?
    专心跑步
    越走窄的道路,谁能带我飞
    赶上了双12的末班车
    难道只要期待
    未达到的大梁、二梁,有希望便不会累
  • 原文地址:https://www.cnblogs.com/kevinzhwl/p/3878915.html
Copyright © 2011-2022 走看看