亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? formcommandview.cpp

?? 詳細介紹c++編程
?? CPP
字號:
// FormCommandView.cpp
// Created : 05/17/1999
// Modified: 10/26/1999
#include "stdafx.h"
#include "MyTemplate.h"
#include "MainFrm.h"
#include "FormCommandView.h"
#include "MyTemplateDoc.h"
#include "RenderView.h"

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

IMPLEMENT_DYNCREATE(CFormCommandView, CFormView)

CFormCommandView::CFormCommandView()
: CFormView(CFormCommandView::IDD)
{
	//{{AFX_DATA_INIT(CFormCommandView)

	BackColor = RGB(255,255,255);
	AmbientColor = RGB(128,128,128);

	m_Lighting = TRUE;
	m_Smooth = FALSE;
	m_Antialias = FALSE;
	m_VRotate = FALSE;
	m_LinkScale = FALSE;
	//}}AFX_DATA_INIT
}

CFormCommandView::~CFormCommandView()
{
}

void CFormCommandView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CFormCommandView)
	DDX_Control(pDX, IDC_FRAME_COLOR_LIGHT_AMBIENT3, m_ControlColorLightSpecular);
	DDX_Control(pDX, IDC_FRAME_COLOR_LIGHT_AMBIENT2, m_ControlColorLightDiffuse);
	DDX_Control(pDX, IDC_FRAME_COLOR_LIGHT_AMBIENT, m_ControlColorLightAmbient);
	DDX_Control(pDX, IDC_SLIDER_Z, m_SliderScaleZ);
	DDX_Control(pDX, IDC_SLIDER_Y, m_SliderScaleY);
	DDX_Control(pDX, IDC_SLIDER_X, m_SliderScaleX);
	DDX_Control(pDX, IDC_FRAME_COLOR_BACK, m_ControlBackColor);
	DDX_Control(pDX,IDC_RADIO_MODEL0,m_ControlModel0);
	DDX_Control(pDX,IDC_RADIO_MODEL1,m_ControlModel1);
	DDX_Control(pDX,IDC_RADIO_MODEL2,m_ControlModel2);
	DDX_Check(pDX, IDC_CHECK_LIGHTING, m_Lighting);
	DDX_Check(pDX, IDC_CHECK_SMOOTH, m_Smooth);
	DDX_Check(pDX, IDC_CHECK_ANTIALIAS, m_Antialias);
	DDX_Check(pDX, IDC_CHECK_VROTATION, m_VRotate);
	DDX_Check(pDX, IDC_CHECK_LINK_SCALE, m_LinkScale);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CFormCommandView, CFormView)
	//{{AFX_MSG_MAP(CFormCommandView)
	ON_WM_PAINT()
	ON_WM_LBUTTONUP()
	ON_BN_CLICKED(IDC_RADIO_MODEL0, OnRadioModel0)
	ON_BN_CLICKED(IDC_RADIO_MODEL1, OnRadioModel1)
	ON_BN_CLICKED(IDC_RADIO_MODEL2, OnRadioModel2)
	ON_BN_CLICKED(IDC_CHECK_LIGHTING, OnCheckLighting)
	ON_BN_CLICKED(IDC_CHECK_SMOOTH, OnCheckSmooth)
	ON_BN_CLICKED(IDC_CHECK_VROTATION, OnCheckVrotation)
	ON_WM_HSCROLL()
	ON_BN_CLICKED(IDC_CHECK_LINK_SCALE, OnCheckLinkScale)
	ON_BN_CLICKED(IDC_CHECK_ANTIALIAS, OnCheckAntialias)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

// CFormCommandView diagnostics
#ifdef _DEBUG
void CFormCommandView::AssertValid() const
{
	CFormView::AssertValid();
}

void CFormCommandView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}

CMyTemplateDoc* CFormCommandView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyTemplateDoc)));
	return (CMyTemplateDoc*)m_pDocument;
}

#endif //_DEBUG

