Специализированный программно-аппаратный комплекс обучения русскому жестовому языку. Учебное пособие
.pdf{
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
