我使用vc6.0 的 Win32 Application 编写一个win32程序,我需要使用 在 视图区 使用 左键单击,然后回加载一个外部的bmp或者jpg的文件,我如何加载,并显示出来,我试了很久,都没有显示出来!下面是我的代码,请指教!
//
HDC DC, memDC;
HBITMAP bitmap;
//
switch (message) 
{
case WM_LBUTTONDOWN:
  DC = GetDC(hWnd);
  memDC  = CreateCompatibleDC(DC);
  bitmap = (HBITMAP)LoadImage(NULL,"D:\\ff.bmp",IMAGE_BITMAP,640,480,LR_LOADFROMFILE);
  SelectObject(memDC,bitmap);
  BitBlt(DC, LOWORD(lParam), HIWORD(wParam), 64,64, memDC, 0,0, SRCCOPY);
  ReleaseDC(hWnd, DC);
  DeleteDC(memDC);
  break;
。。
}
我debug了一下,这个bmp文件是被成功的加载了,但是就是不能成功的显示出来,这是为什么啊??

解决方案 »

  1.   

    绘图的代码应该写在响应WM_PAINT消息时
      

  2.   

    关于显示的问题解决了!
    代码如下:
    case WM_LBUTTONDOWN:
    DC = GetDC(hWnd);
    memDC  = CreateCompatibleDC(DC);
    bitmap = (HBITMAP)LoadImage(NULL,"D:\\Study\\Test10\\ff.bmp",IMAGE_BITMAP,291,305,LR_LOADFROMFILE);
    SelectObject(memDC,bitmap);
    BitBlt(DC, 0, 0, 500, 500, memDC, 0,0, SRCCOPY);
    ReleaseDC(hWnd, DC);
    DeleteDC(memDC);
    break;但是我碰见了另一个问题,就是显示以后,我切换一下窗口,显示的图像没有了,我需要写什么代码?
    我想获得加载的这个文件的宽度和高度,代码怎么写??
      

  3.   

    但是我碰见了另一个问题,就是显示以后,我切换一下窗口,显示的图像没有了,我需要写什么代码?
    =======================
    因为切换过后,窗口被重绘,所以你的图象当然没有了。你应该在OnPaint里面加入你的绘制图象的代码。
      

  4.   

    我想获得加载的这个文件的宽度和高度,代码怎么写??
    =========================
    BITMAP bmInfo;
    bitmap = (HBITMAP)LoadImage(NULL,"D:\\Study\\Test10\\ff.bmp",IMAGE_BITMAP,291,305,LR_LOADFROMFILE);
    GetObject(bitmap,sizeof(BITMAP),&bmInfo);图象的宽度:bmInfo.bmWeight
    图象的高度: bmInfo.bmHeight