408 lines
12 KiB
C++
408 lines
12 KiB
C++
|
|
// EnviLightPaneView.cpp : implementation file
|
|||
|
|
//
|
|||
|
|
|
|||
|
|
#include "stdafx.h"
|
|||
|
|
#include "EtWorldPainter.h"
|
|||
|
|
#include "EnviLightPaneView.h"
|
|||
|
|
#include "UserMessage.h"
|
|||
|
|
#include "EnviLightBase.h"
|
|||
|
|
#include "EnviControl.h"
|
|||
|
|
#include "RenderBase.h"
|
|||
|
|
#include "FileServer.h"
|
|||
|
|
|
|||
|
|
|
|||
|
|
// CEnviLightPaneView
|
|||
|
|
|
|||
|
|
IMPLEMENT_DYNCREATE(CEnviLightPaneView, CFormView)
|
|||
|
|
|
|||
|
|
CEnviLightPaneView::CEnviLightPaneView()
|
|||
|
|
: CFormView(CEnviLightPaneView::IDD)
|
|||
|
|
{
|
|||
|
|
m_bActivate = false;
|
|||
|
|
m_pContextMenu = new CMenu;
|
|||
|
|
m_pContextMenu->LoadMenu( IDR_CONTEXTMENU );
|
|||
|
|
m_hRoot = NULL;
|
|||
|
|
|
|||
|
|
m_nDirCount = 1;
|
|||
|
|
m_nSpotCount = 1;
|
|||
|
|
m_nPointCount = 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CEnviLightPaneView::~CEnviLightPaneView()
|
|||
|
|
{
|
|||
|
|
CEnviLightBase::Reset();
|
|||
|
|
ResetPropertyGrid();
|
|||
|
|
SAFE_DELETE( m_pContextMenu );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CEnviLightPaneView::DoDataExchange(CDataExchange* pDX)
|
|||
|
|
{
|
|||
|
|
CFormView::DoDataExchange(pDX);
|
|||
|
|
DDX_Control(pDX, IDC_TREE1, m_Tree);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
BEGIN_MESSAGE_MAP(CEnviLightPaneView, CFormView)
|
|||
|
|
ON_WM_SIZE()
|
|||
|
|
ON_WM_ERASEBKGND()
|
|||
|
|
ON_MESSAGE( UM_REFRESH_PANE_VIEW, OnRefresh )
|
|||
|
|
ON_MESSAGE( XTPWM_PROPERTYGRID_NOTIFY, OnNotifyGrid )
|
|||
|
|
ON_NOTIFY(TVN_SELCHANGED, IDC_TREE1, &CEnviLightPaneView::OnTvnSelchangedTree1)
|
|||
|
|
ON_COMMAND(ID_ENVILIGHT_ADDDIRECTIONLIGHT, &CEnviLightPaneView::OnEnvilightAdddirectionlight)
|
|||
|
|
ON_COMMAND(ID_ENVILIGHT_ADDPOINTLIGHT, &CEnviLightPaneView::OnEnvilightAddpointlight)
|
|||
|
|
ON_COMMAND(ID_ENVILIGHT_ADDSPOTLIGHT, &CEnviLightPaneView::OnEnvilightAddspotlight)
|
|||
|
|
ON_COMMAND(ID_ENVILIGHT_REMOVELIGHT, &CEnviLightPaneView::OnEnvilightRemovelight)
|
|||
|
|
ON_MESSAGE( UM_PROPERTY_PANE_SET_MODIFY, OnSetModify )
|
|||
|
|
ON_WM_CONTEXTMENU()
|
|||
|
|
END_MESSAGE_MAP()
|
|||
|
|
|
|||
|
|
|
|||
|
|
// CEnviLightPaneView diagnostics
|
|||
|
|
|
|||
|
|
#ifdef _DEBUG
|
|||
|
|
void CEnviLightPaneView::AssertValid() const
|
|||
|
|
{
|
|||
|
|
CFormView::AssertValid();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#ifndef _WIN32_WCE
|
|||
|
|
void CEnviLightPaneView::Dump(CDumpContext& dc) const
|
|||
|
|
{
|
|||
|
|
CFormView::Dump(dc);
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
#endif //_DEBUG
|
|||
|
|
|
|||
|
|
|
|||
|
|
// CEnviLightPaneView message handlers
|
|||
|
|
|
|||
|
|
void CEnviLightPaneView::OnInitialUpdate()
|
|||
|
|
{
|
|||
|
|
__super::OnInitialUpdate();
|
|||
|
|
|
|||
|
|
// TODO: Add your specialized code here and/or call the base class
|
|||
|
|
if( m_bActivate == true ) return;
|
|||
|
|
m_bActivate = true;
|
|||
|
|
|
|||
|
|
CRect rcRect;
|
|||
|
|
GetClientRect( &rcRect );
|
|||
|
|
|
|||
|
|
m_PropertyGrid.Create( rcRect, this, 0 );
|
|||
|
|
m_PropertyGrid.SetCustomColors( RGB(200, 200, 200), 0, RGB(182, 210, 189), RGB(247, 243, 233), 0);
|
|||
|
|
|
|||
|
|
CBitmap bitmap;
|
|||
|
|
bitmap.LoadBitmap( IDB_ENVIICON );
|
|||
|
|
|
|||
|
|
m_ImageList.Create( 16, 16, ILC_COLOR24|ILC_MASK, 4, 1 );
|
|||
|
|
m_ImageList.Add( &bitmap, RGB(0,255,0) );
|
|||
|
|
|
|||
|
|
m_Tree.EnableMultiSelect();
|
|||
|
|
m_Tree.DeleteAllItems();
|
|||
|
|
m_Tree.SetImageList( &m_ImageList, TVSIL_NORMAL );
|
|||
|
|
CEnviLightBase::Reset();
|
|||
|
|
m_hRoot = m_Tree.InsertItem( "Light Folder", 2, 3 );
|
|||
|
|
|
|||
|
|
|
|||
|
|
SendMessage( UM_REFRESH_PANE_VIEW );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CEnviLightPaneView::OnSize(UINT nType, int cx, int cy)
|
|||
|
|
{
|
|||
|
|
__super::OnSize(nType, cx, cy);
|
|||
|
|
|
|||
|
|
// TODO: Add your message handler code here
|
|||
|
|
if( m_Tree ) {
|
|||
|
|
m_Tree.SetWindowPos( NULL, 0, 0, cx, cy / 2, SWP_FRAMECHANGED );
|
|||
|
|
}
|
|||
|
|
if( m_PropertyGrid ) {
|
|||
|
|
m_PropertyGrid.SetWindowPos( NULL, 0, cy/2, cx, cy, SWP_FRAMECHANGED );
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
BOOL CEnviLightPaneView::OnEraseBkgnd(CDC* pDC)
|
|||
|
|
{
|
|||
|
|
// TODO: Add your message handler code here and/or call default
|
|||
|
|
|
|||
|
|
return TRUE;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
LRESULT CEnviLightPaneView::OnRefresh( WPARAM wParam, LPARAM lParam )
|
|||
|
|
{
|
|||
|
|
if( !m_PropertyGrid ) return S_OK;
|
|||
|
|
ResetPropertyGrid();
|
|||
|
|
// RefreshPropertyGrid( g_EnviPropertyDefine );
|
|||
|
|
|
|||
|
|
|
|||
|
|
m_Tree.DeleteAllItems();
|
|||
|
|
m_Tree.SetImageList( &m_ImageList, TVSIL_NORMAL );
|
|||
|
|
|
|||
|
|
CEnviLightBase::Reset();
|
|||
|
|
|
|||
|
|
m_hRoot = m_Tree.InsertItem( "Light Folder", 2, 3 );
|
|||
|
|
|
|||
|
|
m_nDirCount = 1;
|
|||
|
|
m_nSpotCount = 1;
|
|||
|
|
m_nPointCount = 1;
|
|||
|
|
|
|||
|
|
CEnviElement *pElement = CEnviControl::GetInstance().GetActiveElement();
|
|||
|
|
if( pElement ) {
|
|||
|
|
SLightInfo *pInfo;
|
|||
|
|
CString szLightName;
|
|||
|
|
for( DWORD i=0; i<pElement->GetInfo().GetLightCount(); i++ ) {
|
|||
|
|
pInfo = pElement->GetInfo().GetLight(i)->pInfo;
|
|||
|
|
szLightName.Empty();
|
|||
|
|
switch( pInfo->Type ) {
|
|||
|
|
case LT_DIRECTIONAL:
|
|||
|
|
szLightName.Format( "Direction Light - %02d", m_nDirCount );
|
|||
|
|
m_nDirCount++;
|
|||
|
|
break;
|
|||
|
|
case LT_POINT:
|
|||
|
|
szLightName.Format( "Point Light - %02d", m_nPointCount );
|
|||
|
|
m_nPointCount++;
|
|||
|
|
break;
|
|||
|
|
case LT_SPOT:
|
|||
|
|
szLightName.Format( "Spot Light - %02d", m_nSpotCount );
|
|||
|
|
m_nSpotCount++;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
HTREEITEM hItem = m_Tree.InsertItem( szLightName, 0, 1, m_hRoot );
|
|||
|
|
CEnviLightBase::AddLight( hItem, pElement, i );
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_Tree.Expand( m_hRoot, TVE_EXPAND );
|
|||
|
|
|
|||
|
|
CRenderBase::GetInstance().InitializeEnviLight( pElement );
|
|||
|
|
CRenderBase::GetInstance().InitializeEnviLensFlare( pElement );
|
|||
|
|
CGlobalValue::GetInstance().RefreshRender();
|
|||
|
|
|
|||
|
|
return S_OK;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
LRESULT CEnviLightPaneView::OnNotifyGrid( WPARAM wParam, LPARAM lParam )
|
|||
|
|
{
|
|||
|
|
return ProcessNotifyGrid( wParam, lParam );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CEnviLightPaneView::OnTvnSelchangedTree1(NMHDR *pNMHDR, LRESULT *pResult)
|
|||
|
|
{
|
|||
|
|
LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
|
|||
|
|
// TODO: Add your control notification handler code here
|
|||
|
|
CalcSelectItemList();
|
|||
|
|
|
|||
|
|
CEnviLightBase::s_pFocus = NULL;
|
|||
|
|
ResetPropertyGrid();
|
|||
|
|
if( m_SelectItemList.GetCount() == 1 ) {
|
|||
|
|
CEnviLightBase *pBase = CEnviLightBase::FindLight( m_SelectItemList.GetHead() );
|
|||
|
|
if( pBase ) {
|
|||
|
|
pBase->SetFocus( true );
|
|||
|
|
RefreshPropertyGrid( pBase->GetPropertyDefine() );
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
CGlobalValue::GetInstance().RefreshRender();
|
|||
|
|
|
|||
|
|
*pResult = 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CEnviLightPaneView::CalcSelectItemList()
|
|||
|
|
{
|
|||
|
|
m_SelectItemList.RemoveAll();
|
|||
|
|
m_Tree.GetSelectedList( m_SelectItemList );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CEnviLightPaneView::OnSetValue( CUnionValueProperty *pVariable, DWORD dwIndex )
|
|||
|
|
{
|
|||
|
|
CalcSelectItemList();
|
|||
|
|
|
|||
|
|
if( m_SelectItemList.GetCount() == 1 ) {
|
|||
|
|
CEnviLightBase *pBase = CEnviLightBase::FindLight( m_SelectItemList.GetHead() );
|
|||
|
|
|
|||
|
|
pBase->OnSetValue( pVariable, dwIndex );
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CEnviLightPaneView::OnChangeValue( CUnionValueProperty *pVariable, DWORD dwIndex )
|
|||
|
|
{
|
|||
|
|
CalcSelectItemList();
|
|||
|
|
|
|||
|
|
if( m_SelectItemList.GetCount() == 1 ) {
|
|||
|
|
CEnviLightBase *pBase = CEnviLightBase::FindLight( m_SelectItemList.GetHead() );
|
|||
|
|
|
|||
|
|
pBase->OnChangeValue( pVariable, dwIndex );
|
|||
|
|
CRenderBase::GetInstance().InitializeEnviLight( pBase->GetElement(), false );
|
|||
|
|
CRenderBase::GetInstance().InitializeEnviLensFlare( pBase->GetElement(), false );
|
|||
|
|
CGlobalValue::GetInstance().RefreshRender();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CEnviLightPaneView::OnEnvilightAdddirectionlight()
|
|||
|
|
{
|
|||
|
|
CEnviElement *pElement = CEnviControl::GetInstance().GetActiveElement();
|
|||
|
|
if( !pElement ) return;
|
|||
|
|
|
|||
|
|
SLightInfo LightInfo;
|
|||
|
|
LightInfo.Type = LT_DIRECTIONAL;
|
|||
|
|
LightInfo.Diffuse = EtColor( 0.5f, 0.5f, 0.5f, 1.f );
|
|||
|
|
LightInfo.Specular = EtColor( 1.f, 1.f, 1.f, 1.f );
|
|||
|
|
LightInfo.Direction = EtVector3( -1.f, -1.f, -1.f );
|
|||
|
|
|
|||
|
|
EtVec3Normalize( &LightInfo.Direction, &LightInfo.Direction );
|
|||
|
|
|
|||
|
|
CString szLightName;
|
|||
|
|
szLightName.Format( "Direction Light - %02d", m_nDirCount );
|
|||
|
|
HTREEITEM hItem = m_Tree.InsertItem( szLightName, 0, 1, m_hRoot );
|
|||
|
|
pElement->GetInfo().AddLight( LightInfo );
|
|||
|
|
CEnviLightBase::AddLight( hItem, pElement, pElement->GetInfo().GetLightCount() - 1 );
|
|||
|
|
|
|||
|
|
m_Tree.Expand( m_hRoot, TVE_EXPAND );
|
|||
|
|
m_Tree.SelectItems( hItem, hItem, TRUE );
|
|||
|
|
m_Tree.FocusItem( hItem );
|
|||
|
|
|
|||
|
|
CRenderBase::GetInstance().InitializeEnviLight( pElement, true );
|
|||
|
|
CRenderBase::GetInstance().InitializeEnviLensFlare( pElement, true );
|
|||
|
|
CGlobalValue::GetInstance().RefreshRender();
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CEnviLightPaneView::OnEnvilightAddpointlight()
|
|||
|
|
{
|
|||
|
|
// TODO: Add your command handler code here
|
|||
|
|
CEnviElement *pElement = CEnviControl::GetInstance().GetActiveElement();
|
|||
|
|
if( !pElement ) return;
|
|||
|
|
|
|||
|
|
MatrixEx *pCamera = CRenderBase::GetInstance().GetLastUpdateCamera();
|
|||
|
|
|
|||
|
|
SLightInfo LightInfo;
|
|||
|
|
LightInfo.Type = LT_POINT;
|
|||
|
|
LightInfo.Diffuse = EtColor( 0.5f, 0.5f, 0.5f, 1.f );
|
|||
|
|
LightInfo.Specular = EtColor( 1.f, 1.f, 1.f, 1.f );
|
|||
|
|
LightInfo.Position = pCamera->m_vPosition + ( pCamera->m_vZAxis * 500.f );
|
|||
|
|
LightInfo.fRange = 1000.f;
|
|||
|
|
|
|||
|
|
CString szLightName;
|
|||
|
|
szLightName.Format( "Point Light - %02d", m_nPointCount );
|
|||
|
|
HTREEITEM hItem = m_Tree.InsertItem( szLightName, 0, 1, m_hRoot );
|
|||
|
|
pElement->GetInfo().AddLight( LightInfo );
|
|||
|
|
CEnviLightBase::AddLight( hItem, pElement, pElement->GetInfo().GetLightCount() - 1 );
|
|||
|
|
|
|||
|
|
m_Tree.Expand( m_hRoot, TVE_EXPAND );
|
|||
|
|
m_Tree.SelectItems( hItem, hItem, TRUE );
|
|||
|
|
m_Tree.FocusItem( hItem );
|
|||
|
|
|
|||
|
|
CRenderBase::GetInstance().InitializeEnviLight( pElement, true );
|
|||
|
|
CRenderBase::GetInstance().InitializeEnviLensFlare( pElement, true );
|
|||
|
|
CGlobalValue::GetInstance().RefreshRender();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CEnviLightPaneView::OnEnvilightAddspotlight()
|
|||
|
|
{
|
|||
|
|
// TODO: Add your command handler code here
|
|||
|
|
CEnviElement *pElement = CEnviControl::GetInstance().GetActiveElement();
|
|||
|
|
if( !pElement ) return;
|
|||
|
|
|
|||
|
|
MatrixEx *pCamera = CRenderBase::GetInstance().GetLastUpdateCamera();
|
|||
|
|
|
|||
|
|
SLightInfo LightInfo;
|
|||
|
|
LightInfo.Type = LT_SPOT;
|
|||
|
|
LightInfo.Diffuse = EtColor( 0.5f, 0.5f, 0.5f, 1.f );
|
|||
|
|
LightInfo.Specular = EtColor( 1.f, 1.f, 1.f, 1.f );
|
|||
|
|
LightInfo.Position = pCamera->m_vPosition + ( pCamera->m_vZAxis * 500.f );
|
|||
|
|
LightInfo.Direction = pCamera->m_vZAxis;
|
|||
|
|
LightInfo.fTheta = cos( EtToRadian( 15.0f ) );
|
|||
|
|
LightInfo.fPhi = cos( EtToRadian( 30.0f ) );
|
|||
|
|
|
|||
|
|
EtVec3Normalize( &LightInfo.Direction, &LightInfo.Direction );
|
|||
|
|
|
|||
|
|
CString szLightName;
|
|||
|
|
szLightName.Format( "Spot Light - %02d", m_nSpotCount );
|
|||
|
|
HTREEITEM hItem = m_Tree.InsertItem( szLightName, 0, 1, m_hRoot );
|
|||
|
|
pElement->GetInfo().AddLight( LightInfo );
|
|||
|
|
CEnviLightBase::AddLight( hItem, pElement, pElement->GetInfo().GetLightCount() - 1 );
|
|||
|
|
|
|||
|
|
m_Tree.Expand( m_hRoot, TVE_EXPAND );
|
|||
|
|
m_Tree.SelectItems( hItem, hItem, TRUE );
|
|||
|
|
m_Tree.FocusItem( hItem );
|
|||
|
|
|
|||
|
|
CRenderBase::GetInstance().InitializeEnviLight( pElement, true );
|
|||
|
|
CRenderBase::GetInstance().InitializeEnviLensFlare( pElement, true );
|
|||
|
|
CGlobalValue::GetInstance().RefreshRender();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CEnviLightPaneView::OnEnvilightRemovelight()
|
|||
|
|
{
|
|||
|
|
// TODO: Add your command handler code here
|
|||
|
|
CEnviElement *pElement = CEnviControl::GetInstance().GetActiveElement();
|
|||
|
|
if( !pElement ) return;
|
|||
|
|
CalcSelectItemList();
|
|||
|
|
|
|||
|
|
POSITION p = m_SelectItemList.GetHeadPosition();
|
|||
|
|
HTREEITEM hti;
|
|||
|
|
while(p) {
|
|||
|
|
hti = m_SelectItemList.GetNext( p );
|
|||
|
|
|
|||
|
|
CEnviLightBase *pBase = CEnviLightBase::FindLight( hti );
|
|||
|
|
if( !pBase ) continue;
|
|||
|
|
for( DWORD i=0; i<pElement->GetInfo().GetLightCount(); i++ ) {
|
|||
|
|
if( pElement->GetInfo().GetLight(i)->pInfo == pBase->GetLightInfo() ) {
|
|||
|
|
pElement->GetInfo().RemoveLight(i);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
CEnviLightBase::RemoveLight( hti );
|
|||
|
|
m_Tree.DeleteItem( hti );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CRenderBase::GetInstance().InitializeEnviLight( pElement, true );
|
|||
|
|
CRenderBase::GetInstance().InitializeEnviLensFlare( pElement, true );
|
|||
|
|
CGlobalValue::GetInstance().RefreshRender();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CEnviLightPaneView::OnContextMenu(CWnd* /*pWnd*/, CPoint point)
|
|||
|
|
{
|
|||
|
|
// TODO: Add your message handler code here
|
|||
|
|
CRect rcRect;
|
|||
|
|
GetClientRect( &rcRect );
|
|||
|
|
// if( !( point.x > rcRect.left && point.x < rcRect.right && point.y > rcRect.top && point.y < rcRect.bottom ) ) return;
|
|||
|
|
CMenu *pMenu = m_pContextMenu->GetSubMenu(3);
|
|||
|
|
if( !CFileServer::GetInstance().IsConnect() ) return;
|
|||
|
|
if( CEnviControl::GetInstance().GetActiveElement() ) {
|
|||
|
|
if( CEnviControl::GetInstance().GetActiveElement()->GetInfo().GetName() == "Edit Set" ) {
|
|||
|
|
pMenu->EnableMenuItem( ID_ENVILIGHT_ADDDIRECTIONLIGHT, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED );
|
|||
|
|
pMenu->EnableMenuItem( ID_ENVILIGHT_ADDPOINTLIGHT, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED );
|
|||
|
|
pMenu->EnableMenuItem( ID_ENVILIGHT_ADDSPOTLIGHT, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED );
|
|||
|
|
pMenu->EnableMenuItem( ID_ENVILIGHT_REMOVELIGHT, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED );
|
|||
|
|
|
|||
|
|
pMenu->TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this );
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CalcSelectItemList();
|
|||
|
|
|
|||
|
|
int nSelectCount = (int)m_SelectItemList.GetCount();
|
|||
|
|
if( nSelectCount == 0 ) {
|
|||
|
|
pMenu->EnableMenuItem( ID_ENVILIGHT_REMOVELIGHT, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED );
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
pMenu->EnableMenuItem( ID_ENVILIGHT_ADDDIRECTIONLIGHT, MF_BYCOMMAND | MF_ENABLED );
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>ϴ<EFBFBD> <20><><EFBFBD>Ƴ<EFBFBD><C6B3>´<EFBFBD>.
|
|||
|
|
pMenu->EnableMenuItem( ID_ENVILIGHT_ADDPOINTLIGHT, MF_BYCOMMAND | MF_ENABLED );
|
|||
|
|
pMenu->EnableMenuItem( ID_ENVILIGHT_ADDSPOTLIGHT, MF_BYCOMMAND | MF_ENABLED );
|
|||
|
|
|
|||
|
|
pMenu->EnableMenuItem( ID_ENVILIGHT_REMOVELIGHT, MF_BYCOMMAND | MF_ENABLED );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
pMenu->TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
LRESULT CEnviLightPaneView::OnSetModify( WPARAM wParam, LPARAM lParam )
|
|||
|
|
{
|
|||
|
|
CUnionValueProperty *pVariable = (CUnionValueProperty *)lParam;
|
|||
|
|
if( lParam == NULL )
|
|||
|
|
ModifyItem( wParam, (LPARAM)m_pVecVariable[wParam] );
|
|||
|
|
else ModifyItem( wParam, (LPARAM)lParam );
|
|||
|
|
return S_OK;
|
|||
|
|
}
|