代码之家  ›  专栏  ›  技术社区  ›  Ravi shankar

如何使用Visual C++在Win32 API中添加图片框

  •  11
  • Ravi shankar  · 技术社区  · 16 年前

    在Visual C++中有一个窗口(Win32 API)应用程序。我没有使用MFC。我必须添加一个图片框到我的应用程序中,并定期更改此图片框的图像。有人能帮我完成上述任务吗?提前谢谢。

    1 回复  |  直到 16 年前
        1
  •  8
  •   Ferenc Deak    16 年前

    第一种方法是加载图像并绘制它

    1. 加载图像(不幸的是,普通Win32 API支持多种图像格式BMP、ICO…)。

      HBITMAP hImage = (HBITMAP)LoadImage(NULL, (LPCSTR)file, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_LOADTRANSPARENT);
      
    2. 在WM_PAINT消息上的WinProc中,您需要绘制图像。代码类似于:

      HDC hdcMem = CreateCompatibleDC(hDC); // hDC is a DC structure supplied by Win32API
      SelectObject(hdcMem, hImage);
      StretchBlt(
          hDC,         // destination DC
          left,        // x upper left
          top,         // y upper left
          width,       // destination width
          height,      // destination height
          hdcMem,      // you just created this above
          0,
          0,          // x and y upper left
          w,          // source bitmap width
          h,          // source bitmap height
          SRCCOPY);   // raster operation
      

    现在,第二种方法是创建静态控件,类型为SS_BITMAP,并将其图像设置为:

    hImage = LoadImage(NULL, file, IMAGE_BITMAP, w, h, LR_LOADFROMFILE);
    SendMessage(hwnd, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hImage);