Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Специализированный программно-аппаратный комплекс обучения русскому жестовому языку. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
15.08.2026
Размер:
1 Мб
Скачать

{

CPoint point (BCG_GET_X_LPARAM(lp), BCG_GET_Y_LPARAM(lp)); CMenu menu;

VERIFY(menu.LoadMenu (IDR_POPUP_TOOLBAR)); CMenu* pPopup = menu.GetSubMenu(0); ASSERT(pPopup != NULL);

SetupToolbarMenu (*pPopup, ID_VIEW_USER_TOOLBAR1, ID_VIEW_USER_TOOLBAR10);

CBCGPopupMenu* pPopupMenu = new CBCGPopupMenu; pPopupMenu->Create (this, point.x, point.y, pPopup->Detach ()); return 0;

}

void CMainFrame::OnToolsViewUserToolbar (UINT uiId)

{

CBCGToolBar* pUserToolBar = GetUserBarByIndex (uiId - ID_VIEW_USER_TOOLBAR1);

if (pUserToolBar == NULL)

{

ASSERT (FALSE); return;

}

ShowControlBar (pUserToolBar, !(pUserToolBar->GetStyle () & WS_VISIBLE), FALSE);

RecalcLayout ();

}

void CMainFrame::OnUpdateToolsViewUserToolbar (CCmdUI* pCmdUI)

{

CBCGToolBar* pUserToolBar = GetUserBarByIndex (pCmdUI->m_nID - ID_VIEW_USER_TOOLBAR1);

if (pUserToolBar == NULL)

{

pCmdUI->Enable (FALSE); return;

}

pCmdUI->Enable ();

pCmdUI->SetCheck (pUserToolBar->GetStyle () & WS_VISIBLE);

}

afx_msg LRESULT CMainFrame::OnToolbarReset(WPARAM /*wp*/,LPARAM)

{

//TODO: reset toolbar with id = (UINT) wp to its initial state:

//UINT uiToolBarId = (UINT) wp;

//if (uiToolBarId == IDR_MAINFRAME)

51

//{

//do something with m_wndToolBar

//}

return 0;

}

BOOL CMainFrame::OnShowPopupMenu (CBCGPopupMenu* pMenuPopup)

{

//---------------------------------------------------------

// Replace ID_VIEW_TOOLBARS menu item to the toolbars list: //---------------------------------------------------------

// CMDIFrameWnd::OnShowPopupMenu (pMenuPopup); if (pMenuPopup != NULL &&

pMenuPopup->GetMenuBar ()->CommandToIndex (ID_VIEW_TOOLBARS) >= 0)

{

if (CBCGToolBar::IsCustomizeMode ())

{

//----------------------------------------------------

// Don't show toolbars list in the cuztomization mode! //----------------------------------------------------

return FALSE;

}

pMenuPopup->RemoveAllItems (); CMenu menu;

VERIFY(menu.LoadMenu (IDR_POPUP_TOOLBAR)); CMenu* pPopup = menu.GetSubMenu(0); ASSERT(pPopup != NULL);

SetupToolbarMenu (*pPopup, ID_VIEW_USER_TOOLBAR1, ID_VIEW_USER_TOOLBAR10);

pMenuPopup->GetMenuBar ()->ImportFromMenu (*pPopup, TRUE);

}

return TRUE;

}

void CMainFrame::OnViewWorkspace()

{

ShowControlBar (&m_wndWorkSpace, !(m_wndWorkSpace.GetStyle () & WS_VISIBLE), FALSE);

RecalcLayout ();

}

void CMainFrame::OnUpdateViewWorkspace(CCmdUI* pCmdUI)

{

pCmdUI->SetCheck (m_wndWorkSpace.GetStyle () & WS_VISIBLE);

52

}

void CMainFrame::OnViewOutput()

{

ShowControlBar (&m_wndOutput, !(m_wndOutput.GetStyle () & WS_VISIBLE), FALSE);

RecalcLayout ();

}

void CMainFrame::OnUpdateViewOutput(CCmdUI* pCmdUI)

{

pCmdUI->SetCheck (m_wndOutput.GetStyle () & WS_VISIBLE);

}

//DEL void CMainFrame::OnViewTaskpane() //DEL {

//DEL ShowControlBar (&m_wndTaskPane,

//DEL

!(m_wndTaskPane.GetStyle () & WS_VISIBLE),

//DEL

FALSE);

//DEL RecalcLayout (); //DEL }

