我先在CMainFrame文件头这样引用:
#include "ChatDlg.h"
并在public下面声明CChatDlg* cdlg;
然后在CMainFrame.cpp里面的加入下面代码:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
CListBox *pListBox = (CListBox *)cdlg->GetDlgItem(IDC_MEMBERLIST);//IDC_MEMBERLIST是ChatDlg对话框中的ListBox控件
}
编译没错,运行程序崩溃!!怎么回事?
#include "ChatDlg.h"
并在public下面声明CChatDlg* cdlg;
然后在CMainFrame.cpp里面的加入下面代码:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
CListBox *pListBox = (CListBox *)cdlg->GetDlgItem(IDC_MEMBERLIST);//IDC_MEMBERLIST是ChatDlg对话框中的ListBox控件
}
编译没错,运行程序崩溃!!怎么回事?
m_bCreate = FALSE;BOOL CTestDlg::OnInitDialog()
{
CDialog::OnInitDialog(); m_bCreate = TRUE; return TRUE; // return TRUE unless you set the focus to a control
}在操作的时候,首先看m_bCreateif(!m_bCreate)
return;
楼主声明了cdlg,但它是否就是对话框的指针?
应该向mainframe传对话框的指针
还有,一般不要直接操作其他界面的控件,发消息比较好
晕,你这也叫创建对话框阿。CChatDlg* cdlg;
此时cdlg只是一个随即地址,应该
先cdlg = new CChatDlg;//创建对象
然后cdlg-〉Create();//创建对话框cdlg-〉ShowWIndow(SW_SHOW);// 显示对话框,就可以了
如果你想得到这个指针并使用,你可以在使用时再获得,也就是在CMainFrame的其它成员函数是加入这个代码。
如果你是想在其它类中使用这个指针,你可以通过AfxGetMainWnd来得到CMainFrame指针,之后就和上面的假设作法一致了。