// OnPaint
void CFormCommandView::OnPaint() 
{
	// Device context for painting
	CPaintDC dc(this); 
	
	// Options are stored in Application
	CMyTemplateApp *pApp = (CMyTemplateApp *)AfxGetApp();
	CRect rect;
	
	// Color back
	m_ControlBackColor.GetWindowRect(&rect);
	ScreenToClient(&rect);
	CBrush BrushBack(BackColor);
	dc.FillRect(&rect,&BrushBack);
	
	// Color light ambient
	m_ControlColorLightAmbient.GetWindowRect(&rect);	
	ScreenToClient(&rect);
	CBrush BrushLightAmbient(AmbientColor);
	dc.FillRect(&rect,&BrushLightAmbient);

	// Color light diffuse
	m_ControlColorLightDiffuse.GetWindowRect(&rect);	
	ScreenToClient(&rect);
	CBrush BrushLightDiffuse(DiffuseColor);
	dc.FillRect(&rect,&BrushLightDiffuse);

	// Color light specular
	m_ControlColorLightSpecular.GetWindowRect(&rect);	
	ScreenToClient(&rect);
	CBrush BrushLightSpecular(SpecularColor);
	dc.FillRect(&rect,&BrushLightSpecular);
}

// 鼠標左鍵抬起
void CFormCommandView::OnLButtonUp(UINT nFlags, CPoint point) 
{
	CRect rect;
	CMyTemplateApp *pApp = (CMyTemplateApp *)AfxGetApp();
	float r,g,b;

	// back color
	m_ControlBackColor.GetWindowRect(&rect);	
	ScreenToClient(&rect);
	if(rect.PtInRect(point))
	{
		CColorDialog dlg(BackColor);
		if(dlg.DoModal()==IDOK)
		{
			BackColor = dlg.GetColor();	
			CRenderView *pView = (CRenderView *)GetRenderView();
			r = (float)GetRValue(BackColor) / 255.0f;
			g = (float)GetGValue(BackColor) / 255.0f;
			b = (float)GetBValue(BackColor) / 255.0f;
			pView->m_ClearColorRed   = r;
			pView->m_ClearColorGreen = g;
			pView->m_ClearColorBlue  = b;
			glClearColor(r,g,b,1.0f);
			this->InvalidateRect(&rect,FALSE);
			pView->InvalidateRect(NULL,FALSE);
		}
	}

	// ambient light color
	m_ControlColorLightAmbient.GetWindowRect(&rect);	
	ScreenToClient(&rect);
	if(rect.PtInRect(point))
	{
		CColorDialog dlg(AmbientColor);
		if(dlg.DoModal()==IDOK)
		{
			AmbientColor = dlg.GetColor();	
			CRenderView *pView = (CRenderView *)GetRenderView();
			// Refresh Light0
			r = (float)GetRValue(AmbientColor) / 255.0f;
			g = (float)GetGValue(AmbientColor) / 255.0f;
			b = (float)GetBValue(AmbientColor) / 255.0f;
			float	ambientProperties[]  = {r,g,b,1.0f};
			glLightfv( GL_LIGHT0, GL_AMBIENT, ambientProperties);
			// Refresh views
			this->InvalidateRect(&rect,FALSE);
			pView->InvalidateRect(NULL,FALSE); 
		}
	}		
	
	// specular light color
	m_ControlColorLightSpecular.GetWindowRect(&rect);	
	ScreenToClient(&rect);
	if(rect.PtInRect(point))
	{
		CColorDialog dlg(SpecularColor);
		if(dlg.DoModal()==IDOK)
		{
			SpecularColor = dlg.GetColor();	
			CRenderView *pView = (CRenderView *)GetRenderView();
			// Refresh Light0
			float r = (float)GetRValue(SpecularColor) / 255.0f;
			float g = (float)GetGValue(SpecularColor) / 255.0f;
			float b = (float)GetBValue(SpecularColor) / 255.0f;
			float	specularProperties[]  = {r,g,b,1.0f};
			glLightfv( GL_LIGHT0, GL_DIFFUSE, specularProperties);
			// Refresh views
			this->InvalidateRect(&rect,FALSE);
			pView->InvalidateRect(NULL,FALSE); 
		}
	}		

	// diffuse light color
	m_ControlColorLightDiffuse.GetWindowRect(&rect);	
	ScreenToClient(&rect);
	if(rect.PtInRect(point))
	{
		CColorDialog dlg(DiffuseColor);
		if(dlg.DoModal()==IDOK)
		{
			DiffuseColor = dlg.GetColor();	
			CRenderView *pView = (CRenderView *)GetRenderView();
			// Refresh Light0
			float r = (float)GetRValue(DiffuseColor) / 255.0f;
			float g = (float)GetGValue(DiffuseColor) / 255.0f;
			float b = (float)GetBValue(DiffuseColor) / 255.0f;
			float	diffuseProperties[]  = {r,g,b,1.0f};
			glLightfv( GL_LIGHT0, GL_DIFFUSE, diffuseProperties);
			// Refresh views
			this->InvalidateRect(&rect,FALSE);
			pView->InvalidateRect(NULL,FALSE); 
		}
	}		
	CFormView::OnLButtonUp(nFlags, point);
}

