关于非模式对话框下的几个问题?

jollykitten 2008-01-22 11:16:27
1)
在InfoDlg类中定义
InfoDlg* m_dlg=new InfoDlg();
m_dlg->Create(IDD_DIALOG1,NULL);

我这样创建了一个非模式对话框的对象InfoDlg* m_infodlg;
为什么对话框创建之后取m_infodlg->m_hWnd的值是空呢?

2)
我在无模式对话框下设置一个进度条
CProgressCtrl m_Progress;
m_Progress.SetRange(0,m_TotalLoad); <----这句出错
系统显示
_AFXCMN_INLINE void CProgressCtrl::SetRange(short nLower, short nUpper)
{ ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, PBM_SETRANGE, 0, MAKELPARAM(nLower, nUpper)); }

我用这个对话框类指针m_dlg->这样也找不到m_Progress这个变量,为什么呢?
...全文
94 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
shakaqrj 2008-01-22
  • 打赏
  • 举报
回复
m_infodlg 没有create()自然是空
jollykitten 2008-01-22
  • 打赏
  • 举报
回复
1)
void TestDlg::Onbutton()
{
....
InfoDlg* m_infodlg;
m_infodlg=NULL;
m_infodlg = new InfoDlg ;
m_infodlg->OnShowWindow1();
if( m_infodlg->m_hWnd==NULL) <-----这时取到的m_infodlg->m_hWnd为空,但是
m_infodlg->m_dlg->m_hWnd不为空,为什么?不解!
.......
}


UINT InfoDlg::OnShowWindow1()
{
InfoDlg* m_dlg=new InfoDlg();
m_dlg->Create(IDD_DIALOG1,NULL);
m_dlg->ShowWindow(SW_SHOW);
.....
}





shakaqrj 2008-01-22
  • 打赏
  • 举报
回复
看你完整的代码
是在什么情况下设置的
什么情况下访问m_hWnd
jollykitten 2008-01-22
  • 打赏
  • 举报
回复
1.
create返回值是1

类指针m_dlg->m_hWnd的值不是空的,但是类对象m_infodlg->m_hWnd是空的

2.我添加的classwizard 系统有生成
DDX_Control(pDX, IDC_PROGRESS1, m_Progress);

CProgressCtrl m_Progress;

为什么不行?
shakaqrj 2008-01-22
  • 打赏
  • 举报
回复
1.看create返回值
2.在初始化函数中初始化!!!
jollykitten 2008-01-22
  • 打赏
  • 举报
回复
不知道怎么回事,删了原来的进度条重建一次居然不报错了。。。
jollykitten 2008-01-22
  • 打赏
  • 举报
回复
OK,明白了

不过我的进度条还是创建不起来T.T


15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