// PageWideContainer.cpp : implementation file // #include "stdafx.h" #include "worldcreator.h" #include "PageWideContainer.h" #include "DlgWideLoad.h" #include "MainFrm.h" #include "WorldCreatorView.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CPageWideContainer property page IMPLEMENT_DYNCREATE(CPageWideContainer, CPropertyPage) CPageWideContainer::CPageWideContainer() : CPropertyPage(CPageWideContainer::IDD) { //{{AFX_DATA_INIT(CPageWideContainer) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT m_SelectCur=-1; } CPageWideContainer::~CPageWideContainer() { } void CPageWideContainer::DoDataExchange(CDataExchange* pDX) { CPropertyPage::DoDataExchange(pDX); //{{AFX_DATA_MAP(CPageWideContainer) DDX_Control(pDX, IDC_LIST_WIDETEXTURE, m_WideTextureListview); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CPageWideContainer, CPropertyPage) //{{AFX_MSG_MAP(CPageWideContainer) ON_COMMAND(MENU_WIDETEXUTRELOAD, OnWidetexutreload) ON_NOTIFY(NM_RCLICK, IDC_LIST_WIDETEXTURE, OnRclickListWidetexture) ON_NOTIFY(HDN_BEGINDRAG, IDC_LIST_WIDETEXTURE, OnBegindragListWidetexture) ON_NOTIFY(LVN_BEGINDRAG, IDC_LIST_WIDETEXTURE, OnBegindragListWidetexture) ON_COMMAND(MENU_WIDEMAPDELETE, OnWidemapdelete) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CPageWideContainer message handlers void CPageWideContainer::OnWidetexutreload() { // TODO: Add your command handler code here CDlgWideLoad dlgWideLoad; if( dlgWideLoad.DoModal()!=IDOK || dlgWideLoad.m_strWideTextureName[0]=="") return; int nInsertItem=m_WideTextureListview.GetItemCount(); WideTextureListNode AddNode; strcpy(AddNode.m_strWideTextureFileName[0],dlgWideLoad.m_strWideTextureName[0].LockBuffer()); strcpy(AddNode.m_strWideTextureFileName[1],dlgWideLoad.m_strWideTextureName[1].LockBuffer()); strcpy(AddNode.m_strWideTextureFileName[2],dlgWideLoad.m_strWideTextureName[2].LockBuffer()); strcpy(AddNode.m_strDetailTextureFileName[0],dlgWideLoad.m_strDetailTextureName[0].LockBuffer()); strcpy(AddNode.m_strDetailTextureFileName[1],dlgWideLoad.m_strDetailTextureName[1].LockBuffer()); strcpy(AddNode.m_strDetailTextureFileName[2],dlgWideLoad.m_strDetailTextureName[2].LockBuffer()); if(dlgWideLoad.m_strWideName=="") { strcpy(AddNode.m_strWideTextureName,dlgWideLoad.m_strWideTextureName[0].LockBuffer()); m_WideTextureListview.InsertItem(nInsertItem,dlgWideLoad.m_strWideTextureName[0]); } else { strcpy(AddNode.m_strWideTextureName,dlgWideLoad.m_strWideName.LockBuffer()); m_WideTextureListview.InsertItem(nInsertItem,dlgWideLoad.m_strWideTextureName[0]); } m_WideTextureListNode.Add(AddNode); m_WideTextureListview.SetItemText(nInsertItem,1,dlgWideLoad.m_strWideTextureName[0]); } BOOL CPageWideContainer::OnInitDialog() { CPropertyPage::OnInitDialog(); DWORD dwStyle; dwStyle = m_WideTextureListview.SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE, 0 ,0); dwStyle |= LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES ; m_WideTextureListview.SendMessage( LVM_SETEXTENDEDLISTVIEWSTYLE, 0,dwStyle ); m_WideTextureListview.InsertColumn(0,"À̸§",LVCFMT_LEFT,140); m_WideTextureListview.InsertColumn(1,"ÆÄÀÏÀ̸§",LVCFMT_LEFT,180); // TODO: Add extra initialization here return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CPageWideContainer::OnRclickListWidetexture(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here CPoint point; GetCursorPos(&point); CMenu menu; menu.LoadMenu(IDR_MENU_WIDETEXTURE); menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this); *pResult = 0; } void CPageWideContainer::OnBegindragListWidetexture(NMHDR* pNMHDR, LRESULT* pResult) { HD_NOTIFY * phdn = (HD_NOTIFY *) pNMHDR; // TODO: Add your control notification handler code here CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView(); SelectWideTexture(); av->ChangeMouseInterface(10); *pResult = 0; } void CPageWideContainer::SelectWideTexture() { m_SelectCur=m_WideTextureListview.GetNextItem(-1,LVNI_SELECTED); if(m_SelectCur<0) return; m_strWideName[0]=m_WideTextureListNode[m_SelectCur].m_strWideTextureFileName[0]; m_strWideName[1]=m_WideTextureListNode[m_SelectCur].m_strWideTextureFileName[1]; m_strWideName[2]=m_WideTextureListNode[m_SelectCur].m_strWideTextureFileName[2]; m_strDetailName[0]=m_WideTextureListNode[m_SelectCur].m_strDetailTextureFileName[0]; m_strDetailName[1]=m_WideTextureListNode[m_SelectCur].m_strDetailTextureFileName[1]; m_strDetailName[2]=m_WideTextureListNode[m_SelectCur].m_strDetailTextureFileName[2]; } void CPageWideContainer::AddWideTexture(float fXp, float fYp, float fZp) { CMainFrame *mf=(CMainFrame*)AfxGetApp()->m_pMainWnd; CWorldCreatorView *av=(CWorldCreatorView *)mf->GetActiveView(); av->m_SceneManager->m_MapStorage.AddWideMap(fXp,fYp,fZp,m_strWideName[0].GetBuffer(0),m_strDetailName[0].GetBuffer(0),m_strWideName[1].GetBuffer(0),m_strDetailName[1].GetBuffer(0),m_strWideName[2].GetBuffer(0),m_strDetailName[2].GetBuffer(0)); //CMapStorage::AddWideMap(fXp,fYp,fZp,m_strWideName.LockBuffer()); } void CPageWideContainer::UpdateList() { m_WideTextureListview.DeleteAllItems(); for(int i=0;i