⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iimagedlg.cpp

📁 wince EVC 简单的图片浏览功能,自已随意扩展 支持 *.bmp *.jpg *.gif *.png 等等 // TODO: Add your control notification
💻 CPP
字号:
// IImageDlg.cpp : implementation file
//

#include "stdafx.h"
#include "IImage.h"
#include "IImageDlg.h"
#include "initguid.h"
#include "imaging.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CIImageDlg dialog

CIImageDlg::CIImageDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CIImageDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CIImageDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CIImageDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CIImageDlg)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CIImageDlg, CDialog)
	//{{AFX_MSG_MAP(CIImageDlg)
	ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
	ON_WM_PAINT()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CIImageDlg message handlers

BOOL CIImageDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	CenterWindow(GetDesktopWindow());	// center to the hpc screen

	// TODO: Add extra initialization here
	
	return TRUE;  // return TRUE  unless you set the focus to a control
}




void CIImageDlg::OnButton1() 
{
	// TODO: Add your control notification handler code here
CString defFilter("选中其中一个文件|*.bmp;*.jpg;*.gif;*.png");
CFileDialog dlg(TRUE,NULL,NULL,OFN_ALLOWMULTISELECT,defFilter);
if(dlg.DoModal()==IDOK){

        PathName=dlg.GetPathName(); 



	

}	
}

void CIImageDlg::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	// TODO: Add your message handler code here
		
	     CRect   rcWnd;
	 GetWindowRect(&rcWnd);
	// TODO: Add your message handler code here
	   IImage * m_pImage;
	   IImage * m_pThum;
     IImagingFactory * m_pImagingFactory;
    	ImageInfo IimageInfo;
	HBITMAP hBitmap;
	   HDC hdcMem;
     HGDIOBJ hOldSel; 
     HRESULT hr;

  //COM初始化
    if (FAILED(hr = CoInitializeEx(NULL, COINIT_MULTITHREADED)))
   {  
        goto END;
   }

  //创建COM实例
    if(FAILED(hr = CoCreateInstance(CLSID_ImagingFactory,NULL,CLSCTX_INPROC_SERVER,IID_IImagingFactory,(void**) &m_pImagingFactory)))
     {
        goto END;
     }
if(PathName==L"")return;
  //从文件中创建图片
    if(FAILED(hr = m_pImagingFactory->CreateImageFromFile(PathName, &m_pImage)))
     {
        goto END;
     }

    //绘制图片

//获取图片属性 

     m_pImage->GetImageInfo(&IimageInfo);

    //创建一个内存DC,用来存储图片数据
     hBitmap = CreateCompatibleBitmap(dc,IimageInfo.Width,IimageInfo.Height);
     hdcMem = CreateCompatibleDC(dc);
     hOldSel = SelectObject(hdcMem,hBitmap);
/*
    m_pImage->GetThumbnail(100,100,&m_pThum);//这个用来显示缩略图
    if(FAILED(hr = m_pThum->Draw(dc,CRect(0,0,480,272),NULL)))
     {
      goto END;
     }
   */
	   if(FAILED(hr = m_pImage->Draw(dc,&rcWnd,NULL))) //原图
     {
      goto END;
     }
    
END:
  //释放资源
    if(m_pImage != NULL)
     {
         m_pImage->Release();
         m_pImage = NULL;
     }

    if(m_pImagingFactory != NULL)
     {
         m_pImagingFactory->Release();
         m_pImagingFactory = NULL;
     }

     CoUninitialize();
	// Do not call CDialog::OnPaint() for painting messages
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -