www.pudn.com > opengl_pick_sample.rar > stretchdlg.cpp


// stretchdlg.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "stretchdlg.h" 
 
#include "ogldoc.h" 
#include "oglview.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
extern OGLView * g_view; 
 
///////////////////////////////////////////////////////////////////////////// 
// StretchDLG dialog 
 
 
StretchDLG::StretchDLG(CWnd* pParent /*=NULL*/) 
	: CDialog(StretchDLG::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(StretchDLG) 
		// NOTE: the ClassWizard will add member initialization here 
	//}}AFX_DATA_INIT 
} 
 
 
void StretchDLG::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(StretchDLG) 
	DDX_Control(pDX, IDC_STRETCH_SLIDER, m_slider); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(StretchDLG, CDialog) 
	//{{AFX_MSG_MAP(StretchDLG) 
	ON_WM_VSCROLL() 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// StretchDLG message handlers 
 
BOOL StretchDLG::OnInitDialog()  
{ 
	CDialog::OnInitDialog(); 
	 
	m_slider.SetRange(1,20); 
	m_slider.SetPos(10); 
	 
	return TRUE;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX Property Pages should return FALSE 
} 
 
 
void StretchDLG::SetSliderPos(int pos) 
{ 
	if (m_slider.m_hWnd) 
	{ 
		if ((pos >= 1) && (pos <= 20)) 
		{ 
			m_slider.SetPos(pos); 
		} 
	} 
} 
 
void StretchDLG::ResetSliderPos(void) 
{ 
	if (m_slider.m_hWnd) 
	{ 
		m_slider.SetPos(10); 
	} 
} 
 
void StretchDLG::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)  
{ 
	if (m_slider.m_hWnd) 
	{ 
		if (g_view) 
		{ 
			int pos = m_slider.GetPos(); 
			if ((pos >= 1) && (pos <= 20)) 
			{ 
				int delta = pos - 10; 
				double sf = 1.0 + (double)delta*0.20; 
 
				if (sf < 0.1) sf = 0.1; 
				if (sf > 2.0) sf = 10.0; 
 
				//sf *= 2; 
 
				g_view->SetScale(sf); 
			} 
		} 
	} 
	 
	CDialog::OnVScroll(nSBCode, nPos, pScrollBar); 
}