// 得到繪制視圖
CView *CFormCommandView::GetRenderView() 
{
	CMyTemplateApp *pApp = (CMyTemplateApp *)AfxGetApp();
	CMainFrame *pFrame = (CMainFrame *)pApp->m_pMainWnd;
	CView *pView = (CView *)pFrame->m_wndSplitter.GetPane(0,1);
	return pView;
}

// 多邊形僅繪制頂點
void CFormCommandView::OnRadioModel0() 
{
	glPolygonMode(GL_FRONT_AND_BACK,GL_POINT);
	this->GetRenderView()->InvalidateRect(NULL,FALSE); 
}

// 線框式繪制多邊形
void CFormCommandView::OnRadioModel1() 
{
	glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
	this->GetRenderView()->InvalidateRect(NULL,FALSE); 
}

// 填充型繪制多邊形
void CFormCommandView::OnRadioModel2() 
{
	glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
	this->GetRenderView()->InvalidateRect(NULL,FALSE); 
}

// 是否加光照
void CFormCommandView::OnCheckLighting() 
{
	m_Lighting = !m_Lighting;
	if(m_Lighting)
		glEnable(GL_LIGHTING);
	else
		glDisable(GL_LIGHTING);
	
	this->GetRenderView()->InvalidateRect(NULL,FALSE); 
}

// 是否對多邊形進行光滑處理
void CFormCommandView::OnCheckSmooth() 
{
	m_Smooth = !m_Smooth;
	if(m_Smooth)
		glShadeModel(GL_SMOOTH);
	else
		glShadeModel(GL_FLAT);
	this->GetRenderView()->InvalidateRect(NULL,FALSE); 
	
}

// 產生旋轉動畫
void CFormCommandView::OnCheckVrotation() 
{
	m_VRotate = !m_VRotate;
	CRenderView *pView = (CRenderView *)GetRenderView();
	if(m_VRotate)
		pView->SetTimer(1,10,NULL);
	else
		pView->KillTimer(1);
}

// 進行一些初始設置
void CFormCommandView::OnInitialUpdate() 
{
	CFormView::OnInitialUpdate();
	
	// Slider
	TRACE("Sliders : updating...\n");
	m_SliderScaleX.SetRange(1,100,TRUE);
	m_SliderScaleY.SetRange(1,100,TRUE);
	m_SliderScaleZ.SetRange(1,100,TRUE);

	m_SliderScaleX.SetPos(50);
	m_SliderScaleY.SetPos(50);
	m_SliderScaleZ.SetPos(50);

	m_ControlModel1.SetCheck(1);
	
}

//********************************************
// OnHScroll
//********************************************
void CFormCommandView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	UpdateScale();
	GetRenderView()->InvalidateRect(NULL,FALSE); 
	CFormView::OnHScroll(nSBCode, nPos, pScrollBar);
}


BOOL CFormCommandView::UpdateScale() 
{
	CRenderView *pView = (CRenderView *)GetRenderView();
	pView->m_xScaling = (float)m_SliderScaleX.GetPos()/50.0f;
	pView->m_yScaling = (float)m_SliderScaleY.GetPos()/50.0f;
	pView->m_zScaling = (float)m_SliderScaleZ.GetPos()/50.0f;

	if(m_LinkScale)
	{
		m_SliderScaleY.SetPos(m_SliderScaleX.GetPos());
		m_SliderScaleZ.SetPos(m_SliderScaleX.GetPos());
		pView->m_yScaling = pView->m_zScaling = pView->m_xScaling;
	}

	return TRUE;
}