//DEL void CMainFrame::OnUpdateViewTaskpane(CCmdUI* pCmdUI) //DEL {

//DEL pCmdUI->SetCheck (m_wndTaskPane.GetStyle () & WS_VISIBLE); //DEL }

//DEL void CMainFrame::OnViewCaptionBar() //DEL {

//DEL ShowControlBar (&m_wndCaptionBar,

//DEL

!(m_wndCaptionBar.GetStyle () & WS_VISIBLE),

//DEL

FALSE);

//DEL RecalcLayout ();

//DEL }

 

//DEL void CMainFrame::OnUpdateViewCaptionBar(CCmdUI* pCmdUI) //DEL {

//DEL // pCmdUI->SetCheck (m_wndCaptionBar.GetStyle () & WS_VISIBLE); //DEL }

//DEL BOOL CMainFrame::CreateTaskPane () //DEL {

//DEL if (!m_wndTaskPane.Create (this,

//DEL

WS_CHILD | WS_VISIBLE | CBRS_RIGHT | CBRS_HIDE_INPLACE

| WS_CAPTION,

//DEL ID_VIEW_TASKPANE))

//DEL {

 

//DEL

TRACE0("Failed to create task pane\n");

//DEL

return FALSE; // fail to create

53

//DEL } //DEL

//DEL return TRUE; //DEL }

void CMainFrame::OnWindowManager()

{

ShowWindowsDialog ();

}

void CMainFrame::OnTask()

{

MessageBox (_T("TODO: Task"));

}

void CMainFrame::OnFileNew()

{

CreateNewFile *cfn = new CreateNewFile; if(cfn->DoModal()==IDOK)

{

//cfn->type; //cfn->FPathName; //cfn->FName; /*char buf[256];

wsprintf(buf,"%d",cfn->type); AfxMessageBox(buf);*/ //CleunUp all

ASSERT(this->m_wndWorkSpace); ASSERT(this->m_wndWorkSpace.m_wndHierarchy); this->m_wndWorkSpace.m_wndHierarchy.CleanupRegEntries(); switch(cfn->type)

{

case DCF: //Project data file

{

//AfxMessageBox(cfn->FPathName+cfn- >FName+_TEXT(".dcf"));

CDataContainerFile cdf; CString cs;

if(cdf.InitDataContainer(cfn->FPathName+_TEXT("\\")+cfn- >FName+_TEXT(".dcf"),true))

{

SetSTRToReg(PATH_REG_PARAMS,"CurrentDataFile",cfn- >FPathName+_TEXT("\\")+cfn->FName+_TEXT(".dcf"));

m_wndWorkSpace.m_wndHierarchy.DeleteAllItems();

54

HTREEITEM curHt = m_wndWorkSpace.m_wndHierarchy.InsertItem(cfn->FName+_TEXT(".dcf"));

m_wndWorkSpace.m_wndHierarchy.SetItemData(curHt,TREE_ROOT); cs.Format("Created: %s (%s)",cfn-

>FName+_TEXT(".dcf"),sz_FileTypesNames[cfn->type-1]); m_wndOutput.m_wndList1.AddString(cs);

}

CreateTemporaryPath(cfn->FName); cdf.CloseDataContainer();

}

 

 

break;

 

case

SGL:

//textured like sprite file

break;

 

case

NAS:

//non packed sprite

break;

 

case

LPS:

//run liner packed sprite

break;

 

case

RSF:

//r.a.m. sprite file

break;

 

case SPR: break;

case WMP: break;

default:

ASSERT(false);

break;

}

//CreateFileContainer(cfn->type, cfn->FName, cfn->FPathName);

}

delete cfn;

}

void CMainFrame::OnFileOpen()

