📄 imageshow.cpp
字号:
// ImageShow.cpp : implementation file
//
#include "stdafx.h"
#include "BOLB.h"
#include "ImageShow.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CImageShow
CImageShow::CImageShow()
{
m_bShowFlag=FALSE;
}
CImageShow::~CImageShow()
{
if(m_bShowFlag){
pPic->Release();
GlobalFree(hGlobal);
m_bShowFlag=FALSE;
}
}
BEGIN_MESSAGE_MAP(CImageShow, CEdit)
//{{AFX_MSG_MAP(CImageShow)
ON_WM_LBUTTONDOWN()
ON_WM_PAINT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CImageShow message handlers
void CImageShow::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
MessageBox("asdglasdg");
CEdit::OnLButtonDown(nFlags, point);
}
void CImageShow::ShowImage(CString strFileName)
{
if(m_bShowFlag){
pPic->Release();
GlobalFree(hGlobal);
m_bShowFlag=FALSE;
}
CFileStatus fstatus;
CFile file;
LONG cb;
if (file.Open(strFileName,CFile::modeRead)&&file.GetStatus(strFileName, fstatus)&& ((cb = fstatus.m_size) != -1))
{
hGlobal = GlobalAlloc(GMEM_MOVEABLE, cb);
LPVOID pvData = NULL;
if (hGlobal != NULL)
{
if ((pvData = GlobalLock(hGlobal)) != NULL)
{
file.ReadHuge(pvData, cb);
GlobalUnlock(hGlobal);
IStream *pStm;
CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);
if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID* )&pPic)))
{
m_bShowFlag=TRUE;
}
else m_bShowFlag=FALSE;
}
else m_bShowFlag=FALSE;
}
else m_bShowFlag=FALSE;
}
else m_bShowFlag=FALSE;
Invalidate();
}
void CImageShow::OnPaint()
{
CPaintDC dc(this);
CRect rect;
GetClientRect(&rect);
if(!m_bShowFlag){
CBrush newBrush(RGB(0,0,0));
CRgn rgn;
rgn.CreateRectRgn(rect.left,rect.top,rect.right,rect.bottom);
dc.FillRgn(&rgn,&newBrush);
return;
}
OLE_XSIZE_HIMETRIC hmWidth;
OLE_YSIZE_HIMETRIC hmHeight;
pPic->get_Width(&hmWidth);
pPic->get_Height(&hmHeight);
double fX,fY;
fX = rect.right-rect.left;
fY = rect.bottom-rect.top;
pPic->Render(dc.GetSafeHdc(),0,0,(DWORD)fX,(DWORD)fY,0,hmHeight,hmWidth,-hmHeight,NULL);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -