【问题标题】:How to add picture box in win32 API using visual c++如何使用visual c++在win32 API中添加图片框
【发布时间】:2009-11-18 06:25:20
【问题描述】:

我有一个 Visual c++ 中的 Window (win32 API) 应用程序。我没有使用 MFC。我必须在我的应用程序中添加一个图片框并定期更改此图片框的图像。任何人都可以帮助我完成上述任务吗?提前致谢。

【问题讨论】:

    标签: c++ winapi


    【解决方案1】:

    在此处发布完整代码是一项相当复杂的任务,但我将尝试提供一些有关如何执行此操作的指南:

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

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

      HBITMAP hImage = (HBITMAP)LoadImage(NULL, (LPCSTR)file, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_LOADTRANSPARENT);
      
    2. 将上面的句柄存储在应用程序中的某个位置,您可以从 WindowProcedure 访问它

    3. 在 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);
    

    其中 hwnd 是静态控件的句柄。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-02
      • 2011-11-16
      相关资源
      最近更新 更多