{

// TODO: Add your command handler code here CFileDialog

cf(true,_TEXT("DCF"),NULL,OFN_ENABLESIZING|OFN_FILEMUSTEXIST|O FN_LONGNAMES|

OFN_PATHMUSTEXIST,

_TEXT("DX3D SGL Project data file (*.dcf)|*.dcf|DX3D SGL Sprite file (*.sgl)|*sgl|All Files|*.*||"),this);

cf.m_ofn.lpstrInitialDir = _TEXT(RestoreOpenDirectory("OnFileOpen")); if(cf.DoModal()==IDOK)

55

{

//CleunUp all ASSERT(this->m_wndWorkSpace);

ASSERT(this->m_wndWorkSpace.m_wndHierarchy); this->m_wndWorkSpace.m_wndHierarchy.CleanupRegEntries(); CDataContainerFile cdf;

//

if(cdf.InitDataContainer("C:\\Projects\\WorldWarGame\\DCFEditor\\TempFold

er\\LongPack.dcf",false))

if(cdf.InitDataContainer(cf.GetPathName(),false))

{

m_wndWorkSpace.m_wndHierarchy.DeleteAllItems();

HTREEITEM curHt = m_wndWorkSpace.m_wndHierarchy.InsertItem(cf.GetFileName(),2,2);

ASSERT(curHt);

if(curHt)

{

m_wndWorkSpace.m_wndHierarchy.SetItemData(curHt,TREE_ROOT); CString cs("Open file:");

cs+=cf.GetPathName(); m_wndOutput.m_wndList1.AddString(cs);

cs.Format("File version: %s, data entries count: %d.",cdf.ver,cdf.num_entries);

m_wndOutput.m_wndList1.AddString(cs); cdf.EnumerateEntriesProgress(&m_wndWorkSpace.m_wndHierarchy,m_wnd

WorkSpace.m_wndHierarchy.GetRootItem()); cdf.CloseDataContainer(); SaveOpenDirectory("OnFileOpen"); SetSTRToReg(PATH_REG_PARAMS,"CurrentDataFile",

cf.GetPathName());

CreateTemporaryPath(cf.GetFileName());

}

}

}

}

bool CMainFrame::CreateFileContainer(int type, CString file, CString path)

{

CMainFrame* pFrame = STATIC_DOWNCAST(CMainFrame, this); LPCTSTR lpszBounceClass =

AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW, ::LoadCursor(theApp.m_hInstance,IDC_UPARROW),

56

(HBRUSH)(COLOR_WINDOW+1), NULL);

CChildFrame *ContainerWindow = new CChildFrame;

//m_pMainWnd.LoadAccelTable(IDR_MAINFRAME);

//AfxMessageBox(file);

ContainerWindow->Create(lpszBounceClass, file , WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW,

pFrame->rectDefault, pFrame); ContainerWindow->LoadAccelTable(MAKEINTRESOURCE

(IDR_MAINFRAME));

// ContainerWindow->SetFocus(); return true;

}

void CMainFrame::OnClose()

{

// TODO: Add your message handler code here and/or call default ASSERT(this->m_wndWorkSpace); ASSERT(this->m_wndWorkSpace.m_wndHierarchy); this->m_wndWorkSpace.m_wndHierarchy.CleanupRegEntries();

CMDIFrameWnd::OnClose();

}

bool CMainFrame::CreateTemporaryPath(LPCTSTR FileName)

{

//Get temporary path name

char Buffer[_MAX_PATH+_MAX_FNAME]; if(GetTempPath(_MAX_PATH+_MAX_FNAME,_TEXT(Buffer)))

{

strcat(_TEXT(Buffer),_TEXT("dcfcobe.tmp")); SetSTRTo-

Reg(PATH_REG_PARAMS,"TemporaryDataFile",_TEXT(Buffer)); return true;

}

else

{

CString cstring; cstring.LoadString(IDS_CANTCREATE_REGPATH); AfxMessageBox(cstring);

}

return false;

}

void CMainFrame::OnUpdateDelete(CCmdUI* pCmdUI)

{

// TODO: Add your command update UI handler code here

57

// HTREEITEM HitTested = m_wndWorkSpace.m_wndHierarchy.GetSelectedItem();

if((m_wndWorkSpace.m_wndHierarchy.m_HitTestedItem= m_wndWorkSpace.m_wndHierarchy.GetSelectedItem())!=NULL)

m_wndWorkSpace.m_wndHierarchy.OnUpdateDelete(pCmdUI); else

pCmdUI->Enable(false);

}

void CMainFrame::OnDelete()

{

// TODO: Add your command handler code here if((m_wndWorkSpace.m_wndHierarchy.m_HitTestedItem=

m_wndWorkSpace.m_wndHierarchy.GetSelectedItem())!=NULL) m_wndWorkSpace.m_wndHierarchy.OnDelete();

}

void CMainFrame::OnUpdateViewHierarhy(CCmdUI* pCmdUI)

{

// TODO: Add your command update UI handler code here pCmdUI->Enable();

if(m_wndHierarhyBar.IsVisible()) if(pCmdUI->m_pMenu)

pCmdUI->m_pMenu->CheckMenuItem(ID_VIEW_HIERARHY ,MF_CHECKED);

}

