我想用CStatic显示一个位图,把下面的代码放到主对话框的oninitdialog()里运行没有问题,可以显示,但我把它放在用主对话框弹出的非模式对话框中的oninitdialog()一运行就出错(编译没问题)请各位高人指点    
    hBitmap=::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP1));
    tu=((CStatic *)GetDlgItem(IDC_STATIC));   //tu是CStatic *;
    tu->ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);
    tu->SetBitmap(hBitmap);

解决方案 »

  1.   

    AfxGetInstanceHandle()改成AfxGetSafeHandle()记不清楚了
      

  2.   

    非模态对话框必须在主窗口构造完成后才可以调用一些资源(比如位图),
    把你的这段代码前加个判断,最好是在主窗口第二次OnDraw时再运行
      

  3.   

    我建立的是基于对话框的工程,没有主窗口,只有主对话框,而且也没有OnDraw函数
      

  4.   

    没问题的吗?
    BOOL CFanqingDlg::OnInitDialog()
    {
    CDialog::OnInitDialog(); ...... // Set the icon for this dialog.  The framework does this automatically
    //  when the application's main window is not a dialog
    SetIcon(m_hIcon, TRUE); // Set big icon
    SetIcon(m_hIcon, FALSE); // Set small icon
        bmp=::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP1));
        tt=((CStatic *)GetDlgItem(IDC_FAN)); 
        tt->ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);
         tt->SetBitmap(bmp); // TODO: Add extra initialization here

    return TRUE;  // return TRUE  unless you set the focus to a control
    }
      

  5.   

    回火影忍者
    如果是主对话框的OnInitDialog()就没问题,可以显示图片,但是把代码放在从主对话框中弹出的非模态对话框的OnInitDialog()中就不能显示图片了,但编译可以通过
      

  6.   

    部分代码BOOL MyDlg::OnInitDialog() 
    {
    CDialog::OnInitDialog();

    bmp=::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP1));
        tt=((CStatic *)GetDlgItem(IDC_FAN)); 
        tt->ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);
         tt->SetBitmap(bmp);
    return TRUE;  // return TRUE unless you set the focus to a control
                  // EXCEPTION: OCX Property Pages should return FALSE
    }
    ///HCURSOR CXxxxDlg::OnQueryDragIcon()
    {
    return (HCURSOR) m_hIcon;
    }void CXxxxDlg::OnButton1() 
    {
    dlg.Create(IDD_DIALOG1,this);
    dlg.ShowWindow(1);

    }
      

  7.   

    非模态的DLG好像在人工调用OninitDialog的吧?