📄 selphotodlg.cpp
字号:
// SelPhotoDlg.cpp : implementation file
//
#include "stdafx.h"
#include "PersonelManage.h"
#include "SelPhotoDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSelPhotoDlg dialog
CSelPhotoDlg::CSelPhotoDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSelPhotoDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CSelPhotoDlg)
m_strFilePath = _T("");
//}}AFX_DATA_INIT
m_pPic = NULL;
}
void CSelPhotoDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSelPhotoDlg)
DDX_Text(pDX, IDC_EDIT_FILEPATH, m_strFilePath);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSelPhotoDlg, CDialog)
//{{AFX_MSG_MAP(CSelPhotoDlg)
ON_WM_PAINT()
ON_BN_CLICKED(IDC_BUTTON_SELFILE, OnButtonSelfile)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSelPhotoDlg message handlers
void CSelPhotoDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
if(m_pPic)
{
CWnd *pWnd = GetDlgItem(IDC_STATIC_PHOTO);
CRect rect;
pWnd->GetClientRect(&rect);
CDC *pDC = pWnd->GetDC();
OLE_XSIZE_HIMETRIC hmWidth;
OLE_YSIZE_HIMETRIC hmHeight;
m_pPic->get_Width(&hmWidth);
m_pPic->get_Height(&hmHeight);
m_pPic->Render(*pDC, 0, 0, rect.Width(), rect.Height(), 0, hmHeight, hmWidth, -hmHeight, NULL);
}
// Do not call CDialog::OnPaint() for painting messages
}
void CSelPhotoDlg::OnButtonSelfile()
{
// TODO: Add your control notification handler code here
CString szFilter = _T("图像文件(*.jpg)|*.jpg|JPEG文件(*.jpg)|*.jpg|所有文件(*.*)|*.*||");
CFileDialog selFileDlg(TRUE, "BMP", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
if(selFileDlg.DoModal() == IDOK)
{
m_strFilePath = selFileDlg.GetPathName();
UpdateData(FALSE);
if(m_strFilePath.GetLength() > 0)
{
IStream *pStm;
CFileStatus fStatus;
CFile file;
LONG cb;
//IPicture *pPic;
if(file.Open(m_strFilePath, CFile::modeRead) && file.GetStatus(m_strFilePath, fStatus)
&& ((cb = fStatus.m_size) != -1))
{
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, cb);
LPVOID pvData = NULL;
if(hGlobal != NULL)
{
if((pvData = GlobalLock(hGlobal)) != NULL)
{
//把文件读入内存缓冲区
file.ReadHuge(pvData, cb);
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);
}
}
}
//装载图像文件
OleLoadPicture(pStm, fStatus.m_size, TRUE, IID_IPicture, (LPVOID *)&m_pPic);
pStm->Release();
}
}
else
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -