MFC DLL导出对话框问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC DLL导出对话框问题相关的知识,希望对你有一定的参考价值。
代码如下:
1)导出类:
#pragma once
#include "afx.h"
#include "afxcmn.h"
#include "DlgSystemRoom.h"
#include "DlgSystemTable.h"
#include "../Dynamiclibrary/SystemDeployDLL/Resource.h"
#include <vector>
using namespace std;
// CDlgSystemDeploy 对话框
class AFX_EXT_CLASS CDlgSystemDeploy : public CDialogEx
DECLARE_DYNAMIC(CDlgSystemDeploy)
public:
CDlgSystemDeploy(CWnd* pParent = NULL); // 标准构造函数
virtual ~CDlgSystemDeploy();
// 对话框数据
enum IDD = IDD_DLG_SYSTEM_DEPLOY ;
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
public:
CListCtrl m_listRoom; //餐厅列表
CListCtrl m_listTable; //餐桌列表
CDlgSystemRoom m_dlgRoom; //房间信息页面
CDlgSystemTable m_dlgTable; //餐桌信息页面
POSITION m_posRoom; //当前操作房间句柄
CString m_strPath; //当前操作餐厅路径
vector<CString> m_vRoomPath; //餐桌文件路径
virtual BOOL OnInitDialog();
virtual void OnCancel();
afx_msg void OnBnClickedBtnRoomAdd();
afx_msg void OnBnClickedBtnRoomChange();
afx_msg void OnBnClickedBtnRoomDelete();
afx_msg void OnNMClickListSystemRoom(NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnBnClickedBtnTableAdd();
afx_msg void OnBnClickedBtnTableChange();
afx_msg void OnBnClickedBtnTableDelete();
afx_msg void OnNMClickListSystemTable(NMHDR *pNMHDR, LRESULT *pResult);
;
同样的导出对话框类还有3个
在应用程序中调用如下:
if (m_pSystem == NULL)
AFX_MANAGE_STATE(AfxGetStaticModuleState());
m_pSystem = new CDlgSystemDeploy();
m_pSystem->Create(CDlgSystemDeploy::IDD, this);
出现问题:
DLL设置:
从 mfc 扩展 dll 导出的无模式对话框不显示
【中文标题】从 mfc 扩展 dll 导出的无模式对话框不显示【英文标题】:modaless dialog export from mfc extension dll not show 【发布时间】:2018-09-22 00:58:28 【问题描述】:我已经构建了以下配置:
1) 带有对话框 A(类 MultipleTextBox)的 MFC 扩展 dll
2) MFC 应用程序有对话框 B。(对话框 A 作为对话框 B 的子级)
对话框 B 在头文件中声明对话框 A 的实例:
private:
MultipleTextBox* m_pTextBox;
在对话框 B 的 OnInitDialog 函数中:
m_pTextBox->CreateDlg(MultipleTextBox::IDD, this);
m_pTextBox->ShowWindow(SW_SHOW);
m_pTextBox->MoveWindow(0, 0, 200, 200);
但对话框 A 在应用程序运行时不显示。
【问题讨论】:
【参考方案1】:这很可能是由于缺少调用
AFX_MANAGE_STATE(AfxGetStaticModuleState());
调用上述函数,然后对话框将显示在您的应用程序中。
【讨论】:
以上是关于MFC DLL导出对话框问题的主要内容,如果未能解决你的问题,请参考以下文章