这是我的问题:在我的解决方案中,我有两个项目,一个是库,我在其中创建了一个资源源文件(mylib.rc)和一个对话框模板。然后,我创建了一个继承CDialog并使用此模板的类。但是当我实例化它并调用DoModal()时,没有附加任何东西...
这是我的类的代码,是不是出了什么问题?
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(); }发布于 2012-06-29 02:03:55
你是静态链接到库中的吗?
如果是,其中一个原因可能是您正在使用丰富的编辑控件,但您没有初始化RICHED20.DLL或RICHEDIT.DLL.3您必须调用AfxInitRichEdit2或AfxInitRichEdit。如果对话框的资源在DLL中,则必须在调用对话框之前将资源句柄设置为DLL模块的句柄。
调用AfxGetResourceHandle来存储当前句柄,调用AfxSetResourceHandle来设置句柄到DLL。
完成对话框后,使用AfxSetResourceHandle设置句柄,使用保存的对话框。
发布于 2012-06-29 03:19:44
尝试将以下内容放在调用DoModal()之前
AFX_MANAGE_STATE(AfxGetStaticModuleState());发布于 2012-06-29 15:36:22
我最终找到了它,我使用了第二个ressource文件(*.rc),我只需要通过"Ressource View“中的"Set Includes”对话框将第二个文件作为“编译时指令”包含到第一个文件中。
不管怎样,谢谢你们!
https://stackoverflow.com/questions/11247498
复制相似问题