如题,程序如下:
BOOL CRandomChange::OnInitDialog() 
{
CDialog::OnInitDialog();

// TODO: Add extra initialization here
    CStatic *pStatic = (CStatic *)GetDlgItem(IDC_STATIC); 
 
m_bitmap.LoadBitmap(IDB_BITMAP1);   //m_bitmap是类的CBitmap类型的成员变量

pStatic->ModifyStyle(0xF, SS_BITMAP); 
pStatic->SetBitmap(m_bitmap);  return TRUE;  // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}程序编译没有问题,但是一运行就就会显示应用程序错误,“0x5f436809”指令引用的“0x00000020”内存,该内存不能为“read”。这是什么原因呢?该怎么改正?谢谢

解决方案 »

  1.   

    首先在
       CStatic *pStatic = (CStatic *)GetDlgItem(IDC_STATIC); 
    设断点
    单步跟踪 看哪句出了问题另外IDC_STATIC的表示名称改一下
    我一般用这样的方法
    BOOL CRandomChange::OnInitDialog() 

    CDialog::OnInitDialog(); m_bitmap.LoadBitmap(IDB_BITMAP1);  //m_bitmap是类的CBitmap类型的成员变量 GetDlgItem(IDC_STATIC1)->ModifyStyle(0xF, SS_BITMAP); 
    GetDlgItem(IDC_STATIC1)->SetBitmap(m_bitmap); return TRUE;  // return TRUE unless you set the focus to a control } 
      

  2.   

    错了
    GetDlgItem(IDC_STATIC1)->ModifyStyle(0xF, SS_BITMAP); 
    GetDlgItem(IDC_STATIC1)->SetBitmap(m_bitmap); 
    的方法 不对
    不好意思
      

  3.   

    静态框的ID都是IDC_STATIC,改成IDC_STATIC1就好了,控件和代码那里都改下~~
      

  4.   

    刚试验了一下 就是CStatic控件的的标识问题 
    改成不同于 IDC_STATIC 即可