gpt4 book ai didi

c++ - MFC CDialog 不显示

转载 作者:行者123 更新时间:2023-11-30 04:26:53 24 4
gpt4 key购买 nike

这是我的问题:在我的解决方案中,我有 2 个项目,一个是我在其中创建了一个资源文件 (mylib.rc) 和一个对话框模板的库。然后我创建了一个继承 CDialog 并使用此模板的类。但是当我实例化它并调用 DoModal() 时,没有任何内容附加......

这是我类(class)的代码,有什么问题吗?

MyDialog.h

/*MyDialog.h*/
#pragma once
#include "../../../resource.h"

class MyDialog : public CDialog
{
enum {IDD=IDD_DLGTEMPLATE};
public:
MyDialog(CWnd* pParent = NULL);
virtual ~MyDialog();

protected:
virtual BOOL OnInitDialog();

DECLARE_MESSAGE_MAP()
private:
afx_msg void OnBnClickedOk();
afx_msg void OnBnClickedCancel();
};

MyDialog.cpp

/*MyDialog.cpp*/
#include "stdafx.h"
#include "MyDialog.h"

MyDialog::MyDialog(CWnd* pParent /*=NULL*/) : CDialog(IDD_DLGTEMPLATE, pParent) {}
MyDialog::~MyDialog() {}

BOOL MyDialog::OnInitDialog() { return TRUE; }

BEGIN_MESSAGE_MAP(MyDialog, CDialog)
ON_BN_CLICKED(IDOK, &MyDialog::OnBnClickedOk)
ON_BN_CLICKED(IDCANCEL, &MyDialog::OnBnClickedCancel)
END_MESSAGE_MAP()

void MyDialog::OnBnClickedOk() { OnOK(); }
void MyDialog::OnBnClickedCancel() { OnCancel(); }

最佳答案

您是否静态链接库?

如果是,原因之一可能是您正在使用丰富的编辑控件,但您没有初始化 RICHED20.DLL 或 RICHEDIT.DLL.3您必须调用 AfxInitRichEdit2 或 AfxInitRichEdit。如果对话框的资源在 DLL 中,则必须在调用对话框之前将资源句柄设置为 DLL 模块的句柄。

调用AfxGetResourceHandle 存储当前句柄,调用AfxSetResourceHandle 将句柄设置为DLL。

完成对话框后,使用 AfxSetResourceHandle 使用已保存的设置句柄。

关于c++ - MFC CDialog 不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11247498/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com