void CFormCommandView::OnCheckLinkScale() 
{
	m_LinkScale = !m_LinkScale;	

	if(m_LinkScale)
	{
		CRenderView *pView = (CRenderView *)GetRenderView();
		m_SliderScaleY.SetPos(m_SliderScaleX.GetPos());
		m_SliderScaleZ.SetPos(m_SliderScaleX.GetPos());
		pView->m_yScaling = pView->m_zScaling = pView->m_xScaling;
	}

	m_SliderScaleY.EnableWindow(!m_LinkScale);
	m_SliderScaleZ.EnableWindow(!m_LinkScale);
	GetRenderView()->InvalidateRect(NULL,FALSE);
	
}

// 切換是否反走樣
void CFormCommandView::OnCheckAntialias() 
{
	m_Antialias = !m_Antialias;

	if(m_Antialias)
	{
		glEnable(GL_LINE_SMOOTH);
		glEnable(GL_BLEND);
		glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
		glHint(GL_LINE_SMOOTH_HINT,GL_NICEST);
		glLineWidth(1.5f);
	}
	else
	{
		glDisable(GL_LINE_SMOOTH);
		glDisable(GL_BLEND);
		glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
		glHint(GL_LINE_SMOOTH_HINT,GL_NICEST);
		glLineWidth(1.0f);
	}
	GetRenderView()->InvalidateRect(NULL,FALSE); 
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品对白一区国产伦| 欧美日韩日日夜夜| 精品污污网站免费看| 久久综合久久99| 亚洲精品国产精品乱码不99| 狠狠色丁香婷婷综合久久片| 欧美三级电影网站| 国产精品午夜在线| 精品无码三级在线观看视频| 欧美精品第一页| 一区二区三区精品在线| 风间由美中文字幕在线看视频国产欧美| 欧美日韩在线精品一区二区三区激情| 欧美国产日韩精品免费观看| 国产成人综合亚洲91猫咪| 国产mv日韩mv欧美| 日韩欧美成人一区| 亚洲午夜在线观看视频在线| 99精品久久免费看蜜臀剧情介绍| 国产午夜三级一区二区三| 美女久久久精品| 欧美电影一区二区三区| 亚洲自拍另类综合| 色视频成人在线观看免| 亚洲免费色视频| 99久久综合99久久综合网站| 国产欧美日韩久久| 成人午夜精品一区二区三区| 日本一区二区三区四区在线视频| 91电影在线观看| 国产精品的网站| www.av亚洲| 亚洲欧美一区二区三区极速播放| av在线不卡观看免费观看| 久久久久国产精品免费免费搜索| 国产精品一区二区你懂的| 久久这里都是精品| 成人免费视频免费观看| 国产精品久久二区二区| 97久久超碰国产精品| 亚洲视频免费看| 欧美伊人久久久久久久久影院| 亚洲线精品一区二区三区八戒| 欧美日韩精品免费观看视频 | 在线观看视频一区二区欧美日韩| 国产精品久久午夜| 欧美体内she精视频| 日韩高清欧美激情| 2023国产精品| 91小视频免费观看| 亚洲国产综合色| 精品国产第一区二区三区观看体验| 黄网站免费久久| 亚洲四区在线观看| 在线综合+亚洲+欧美中文字幕| 久久精品国产一区二区三| 国产偷国产偷精品高清尤物| 一本色道a无线码一区v| 天堂va蜜桃一区二区三区| 久久久蜜臀国产一区二区| 91在线你懂得| 青椒成人免费视频| 综合久久一区二区三区| 欧美一区二区三区四区高清| 国产不卡视频在线播放| 亚洲午夜激情av| 亚洲精品在线一区二区| 色欧美日韩亚洲| 国产一区二区三区蝌蚪| 亚洲国产日韩在线一区模特| 精品国产乱码久久| 在线免费亚洲电影| 国产宾馆实践打屁股91| 午夜国产精品一区| 中文字幕在线不卡视频| 日韩欧美电影一二三| 91久久香蕉国产日韩欧美9色| 国内成+人亚洲+欧美+综合在线| 亚洲丝袜自拍清纯另类| 久久奇米777| 欧美肥大bbwbbw高潮| 91老司机福利 在线| 国内精品自线一区二区三区视频| 一区二区三区欧美久久| 国产欧美一区二区三区在线看蜜臀| 欧美精选在线播放| 色拍拍在线精品视频8848| 国产精品99精品久久免费| 日韩经典一区二区| 一区二区三区中文在线| 国产精品美女久久久久久久久 | 国产一区二区久久| 波多野结衣亚洲| 久久精品国产网站| 一区二区三区在线视频免费观看| 国产亚洲欧美激情| 欧美不卡视频一区| 国产精品高潮久久久久无| 欧美肥妇free| 欧美性xxxxxx少妇| 在线看一区二区| 色噜噜狠狠一区二区三区果冻| 成人午夜短视频| 国产999精品久久| 国产一区二区影院| 久久97超碰色| 激情亚洲综合在线| 久久99在线观看| 久久精品99久久久| 久久精品国产第一区二区三区| 亚洲福中文字幕伊人影院| 伊人性伊人情综合网| 伊人婷婷欧美激情| 亚洲成人tv网| 日韩精品福利网| 另类小说欧美激情| 国产美女视频91| 懂色av一区二区三区蜜臀| 成人永久aaa| 91一区二区在线观看| 欧美在线一区二区三区| 欧美喷水一区二区| 日韩欧美亚洲另类制服综合在线| 欧美一级久久久| 精品国产区一区| 国产精品午夜久久| 夜夜精品视频一区二区| 日韩精品亚洲一区二区三区免费| 日韩激情av在线| 国产自产高清不卡| 成人高清免费观看| 欧美中文字幕一区| 日韩女优av电影在线观看| 精品对白一区国产伦| 日韩一区欧美小说| 天天综合天天做天天综合| 精品一区二区三区在线视频| 国产成人精品一区二区三区四区| 95精品视频在线| 日韩一级视频免费观看在线| 国产日韩欧美高清在线| 亚洲国产毛片aaaaa无费看| 久久99国产精品免费| 93久久精品日日躁夜夜躁欧美| 欧美日韩一区二区在线视频| 欧美精品一区二区蜜臀亚洲| 一区在线观看免费| 免费观看久久久4p| 99视频国产精品| 日韩美女视频在线| 亚洲女人小视频在线观看| 免费高清在线一区| 91丨九色丨蝌蚪丨老版| 日韩一区二区三区视频在线| 中文字幕亚洲不卡| 免费成人在线观看视频| 色欧美乱欧美15图片| 日韩欧美一级在线播放| 一区二区在线观看不卡| 国产成人自拍在线| 在线综合视频播放| 亚洲黄色小视频| 国产精品99久久久久久有的能看| 欧美视频一区在线| 成人欧美一区二区三区白人| 在线观看免费视频综合| 久久综合视频网| 男女性色大片免费观看一区二区 | 欧美肥妇free| 亚洲精品福利视频网站| 丁香天五香天堂综合| 91精品国产色综合久久ai换脸| 国产精品久久久久影院色老大| 麻豆精品精品国产自在97香蕉 | 91丨九色丨蝌蚪丨老版| 久久中文字幕电影| 免费成人小视频| 欧美麻豆精品久久久久久| 亚洲精选一二三| 97精品国产97久久久久久久久久久久| 欧美变态tickle挠乳网站| 日韩福利电影在线观看| 欧美中文字幕一区二区三区亚洲| 国产精品不卡一区二区三区| 国产成人精品免费视频网站| 日韩欧美黄色影院| 麻豆视频观看网址久久| 日韩亚洲国产中文字幕欧美| 香蕉av福利精品导航| 亚洲综合一二三区| 国产成人av电影在线观看| 日韩欧美精品在线| 舔着乳尖日韩一区| 91精品国产欧美一区二区| 亚洲国产精品一区二区久久恐怖片 | 国产福利精品一区| 国产日韩欧美不卡在线| 高清国产午夜精品久久久久久| 久久欧美中文字幕| 久久99精品一区二区三区三区|