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

📄 imagedlg.cpp

📁 Image File Display based on VS2005 CE6
💻 CPP
字号:
// imageDlg.cpp : implementation file
//

//
// Created by Douglas H Williams.
// Waterloo, Ontario, Canada
//

#include "stdafx.h"
#include "image.h"
#include "imageDlg.h"
#include "voimage.h"
// #include "WinBase.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CImageDlg dialog

CImageDlg::CImageDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CImageDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CImageDlg)
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CImageDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CImageDlg)
	DDX_Control(pDX, IDC_CURRENT_SCALE, m_edit_scale);
	DDX_Control(pDX, IDC_SLIDER1, m_scale);
	DDX_Control(pDX, IDC_PICTURE, m_picture_window);
	DDX_Control(pDX, IDC_COMBO1, m_combo1);
	DDX_Control(pDX, IDC_CHECK_STRETCH, m_stretch_image);
	DDX_Control(pDX, IDC_LIST1, m_people_list);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CImageDlg, CDialog)
	//{{AFX_MSG_MAP(CImageDlg)
	ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
	ON_WM_VSCROLL()
	ON_CBN_SELCHANGE(IDC_COMBO1, OnSelchangeCombo1)
	ON_WM_KEYUP()
	ON_BN_CLICKED(IDC_CHECK_STRETCH, OnCheckStretch)
	ON_WM_HSCROLL()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CImageDlg message handlers

BOOL CImageDlg::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

	CVOImage image;
   RECT pic_rect;
   m_picture_window.GetWindowRect(&pic_rect);
   
   
   _WIN32_FIND_DATAW *FindFileDataStruct = new _WIN32_FIND_DATAW;

   HDC picDC = ::GetDC(m_picture_window.m_hWnd );

   //
   // find all the files in '\My Documents\album\' and put them in the list
   //
   
   HANDLE search_handle = ::FindFirstFile((LPCTSTR)_T("\\My Documents\\test.jpg"), FindFileDataStruct); 
   if( search_handle == INVALID_HANDLE_VALUE )
   {
      m_combo1.AddString( (LPCTSTR) _T("No Files Found"));  
   }else{
      m_combo1.AddString( (LPCTSTR) FindFileDataStruct->cFileName);
   }
      
   while ( ::FindNextFile (search_handle, FindFileDataStruct)  != 0 )
   {
	   m_combo1.AddString( (LPCTSTR) FindFileDataStruct->cFileName);
   }
   
   //
   // Show first in list
   //

   m_combo1.SetCurSel(0);

   //
   // close the search handle and clean up
   //

   ::FindClose ( search_handle);
   delete FindFileDataStruct;

   //
   // Set the slider range
   //

   m_scale.SetRange(1,10);
   m_scale.SetPos(10);

   	
	return TRUE;  // return TRUE  unless you set the focus to a control
}



void CImageDlg::OnButton1() 
{

}


void CImageDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{

	CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
}


void CImageDlg::OnSelchangeCombo1() 
{
 
   CVOImage image;
   RECT pic_rect;
   m_picture_window.GetWindowRect(&pic_rect);
   HDC picDC = ::GetDC(m_picture_window.m_hWnd );

   //
   // Show the selected picture
   //
   
   CString path = _T("\\My Documents\\"); 
   CString image_name = "test.jpg";
   m_combo1.GetLBText( m_combo1.GetCurSel(), image_name);
   
   CString path_fname = path + image_name;

   // 
   // Load the image
   //

   image.Load (picDC ,path_fname );   

   if( this->m_stretch_image.GetCheck() == BST_CHECKED)
   {
      //
      // If you want to maintain the aspect ratio then modify this !
      //

      image.Draw (picDC ,10,10, pic_rect.bottom -  pic_rect.top, pic_rect.right - pic_rect.left - 10); 

   }else{

      image.Draw (picDC ,10,10 ); 
   }
 
   //
	// Releae the DC;
   //

   ::ReleaseDC( m_picture_window.m_hWnd, picDC);
	
}

void CImageDlg::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) 
{	
	CDialog::OnKeyUp(nChar, nRepCnt, nFlags);
}

BOOL CImageDlg::OnCommand(WPARAM wParam, LPARAM lParam) 
{

	return CDialog::OnCommand(wParam, lParam);
}

void CImageDlg::OnCheckStretch() 
{
   CVOImage image;
   RECT pic_rect;
   m_picture_window.GetWindowRect(&pic_rect);
   HDC picDC = ::GetDC(m_picture_window.m_hWnd );

   //
   // Show the selected picture
   //
   
   CString path = _T("\\My Documents\\"); 
   CString image_name = "test.jpg";
   m_combo1.GetLBText( m_combo1.GetCurSel(), image_name);
   
   CString path_fname = path + image_name;

   // m_picture_window.SetWindowText(image_name);
   
   image.Load (picDC ,path_fname );   

   if( this->m_stretch_image.GetCheck() == BST_CHECKED)
   {
      image.Draw (picDC ,10,10, pic_rect.bottom -  pic_rect.top, pic_rect.right - pic_rect.left - 10 ); 
   }else{
      image.Draw (picDC ,10,10 ); 
   }
 
   //
	// Releae the DC;
   //

   ::ReleaseDC( m_picture_window.m_hWnd, picDC);	
}

void CImageDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{

   //
   // Set the scale and re display the picture. 
   //
     
   if( pScrollBar->m_hWnd == this->m_scale.m_hWnd) // Ensure the correct scroll bar
   {

      int curpos = this->m_scale.GetPos();
      int cur_scale = (int) curpos * 10;

      //
      // Made CVOImage::g_iScale public -> I should keep private and create set\get (limited time).
      // Set the scale on 

      CVOImage::g_iScale = cur_scale;
      char s_scale[16];

      sprintf(s_scale, "%d", cur_scale);
      m_edit_scale.SetWindowText((CString)s_scale);

      CVOImage image;
      RECT pic_rect;
      
      //
      // The display window RECT
      //

      m_picture_window.GetWindowRect(&pic_rect);

      //
      // The HDC of the display window
      //

      HDC picDC = ::GetDC(m_picture_window.m_hWnd );

      //
      // Show the selected picture
      //

      CString path = _T("\\My Documents\\"); 
      CString image_name = "test.jpg";
      m_combo1.GetLBText( m_combo1.GetCurSel(), image_name);

      CString path_fname = path + image_name;

      image.Load (picDC ,path_fname );   

      if( this->m_stretch_image.GetCheck() == BST_CHECKED)
      {
         image.Draw (picDC ,10,10, pic_rect.bottom -  pic_rect.top, pic_rect.right - pic_rect.left - 10); 
      }else{
         image.Draw (picDC ,10,10 ); 
      }

      //
      // Releae the DC;
      //

      ::ReleaseDC( m_picture_window.m_hWnd, picDC);	
   }

	CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}

⌨️ 快捷键说明

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