我在visual c ++中有一个Window(win32 API)应用程序.我没有使用MFC.我必须在我的应用程序中添加一个picutre框并定期更改此图片框的图像.任何人都可以帮助我完成上述任务吗?提前致谢.
在这里发布完整代码这是一项相当复杂的任务,但我会尝试给出一些如何做到这一点的指导:
第一种方法是加载图像并绘制它
加载你的图像(不幸的是,普通的Win32 API支持很多图像格式BMP,ICO ...).
HBITMAP hImage = (HBITMAP)LoadImage(NULL, (LPCSTR)file, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_LOADTRANSPARENT);
Run Code Online (Sandbox Code Playgroud)将句柄存储在应用程序的某个位置,您可以从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
Run Code Online (Sandbox Code Playgroud)应该管用.
现在,第二种方法是创建一个静态控件,类型为SS_BITMAP并将其图像设置为:
hImage = LoadImage(NULL, file, IMAGE_BITMAP, w, h, LR_LOADFROMFILE);
SendMessage(hwnd, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hImage);
Run Code Online (Sandbox Code Playgroud)
其中hwnd是静态控件的句柄.