创造带有自定义控件的对话框报错dlgcore.cpp 384
创建带有自定义控件的对话框报错dlgcore.cpp 384
1、在对话框中拖了一个custom controls控件,控件名:IDC_ADV_COMBO 如下图:
2、在对话框头文件中加入了,如何代码:(注意CAdvComboBox 是已经创建好的自定义控件类)
3、在对话框cpp文件中添加了,如下代码:
4、在主程序文件中调用如下代码:(备注:头文件中已添加CClusterDlg* pChatDlg)
5、报错窗口如下图:
------最佳解决方案--------------------
把if里的内容放if外网试试。
------其他解决方案--------------------
试试
Domodal
------其他解决方案--------------------
有人吗?帮忙解决一下啦!
------其他解决方案--------------------
wndcls.的Caption 呢?
------其他解决方案--------------------
你怀疑有啥用?你到崩溃点,然后callstack返回去找是不是窗体句柄不存在?
------其他解决方案--------------------
各位大牛们帮忙解决一下,谢谢啦!快下班了哦`````
------其他解决方案--------------------
同求以上内容
各位大牛们帮忙解决一下,谢谢啦!
------其他解决方案--------------------
同楼上,排队求!
------其他解决方案--------------------
if不是问题,已经调试过!
可能问题的原因是跨模块调用,因为该模块是DLL,然后使用主程序调用该模块,然后报这个错误
------其他解决方案--------------------
必须需要建立非模态对话框(项目需要)
Domodal已经试过,无用
------其他解决方案--------------------
如果将自定义控件删除,就可以创建窗体成功
应该是 自定义控件类有问题,以下是注册自定义控件代码
1、在对话框中拖了一个custom controls控件,控件名:IDC_ADV_COMBO 如下图:
2、在对话框头文件中加入了,如何代码:(注意CAdvComboBox 是已经创建好的自定义控件类)
// Dialog Data
//{{AFX_DATA(CClusterDlg)
enum { IDD = IDD_DIALOG_CLUSTER };
CxSkinButton m_btnZoom;
CSkinButton m_btnSetSendKey;
CListBoxST m_listBoxRecord;
CSkinButton m_btnOk;
CSkinButton m_btnCancel;
CSkinButton m_btnDelMsg;
CSkinButton m_btnMsgRecord;
CAdvComboBox m_ctlAdvCombo;//此处添加
//}}AFX_DATA
3、在对话框cpp文件中添加了,如下代码:
void CClusterDlg::DoDataExchange(CDataExchange* pDX)
{
CPDLDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CClusterDlg)
DDX_Control(pDX, IDC_CHAT_BTN_ZOOM, m_btnZoom);
DDX_Control(pDX, IDC_BTN_SET_SEND_KEY, m_btnSetSendKey);
DDX_Control(pDX, IDC_LIST_CLUSTER_MSG_RECORD, m_listBoxRecord);
DDX_Control(pDX, IDOK, m_btnOk);
DDX_Control(pDX, IDCANCEL, m_btnCancel);
DDX_Control(pDX, IDC_BUTTON_DEL_MSG_RECORD, m_btnDelMsg);
DDX_Control(pDX, IDC_BUTTON_MSG_RECORD, m_btnMsgRecord);
DDX_Control(pDX, IDC_ADV_COMBO, m_ctlAdvCombo); //Angus -Add
//}}AFX_DATA_MAP
}
4、在主程序文件中调用如下代码:(备注:头文件中已添加CClusterDlg* pChatDlg)
pChatDlg=new CClusterDlg;
pChatDlg->m_handle=handle;
pChatDlg->m_pCluster = this;
if(!pChatDlg->CreateWnd())//这句报错 Angus -Add
{
globe_critical_section_leave(&m_csCluster);
return FALSE;
}
5、报错窗口如下图:
------最佳解决方案--------------------
把if里的内容放if外网试试。
------其他解决方案--------------------
试试
Domodal
------其他解决方案--------------------
有人吗?帮忙解决一下啦!
------其他解决方案--------------------
wndcls.的Caption 呢?
------其他解决方案--------------------
你怀疑有啥用?你到崩溃点,然后callstack返回去找是不是窗体句柄不存在?
------其他解决方案--------------------
各位大牛们帮忙解决一下,谢谢啦!快下班了哦`````
------其他解决方案--------------------
同求以上内容
各位大牛们帮忙解决一下,谢谢啦!
------其他解决方案--------------------
同楼上,排队求!
------其他解决方案--------------------
if不是问题,已经调试过!
可能问题的原因是跨模块调用,因为该模块是DLL,然后使用主程序调用该模块,然后报这个错误
------其他解决方案--------------------
必须需要建立非模态对话框(项目需要)
Domodal已经试过,无用
------其他解决方案--------------------
如果将自定义控件删除,就可以创建窗体成功
应该是 自定义控件类有问题,以下是注册自定义控件代码
BOOL CAdvComboBox::RegisterWindowClass()
{
WNDCLASS wndcls;
HINSTANCE hInst;
hInst = AfxGetInstanceHandle();
ASSERT( hInst != 0 );
if( !(::GetClassInfo(hInst, ADVCOMBOBOXCTRL_CLASSNAME, &wndcls)) )
{
wndcls.style = CS_DBLCLKS
------其他解决方案--------------------
CS_HREDRAW
------其他解决方案--------------------