void CTestMfcDlg::LoadBitmaps()
{
static CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
static BITMAP bm;
bmp.GetBitmap(&bm);
CDC dcMemory;
CClientDC dc(this);
dcMemory.CreateCompatibleDC(&dc);
dcMemory.SelectObject(&bmp);
dc.BitBlt(0,0,50,50,&dcMemory,0,0,SRCCOPY);
}这是我自定义的一个函数,然后在OnInitDialog函数中会调用它.我的工程是基于对话框的MFC工程.
大家帮忙给看看.

解决方案 »

  1.   

    把代码放到OnPaint里看看
    另把显示代码改成这样看看,首先判断图片是否加载成功void CTestMfcDlg::LoadBitmaps()
    {
         static CBitmap bmp;
    bmp.LoadBitmap(IDB_BITMAP1);
    ASSERT(bmp.GetSafeHandle());
    static BITMAP bm;
    bmp.GetBitmap(&bm);
    CDC dcMemory;
    CClientDC dc(this);
    dcMemory.CreateCompatibleDC(&dc);
    dcMemory.SelectObject(&bmp);
    dc.BitBlt(0,0,bm.bmWidth,bm.bmHeight,&dcMemory,0,0,SRCCOPY);}
      

  2.   

    窗口的绘制是在onpaint函数里不停的刷新来完成的。你在初始化函数oninitdialog里面只调用了一次,当然会出现这个问题了。
    还有就是记得释放你的缓冲的dcMemory,还有bmp要删掉这个object
      

  3.   

    Windows程序总是在恰当的时候刷新窗口,你在OnInitDialog显示是不行的
    OnInitDialog函数调用完毕会触发窗口重画消息,这样你上次的调用就全没了,所以你看不到