请教大神,用MFC怎么在一个对话框的中间部分显示很多图片,通过添加的方式可以选择图片。
展开全部
试试看,是不是你要的功能。
添加头文件vector和atlimage.h
std::vector<CString> vecFileName;
CFileDialog *lpszOpenFile;
lpszOpenFile = new CFileDialog(TRUE, NULL, NULL, OFN_ALLOWMULTISELECT | OFN_PATHMUSTEXIST, NULL, NULL);//生成一个对话框
if (lpszOpenFile->DoModal() == IDOK)
{
POSITION pos = lpszOpenFile->GetStartPosition();
while (pos != NULL)
{
vecFileName.push_back(lpszOpenFile->GetNextPathName(pos));
}
}
delete lpszOpenFile;
CImage img;
CRect rcClient;
GetClientRect(rcClient);
CDC* pDC = GetDC();
::SetStretchBltMode(pDC->m_hDC, HALFTONE);
::SetBrushOrgEx(pDC->m_hDC, 0, 0, NULL);
for (size_t i = 0; i < vecFileName.size(); i++)
{
if (!img.IsNull())
{
img.Destroy();
}
img.Load(vecFileName.at(i));
if (img)
{
//将客户区分成16块
CRect rcTemp(rcClient.Width() / 4 * (i % 4), rcClient.Height() / 4 * (i / 4),
rcClient.Width() / 4 * ((i % 4) + 1), rcClient.Height() / 4 * ((i / 4) + 1));
img.Draw(pDC->m_hDC, rcTemp);
}
}
img.Destroy();
pDC->DeleteDC();
vecFileName.clear();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询