给我用c++写一段mfc中通过点击botton获得内存中的指定9张图片的代码
时间: 2024-04-10 21:28:40 浏览: 138
C++读取图片代码
5星 · 资源好评率100%
好的!以下是一个简单的 C++ MFC 代码示例,通过点击按钮获取内存中的9张指定图片:
首先,你需要创建一个 MFC 对话框应用程序,并在对话框上添加一个按钮控件(ID为 IDC_BUTTON)和一个图片控件(ID为 IDC_PICTURE)。
然后,在你的对话框类的头文件中添加以下代码:
```cpp
#include <vector>
#include <string>
class CMyDialog : public CDialogEx
{
public:
CMyDialog(CWnd* pParent = nullptr);
enum { IDD = IDD_MYDIALOG };
protected:
HICON m_hIcon;
CStatic m_pictureCtrl;
std::vector<CImage> m_images;
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg void OnButtonClick();
DECLARE_MESSAGE_MAP()
};
```
在对话框类的源文件中添加以下代码:
```cpp
CMyDialog::CMyDialog(CWnd* pParent /*=nullptr*/)
: CDialogEx(IDD_MYDIALOG, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
BOOL CMyDialog::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 加载9张图片到内存中
for (int i = 1; i <= 9; i++) {
CString imagePath;
imagePath.Format(L"image%d.jpg", i);
CImage image;
image.Load(imagePath);
m_images.push_back(image);
}
return TRUE;
}
void CMyDialog::OnPaint()
{
CPaintDC dc(this);
if (IsIconic())
{
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialogEx::OnPaint();
}
}
void CMyDialog::OnButtonClick()
{
// 显示第一张图片
m_pictureCtrl.SetBitmap((HBITMAP)m_images[0]);
}
BEGIN_MESSAGE_MAP(CMyDialog, CDialogEx)
ON_WM_PAINT()
ON_BN_CLICKED(IDC_BUTTON, &CMyDialog::OnButtonClick)
END_MESSAGE_MAP()
```
在资源文件中添加一个按钮控件和一个图片控件,并分别设置 ID 为 IDC_BUTTON 和 IDC_PICTURE。
这段代码将在对话框初始化时加载9张图片到内存中。当按钮被点击时,将显示第一张图片在图片控件中。
请根据你的实际需求修改加载图片的路径和显示图片的逻辑。
希望对你有所帮助!如果你有任何其他问题,请随时提问。
阅读全文