• 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());
      就好了。
  • 相关阅读:
    Chapter 1 Secondary Sorting:Introduction
    Apache Spark : RDD
    Apache Spark : Introduction
    Python 变量和数据类型
    CMP3$
    idea实现eclipse工作空间的思路
    Oracle 数据字典查询
    sql左连接、右连接、内连接、不写连接符号
    ADB
    Serverless
  • 原文地址:https://www.cnblogs.com/kevinzhwl/p/3878915.html
Copyright © 2020-2023  润新知