请各位帮忙
我在程序中重载了onpaint函数,功能是将图片显示在picture控件中,可是运行时调用窗口后,窗口上除了edit控件其他控件都不显示了,请问是怎么回事啊?

解决方案 »

  1.   

    是不是拿picture当对话框背景图了,其他控件被图片挡住了吧,
    把控件属性中的transparent选中试试
      

  2.   

    void CJhgjgjgjjhfDlg::OnButton1() //
    {
    // TODO: Add your control notification handler code here static char BASED_CODE szFilter[]="jpg Files (*.jpg)|*.jpg|gif file(*.gif)|*.gif|bmp Files (*.bmp)|*.bmp||";
      CFileDialog fd(TRUE,NULL,NULL,0,szFilter,this);
      if(IDOK!=fd.DoModal()) 
        return;
    CFile fileImage;
    CFileStatus fileStatus;
        fileImage.Open(fd.GetPathName(),CFile::modeRead);
      fileImage.GetStatus(fileStatus);
    nLen = (UINT)fileStatus.m_size;
    hGlobal=GlobalAlloc(GPTR,nLen);
    LPSTR lpStr = (LPSTR)GlobalLock(hGlobal);
    fileImage.ReadHuge(lpStr,fileStatus.m_size);
    }
    void CJhgjgjgjjhfDlg::OnPaint() 
    {
    CPaintDC dc(this); // device context for painting

    // TODO: Add your message handler code here
    if (nLen!=0)
    {
    LPSTR lpStr=NULL;
    CString str;
    byte * pStrWithNull;
     /////////////////////////////////////////////////////////// 
    lpStr = (LPSTR)GlobalLock(hGlobal);
    pStrWithNull = new byte[nLen+1];
    memcpy( pStrWithNull,lpStr, nLen );
    (m_Pic.LoadPictureData(pStrWithNull, nLen));//  ///为了显示图片
    pStrWithNull[nLen] = 0; // Set '\0' at end of string
    GlobalUnlock(hGlobal);
    delete [] pStrWithNull;
    pStrWithNull=NULL;
    CClientDC dc(GetDlgItem(IDC_PIC));   
    //CClientDC dc(GetDlgItem(IDC_RICHEDIT)); 
    m_Pic.UpdateSizeOnDC(&dc);
      // Get Picture Dimentions In Pixels
    CRect rect;
    m_photo.GetClientRect(rect);
    //m_richedit.GetClientRect(rect);
    m_Pic.Show(&dc, rect);//显示出来看看
    }
    }
      

  3.   

    应该是响应WM_ERASEBKGND来绘制背景
      

  4.   

    不是绘制背景,是在picture控件里显示图片,代码中的m_photo是picture控件变量
      

  5.   

    CPaintDC  dc(this);  //  device  context  for  painting  
    CDialog::OnPaint();
    ...