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());
      就好了。
  • 相关阅读:
    YAML序列样式
    YAML块标量头
    YAML字符流
    YAML语法字符
    YAML流程
    YAML集合和结构
    YAML缩进和分离
    YAML简介
    Git工作流程
    Git使用前配置
  • 原文地址:https://www.cnblogs.com/kevinzhwl/p/3878915.html
Copyright © 2011-2022 走看看