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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? formcommandview.cpp

?? 程序可用來學(xué)習(xí)使用
?? 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); 
	
}

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

// 進行一些初始設(shè)置
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); 
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成国产人片在线观看| 欧美高清视频不卡网| 色婷婷精品久久二区二区蜜臀av| av色综合久久天堂av综合| 色婷婷综合久久| 欧美三级蜜桃2在线观看| 91精品国产全国免费观看| 日韩欧美不卡一区| 国产精品天干天干在观线| 艳妇臀荡乳欲伦亚洲一区| 天堂资源在线中文精品| 国产精品一区二区三区四区| 99久久婷婷国产综合精品电影| 欧美午夜精品免费| 精品91自产拍在线观看一区| 国产精品久久看| 丝袜国产日韩另类美女| 岛国精品在线观看| 精品视频在线免费| 久久久不卡影院| 亚洲国产综合人成综合网站| 激情久久五月天| 在线观看av一区二区| 精品三级在线观看| 一区二区在线观看免费| 国产一区二区中文字幕| 欧美日韩一区二区在线观看视频| 久久这里只有精品6| 一区二区视频免费在线观看| 国内外成人在线| 欧美偷拍一区二区| 中文在线免费一区三区高中清不卡| 婷婷六月综合亚洲| 成人深夜在线观看| 日韩欧美国产不卡| 国产成人精品亚洲777人妖 | 欧美精品一区二区三区高清aⅴ | 亚洲bdsm女犯bdsm网站| 国产传媒欧美日韩成人| 欧美女孩性生活视频| 国产精品久久久久久久久图文区 | 91官网在线免费观看| 久久久久久久网| 日日噜噜夜夜狠狠视频欧美人| 成人免费黄色大片| 欧美mv日韩mv亚洲| 亚洲h在线观看| 色悠久久久久综合欧美99| 久久久亚洲高清| 免费人成网站在线观看欧美高清| 91年精品国产| 国产精品丝袜黑色高跟| 精品无人区卡一卡二卡三乱码免费卡| 欧美日韩久久不卡| 一区二区三区四区在线播放| 国产ts人妖一区二区| 欧美一区二区三区色| 亚洲一区在线播放| 91偷拍与自偷拍精品| 欧美激情资源网| 国产一区在线观看视频| 日韩欧美在线影院| 三级久久三级久久久| 欧美三级韩国三级日本一级| 亚洲欧美日韩电影| 丁香六月综合激情| 中文字幕国产精品一区二区| 国产综合成人久久大片91| 香蕉成人啪国产精品视频综合网| 99这里只有精品| 中文字幕在线观看一区| 成人免费视频视频在线观看免费| 久久婷婷国产综合精品青草| 精品影视av免费| 日韩精品中文字幕一区二区三区| 日韩国产精品久久| 欧美一区二区二区| 美腿丝袜亚洲三区| 欧美日本在线视频| 免费精品视频在线| 中文字幕在线不卡视频| 欧美日韩一区精品| 高清成人在线观看| 亚洲午夜久久久久| 日韩欧美亚洲国产精品字幕久久久| 久久精品国产精品亚洲综合| 中文字幕五月欧美| 日韩女优av电影| 在线观看精品一区| 国产精品亚洲专一区二区三区 | 久久国内精品自在自线400部| 国产亚洲精久久久久久| 色先锋aa成人| 盗摄精品av一区二区三区| 色综合久久综合| 在线一区二区三区四区五区 | 亚洲国产精品嫩草影院| 成人激情小说乱人伦| 国产精品自拍一区| 国内精品自线一区二区三区视频| 日韩不卡免费视频| 国产精品人妖ts系列视频| 国产日本欧洲亚洲| 欧美亚洲自拍偷拍| 91国产成人在线| 色综合中文字幕| 成人午夜又粗又硬又大| 欧美日韩一区二区不卡| 亚洲日本在线看| 91精品国产91久久久久久最新毛片 | 国产凹凸在线观看一区二区| 亚洲第四色夜色| 日韩精品一区二区三区三区免费 | 久久久亚洲精品石原莉奈| 欧美性色aⅴ视频一区日韩精品| 不卡大黄网站免费看| 九九精品一区二区| 久久国产尿小便嘘嘘尿| 国产一区视频网站| 国产黑丝在线一区二区三区| 国产美女视频91| 成人av免费在线播放| 日本一区二区三区电影| 成人妖精视频yjsp地址| 亚洲欧美中日韩| 欧美精品日韩一区| 国产成人综合亚洲网站| 亚洲高清三级视频| 国产日韩欧美精品电影三级在线| 色国产精品一区在线观看| 美女任你摸久久| 亚洲同性同志一二三专区| 91精品免费在线观看| 99视频一区二区三区| 男男gaygay亚洲| 亚洲人成网站在线| 精品国产sm最大网站| 欧美亚洲丝袜传媒另类| 国产成人免费9x9x人网站视频| 亚洲成在线观看| 中文字幕av一区 二区| 欧美一卡二卡三卡| 一本大道久久a久久综合| 激情深爱一区二区| 亚洲图片欧美色图| 国产精品不卡在线观看| 日韩欧美在线不卡| 一本大道综合伊人精品热热| 国产黄色成人av| 蜜臀久久99精品久久久久久9| 一区二区三区四区五区视频在线观看 | 在线观看视频一区二区欧美日韩| 韩国精品一区二区| 日本午夜精品一区二区三区电影| 国产精品乱人伦一区二区| 精品成人佐山爱一区二区| 在线看国产一区二区| 国产.欧美.日韩| 久久99精品久久久久久动态图 | 粉嫩蜜臀av国产精品网站| 免费在线观看日韩欧美| 亚洲国产中文字幕在线视频综合 | 国产成都精品91一区二区三| 麻豆国产精品777777在线| 午夜av一区二区三区| 一区二区在线观看视频| 国产一区二区三区不卡在线观看 | 丝袜诱惑亚洲看片| 欧美丝袜自拍制服另类| 亚洲精品成人精品456| 欧美高清hd18日本| 国产网红主播福利一区二区| 美女脱光内衣内裤视频久久网站| 欧美亚洲国产bt| 亚洲午夜羞羞片| 91国模大尺度私拍在线视频| 中文字幕高清不卡| 色偷偷久久一区二区三区| 亚洲国产精品成人综合色在线婷婷| 国产一区二区免费视频| 日韩免费视频线观看| 久久不见久久见中文字幕免费| 日韩一区二区精品在线观看| 麻豆国产欧美一区二区三区| 精品国产乱码久久久久久图片| 美女国产一区二区| 欧美成人高清电影在线| 老司机精品视频一区二区三区| 精品国产凹凸成av人导航| 国产一区二区三区观看| 国产蜜臀av在线一区二区三区| 成人av免费网站| 视频一区欧美精品| 亚洲人成人一区二区在线观看| 成人欧美一区二区三区黑人麻豆| 欧美一级二级三级蜜桃| 欧美婷婷六月丁香综合色| 欧洲av一区二区嗯嗯嗯啊| 九九**精品视频免费播放| 亚洲国产精品精华液网站|