win32 把位图在窗口显示出来解决思路

win32把位图在窗口显示出来C/C++ codeswitch (message){case WM_CREATE:{hBitmapLoadBitmap(hInstance,

win32 把位图在窗口显示出来

C/C++ code
    switch (message)    {    case WM_CREATE:        {            hBitmap=LoadBitmap(hInstance," G://1.bmp");            cxSource=bitmap.bmWidth;            cySource=bitmap.bmheight;            break;        }    case WM_SIZE:        cxClient=LOWORD(lParam);        cyClient=LOWORD(lParam);        break;    case WM_PAINT:        hdc = BeginPaint(hWnd, &ps);        // TODO: 在此添加任意绘图代码...         hdcMem = CreateCompatibleDC (hdc) ;                          SelectObject (hdcMem, hBitmap) ;                          for (y = 0 ; y < cyClient ; y += cySource)                          for (x = 0 ; x < cxClient ; x += cxSource)                          {                                         BitBlt (hdc, x, y, cxSource, cySource, hdcMem, 0, 0, SRCCOPY) ;                         }                         DeleteDC (hdcMem) ;        EndPaint(hWnd, &ps);        break;




各位大大,小弟初学windows编程,位图操作按上面的代码,结果显示出来的是空白窗口,请各位大大帮忙找找原因!

[解决办法]
1. 首先要确保LoadBitmap是执行成功的,应该判断下。
2. 参考下http://blog.csdn.net/joeblackzqq/article/details/7267873
C/C++ code
BOOL DrawPic(HWND hWnd)                     // 在指定的控件上画图  {      CImage img;      if(SUCCEEDED(img.Load(imgPath)))      {          CWnd *pWnd = CWnd::FromHandle(hWnd);          CPaintDC dc(pWnd);                  // dc必须用指定的控件窗口来初始化,否则将看不到绘图结果          CRect rect;          pWnd->GetClientRect(rect);           // 获取控件的大小          img.Draw(dc.m_hDC, rect);            return TRUE;      }      return FALSE;                           // 绘图失败  }
[解决办法]
补充:
1.CImage在VC6中是没有的,在高版本中才有。
2.imgPath是我的全局变量,是图片的绝对路径。
3.hWnd是控件的句柄.