两个重要函数
BitBlt
CreateCompatibleDC

解决方案 »

  1.   

    我的代码如下,编译、执行正常,就是没有显示要加载的位图。
    是不是代码放置位置有误或别的原因,请看看。HDC hdc; //设备环境句柄
    HDC hdcmem; //图形环境句柄
    HBITMAP hbm; //位图句柄
    BITMAP bm; //BITMAP结构//位图操作
       hbm=LoadBitmap(hInstance,"flower");  //
       GetObject(hbm,sizeof(BITMAP),(LPVOID)&bm);  //获取位图尺寸LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    PAINTSTRUCT ps;
    // HDC hdc;
    TCHAR szHello[MAX_LOADSTRING];
    LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);
    switch (message) 
    {
    case WM_CREATE: hdc=GetDC(hWnd); //获取设备环境
    hdcmem=CreateCompatibleDC(hdc); //获取内存设备环境
    ReleaseDC(hWnd,hdc); //获取设备环境
    break; case WM_PAINT:
    hdc = BeginPaint(hWnd, &ps);
    SelectObject(hdcmem,hbm);   //将位图选入内存设备环境
    //调用BitBlt将内存设备环境中的位图拷贝到设备环境中
    BitBlt(hdc,180,80,bm.bmWidth,bm.bmHeight,hdcmem,0,0,SRCCOPY);
    // TODO: Add any drawing code here...
    // RECT rt;
    // GetClientRect(hWnd, &rt);
    // DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);
    EndPaint(hWnd, &ps);   //释放设备环境句柄
    break; case WM_DESTROY:
    //释放位图
    DeleteObject(hbm);
    PostQuitMessage(0);
    break;
    default:
    return DefWindowProc(hWnd, message, wParam, lParam);
       }
       return 0;
    }