视图类内 在CListCtrl控件中双击缩略图弹出大图

来源:互联网 发布:启明星软件 功能 编辑:程序博客网 时间:2024/06/14 04:11

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 paintingdc.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();        }}}


 

 

0 0
原创粉丝点击