开发wince智能设备应用程序,mfc基于对话框的程序,用bmp格式图片做对话框背景,
图片800*480像素,大小在1M左右,
对话框显示时图片加载很慢,怎么优化啊?
代码如下:OnPaint()
{
    CPaintDC dc(this);
    CDC memDC;
    CBitmap bmBkgnd;
    bmBkgnd.Attach( m_Bkgnd );    memDC.CreateCompatibleDC(&dc);
    CBitmap *pOldBm = memDC.SelectObject( &bmBkgnd );    BITMAP bm;
    bmBkgnd.GetObject(sizeof(bm), &bm);    dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &memDC, 0, 0, SRCCOPY );
    memDC.SelectObject( pOldBm );
    bmBkgnd.Detach();
    CDialog::OnPaint();
    
}OnInitDialog()中加载图片   
m_Bkgnd =::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP1) );

解决方案 »

  1.   

    标准的写法就是类似于你这样了。要快,为何不将CBitmap bmBkgnd;作为类成员,放在OnInitDialog()中加载呢?!根本不需要Attach和Detach这么麻烦
      

  2.   


    Attach和Detach这两个函数会影响窗口显示时间,图片是在OnInitDialog()中加载的。
      

  3.   

    可以考虑使用DirectDraw里面的方法,速度会有明显变化。
      

  4.   

    内存DC最后需要DeleteDC,释放GDI资源
      

  5.   

    WINCE下纯MFC智能设备应用程序可以用吗?这种类型的工程不能用GDI+。。
      

  6.   


    在windows上安装dirctX开发包应该可以的,我以前用过的。