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

如何使用visual c+在win32 API中添加图片框+; 我在Visual C++中有一个窗口(Win32 API)应用程序。我没有使用MFC。我必须添加一个图片框到我的应用程序中,并定期更改此图片框的图像。有人能帮我完成上述任务吗?提前感谢。,c++,winapi,C++,Winapi,在这里发布完整代码是一项相当复杂的任务,但我将尝试给出一些关于如何做到这一点的指导原则: 第一种方法是加载图像并绘制它 加载图像(不幸的是,普通Win32 API支持多种图像格式BMP、ICO…) 将上面的句柄存储在应用程序中的某个位置,您可以从WindowProcedure访问它 在WM_PAINT消息上的WinProc中,您需要绘制图像。代码类似于: HDC hdcMem = CreateCompatibleDC(hDC); // hDC is a DC structure supplie

在这里发布完整代码是一项相当复杂的任务,但我将尝试给出一些关于如何做到这一点的指导原则:

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

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

  • 将上面的句柄存储在应用程序中的某个位置,您可以从WindowProcedure访问它

  • 在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是静态控件的句柄

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