void CMainFrame::OnViewHierarhy()

{

// TODO: Add your command handler code here if(m_wndHierarhyBar.IsVisible())

m_wndHierarhyBar.ShowWindow(SW_HIDE); else

m_wndHierarhyBar.ShowWindow(SW_SHOW); RecalcLayout(true);

}

void CMainFrame::OnRebildAll()

{

// TODO: Add your command handler code here m_wndWorkSpace.m_wndHierarchy.OnRebildAll();

}

void CMainFrame::OnUpdateRebildAll(CCmdUI* pCmdUI)

{

// TODO: Add your command update UI handler code here if(m_wndWorkSpace.m_wndHierarchy.m_CurrentInsertionPos>0

|| m_wndWorkSpace.m_wndHierarchy.m_dwDeletionsNumber>0)

58

pCmdUI->Enable(); else

pCmdUI->Enable(false);

}

void CMainFrame::OnUpdateInsertFile(CCmdUI* pCmdUI)

{

// TODO: Add your command update UI handler code here if((m_wndWorkSpace.m_wndHierarchy.m_HitTestedItem=

m_wndWorkSpace.m_wndHierarchy.GetSelectedItem())!=NULL) m_wndWorkSpace.m_wndHierarchy.OnUpdateInsertFile(pCmdUI); else

pCmdUI->Enable(false);

}

void CMainFrame::OnInsertFile()

{

// TODO: Add your command handler code here if((m_wndWorkSpace.m_wndHierarchy.m_HitTestedItem=

m_wndWorkSpace.m_wndHierarchy.GetSelectedItem())!=NULL) m_wndWorkSpace.m_wndHierarchy.OnInsertFile();

}

void CMainFrame::OnCreatefilder()

{

// TODO: Add your command handler code here if((m_wndWorkSpace.m_wndHierarchy.m_HitTestedItem=

m_wndWorkSpace.m_wndHierarchy.GetSelectedItem())!=NULL) m_wndWorkSpace.m_wndHierarchy.OnInsertFolder();

}

void CMainFrame::OnUpdateCreatefilder(CCmdUI* pCmdUI)

{

// TODO: Add your command update UI handler code here if((m_wndWorkSpace.m_wndHierarchy.m_HitTestedItem=

m_wndWorkSpace.m_wndHierarchy.GetSelectedItem())!=NULL) m_wndWorkSpace.m_wndHierarchy.OnUpdateInsertFile(pCmdUI); else

pCmdUI->Enable(false);

}

void CMainFrame::OnUpdateHierSort(CCmdUI* pCmdUI)

{

// TODO: Add your command update UI handler code here if((m_wndWorkSpace.m_wndHierarchy.m_HitTestedItem=

m_wndWorkSpace.m_wndHierarchy.GetSelectedItem())!=NULL) m_wndWorkSpace.m_wndHierarchy.OnUpdateHierSort(pCmdUI); else

59

pCmdUI->Enable(false);

}

void CMainFrame::OnHierSort()

{

// TODO: Add your command handler code here if((m_wndWorkSpace.m_wndHierarchy.m_HitTestedItem=

m_wndWorkSpace.m_wndHierarchy.GetSelectedItem())!=NULL) m_wndWorkSpace.m_wndHierarchy.OnHierSort();

}

ПРИЛОЖЕНИЕ 2

Листинг контейнера данных

//DataContainerFile.cpp : implementation file

#include "stdafx.h" #include "DlgEnum.h" #include "resource.h" #ifdef _DEBUG

#define new DEBUG_NEW #undef THIS_FILE

static char THIS_FILE[] = __FILE__; #endif

/////////////////////////////////////////////////////////////////////////////

//CDataContainerFile

BYTE sz_Head_Ver1[] = {0x44,0x43,0x46,0x76,0x31,0x2e,0x30,0x30}; BYTE sz_Head_Ver2[] = {0x44,0x43,0x46,0x76,0x32,0x2e,0x30,0x30}; IMPLEMENT_DYNCREATE(CDataContainerFile, CObject)

CDataContainerFile::CDataContainerFile()

{

num_entries=0; m_Entries_pos=0; m_ContainerSize=NULL;

//cImList = NULL; ver_switch = 0; m_Max_Link_Size=0;

}

CDataContainerFile::~CDataContainerFile()

{

num_entries = 0; m_Entries_pos=0;

60

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]