我在点击托盘图标时需要显示一个下载进度的消息对话框,我将托盘动作与OnShowWindow函数关联,动态创建了一个对话框,然后向其上写信息,编译通过,但是程序运行时出错。各位帮我看下是哪的问题?
InfoDlg::InfoDlg(CWnd* pParent /*=NULL*/)
   : CDialog(InfoDlg::IDD, pParent) {
//{{AFX_DATA_INIT(InfoDlg)
// NOTE: the ClassWizard will add member initialization here
    
//}}AFX_DATA_INIT
}//创建一个对话框类的时候我什么都没做void InfoDlg::OnShowWindow()
{
  CString totalnum;
  m_dlg=new CDialog();
  m_dlg->Create(IDD_DIALOG1);
  m_dlg->ShowWindow(SW_SHOW); 
  m_TotalLoad=m_ArrayName.GetSize();  //获得下载文件总数  
  totalnum.Format("%d",m_TotalLoad);
  ::SetDlgItemText(m_dlg->m_hWnd,IDC_STATIC2,totalnum);//在STATIC2中显示
  ::SetDlgItemText(m_dlg->m_hWnd,IDC_STATIC4,m_ArrayName.GetAt(count+1));
  //m_ArrayName.GetAt(count+1))获得当前下载文件,在STATIC4中显示
}

解决方案 »

  1.   

    对话框中控件是在resource中静态添加的,并且设置了一个按扭,现在按扭也无响应。why?
      

  2.   

    m_dlg=new   CXXXDialog(this); 
    重载一下
      

  3.   

    回zhoujianhei :
    重载过了,问题还是没解决。
      

  4.   

    必须从CDialog继承一个对话框类,添加按钮的响应代码
      

  5.   

    回shakaqrj :静态时运行候都不会出错,只要按了按扭,或者下载的线程启动后动态的向STATIC里写数据时就会出错出错时我点调试,指令引用内存0x00000060,该内存不能为read.........
     
      

  6.   

    void   InfoDlg::OnShowWindow()
    {
        CString   totalnum;
        if(m_dlg==NULL)
        {
           m_dlg=new   CDialog();
           m_dlg-> Create(IDD_DIALOG1);
        }
        m_dlg-> ShowWindow(SW_SHOW);  
        m_TotalLoad=m_ArrayName.GetSize();     //获得下载文件总数    
        totalnum.Format("%d",m_TotalLoad);
        ::SetDlgItemText(m_dlg-> m_hWnd,IDC_STATIC2,totalnum);//在STATIC2中显示
        ::SetDlgItemText(m_dlg-> m_hWnd,IDC_STATIC4,m_ArrayName.GetAt(count+1));
        //m_ArrayName.GetAt(count+1))获得当前下载文件,在STATIC4中显示
    }
      

  7.   

    我终于找到出错原因了,是count+1超界了。:(不过还是要给分的