1新建一个对话框,用来显示图片
在头文件ShowPicDialog.h中添加
public:
afx_msg void OnPaint();
virtual BOOL OnInitDialog();
public:
TCHAR* path;//要显示图片的路径
CImage m_pimgage;
在ShowPicDialog.cpp中添加
void ShowPicDialog::OnPaint()
{
CRect rc;
GetClientRect(rc);
CPaintDC dc(this); // device context for painting
dc.SetStretchBltMode(HALFTONE);
HDC hDC = dc.GetSafeHdc();
m_pimgage.Draw(hDC, rc);
}
BOOL ShowPicDialog::OnInitDialog()
{
m_pimgage.Load(path);//获取图像对象
int img_width = m_pimgage.GetWidth();
int img_height = m_pimgage.GetHeight();
double width_height_rate = (double)img_width/(double)img_height;
int max_width_height = max(img_height,img_width);
if(max_width_height > 800){
if(img_height> img_width)
{
img_width = (int)(img_width*800/(double)img_height);
img_height = 800;
}
else
{
img_height = (int)(img_height*800/(double)img_width);
img_width = 800;
}
}
SetWindowPos(NULL, 100, 100, img_width, img_height, SWP_SHOWWINDOW);
return TRUE;
}
2 添加双击响应函数(视图类头文件为ListDemoView.h)
在ListDemoView.h中添加
afx_msg void OnItemClickListctrl(NMHDR* pNMHDR, LRESULT* pResult);//处理双击问题
在ListDemoView.cpp中添加
BEGIN_MESSAGE_MAP(CListDemoView, CView)
......
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST_DIVISION, OnItemClickListctrl)//处理item双击问题
END_MESSAGE_MAP()
.......
void CListDemoView::OnItemClickListctrl(NMHDR* pNMHDR, LRESULT* pResult) //处理item双击事件
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
if(pNMListView->uChanged==LVIF_STATE)
{
if(pNMListView->uNewState & LVIS_SELECTED)
{
int nItem=pNMListView->iItem;//获取点中的项目编号
CString imagepath_t;
imagepath_t = pathset[nItem].c_str();//所有的图片绝对路径存放在vector<string>pathset中,此处为找到相应路径
TCHAR* imagepath = new TCHAR[50];
imagepath = imagepath_t.GetBuffer(imagepath_t.GetLength());//cstring convert to tchar*
imagepath_t.ReleaseBuffer();
ShowPicDialog Spic;//新建用来显示图片的对话框对象
Spic.path = imagepath;
Spic.DoModal();
}
}
}