?? mainfrm.cpp
字號:
// MainFrm.cpp : implementation of the CMainFrame class
//
#include "stdafx.h"
#include "Triangle.h"
#include "MainFrm.h"
#include "TriangleView.h"
#include "body.h"
#include <string.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_COMMAND_EX(CG_ID_VIEW_FRAMEDIALOGBAR, OnBarCheck)
ON_UPDATE_COMMAND_UI(CG_ID_VIEW_FRAMEDIALOGBAR, OnUpdateControlBarMenu)
ON_COMMAND_EX(CG_ID_VIEW_INFOBAR, OnBarCheck)
ON_UPDATE_COMMAND_UI(CG_ID_VIEW_INFOBAR, OnUpdateControlBarMenu)
ON_WM_CREATE()
ON_COMMAND_EX(CG_ID_VIEW_SKELETENDIALOGBAR, OnBarCheck)
ON_UPDATE_COMMAND_UI(CG_ID_VIEW_SKELETENDIALOGBAR, OnUpdateControlBarMenu)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_PALETTECHANGED()
ON_WM_QUERYNEWPALETTE()
ON_NOTIFY(TVN_SELCHANGED, IDC_BODYTREE, OnSelchangedTree)
ON_BN_CLICKED(IDC_BUTTON_PLAY, OnButtonPlay)
ON_BN_CLICKED(IDC_BUTTON_STOP, OnButtonStop)
ON_BN_CLICKED(IDC_BUTTON_ADDGROUP, OnButtonAddGroup)
ON_BN_CLICKED(IDC_BUTTON_DELGROUP, OnButtonDelGroup)
ON_BN_CLICKED(IDC_BUTTON_ADDFRAME, OnButtonAddFrame)
ON_BN_CLICKED(IDC_BUTTON_DELFRAME, OnButtonDelFrame)
ON_BN_CLICKED(IDC_BUTTON_NEXT, OnButtonNext)
ON_BN_CLICKED(IDC_BUTTON_PREV, OnButtonPrev)
ON_BN_CLICKED(IDC_BUTTON_FIRST, OnButtonFirst)
ON_BN_CLICKED(IDC_BUTTON_LAST, OnButtonLast)
ON_COMMAND(ID_TOGGLE_ATTRIBUTEBAR, OnToggleAttributebar)
ON_UPDATE_COMMAND_UI(ID_TOGGLE_ATTRIBUTEBAR, OnUpdateToggleAttributebar)
ON_COMMAND(ID_TOGGLE_MANIPULATEBAR, OnToggleManipulatebar)
ON_UPDATE_COMMAND_UI(ID_TOGGLE_MANIPULATEBAR, OnUpdateToggleManipulatebar)
ON_WM_PAINT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
static char *BodyTypes[] =
{
"body ",
"upper_body ",
"head ",
"shoulder ",
"left_arm ",
"right_arm ",
"left_upper_arm ",
"right_upper_arm ",
"left_lower_arm ",
"right_lower_arm ",
"left_hand ",
"right_hand ",
"lower_body ",
"left_leg ",
"right_leg ",
"left_upper_leg ",
"right_upper_leg ",
"left_lower_leg ",
"right_lower_leg ",
"left_foot ",
"right_foot ",
"left_elbow ",
"right_elbow ",
"left_wrist ",
"right_wrist ",
"left_knee ",
"right_knee ",
"left_ankle ",
"right_ankle "
};
/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction
CMainFrame::CMainFrame()
{
m_pView = NULL;
body_id = BODY;
}
CMainFrame::~CMainFrame()
{
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
// the CREATESTRUCT cs
return CFrameWnd::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CFrameWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
void CMainFrame::OnPaletteChanged(CWnd* pFocusWnd)
{
CView* pView = GetActiveView();
if (pView)
{
// OnPaletteChanged is not public, so send a message.
pView->SendMessage(WM_PALETTECHANGED,
(WPARAM)(pFocusWnd->GetSafeHwnd()),
(LPARAM)0);
}
}
BOOL CMainFrame::OnQueryNewPalette()
{
CView* pView = GetActiveView();
if (pView)
{
return pView->SendMessage(WM_QUERYNEWPALETTE,
(WPARAM)0,
(LPARAM)0);
}
return FALSE;
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndManipulateBar.Create(this) ||
!m_wndManipulateBar.LoadToolBar(IDR_MANIPULATEBAR))
{
TRACE0("Failed to create toolbar\n");
return -1;
}
m_wndManipulateBar.SetBarStyle(m_wndManipulateBar.GetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
m_wndManipulateBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndManipulateBar);
if (!m_wndAttributeBar.Create(this) ||
!m_wndAttributeBar.LoadToolBar(IDR_ATTRIBUTEBAR))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
m_wndAttributeBar.SetBarStyle(m_wndAttributeBar.GetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
m_wndAttributeBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndAttributeBar);
// TODO: Add a menu item that will toggle the visibility of the
// dialog bar named "Skeleten Dialog Bar":
// 1. In ResourceView, open the menu resource that is used by
// the CMainFrame class
// 2. Select the View submenu
// 3. Double-click on the blank item at the bottom of the submenu
// 4. Assign the new item an ID: CG_ID_VIEW_SKELETENDIALOGBAR
// 5. Assign the item a Caption: Skeleten Dialog Bar
// TODO: Change the value of CG_ID_VIEW_SKELETENDIALOGBAR to an appropriate value:
// 1. Open the file resource.h
// CG: The following block was inserted by the 'Dialog Bar' component
{
// Initialize dialog bar m_wndSkeletenDialogBar
if (!m_wndSkeletenDialogBar.Create(this, CG_IDD_SKELETENDIALOGBAR,
CBRS_LEFT | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_HIDE_INPLACE,
CG_ID_VIEW_SKELETENDIALOGBAR))
{
TRACE0("Failed to create dialog bar m_wndSkeletenDialogBar\n");
return -1; // fail to create
}
m_wndSkeletenDialogBar.EnableDocking(CBRS_ALIGN_LEFT | CBRS_ALIGN_RIGHT);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndSkeletenDialogBar);
}
CTreeCtrl *pTreeCtrl = (CTreeCtrl*)m_wndSkeletenDialogBar.GetDlgItem(IDC_BODYTREE);
TV_INSERTSTRUCT temp;
temp.hParent = NULL;
temp.hInsertAfter = TVI_LAST;
temp.item.mask = TVIF_TEXT;
temp.item.hItem = NULL;
temp.item.state = 0;
temp.item.stateMask = 0;
temp.item.cchTextMax = 12;
temp.item.iSelectedImage = 0;
temp.item.cChildren = 0;
temp.item.lParam = 0;
temp.item.pszText = "body";
body = pTreeCtrl->InsertItem(&temp);
temp.hParent = body;
temp.item.pszText = "upper_body";
upper_body = pTreeCtrl->InsertItem(&temp);
temp.hParent = body;
temp.item.pszText = "lower_body";
lower_body = pTreeCtrl->InsertItem(&temp);
temp.hParent = upper_body;
temp.item.pszText = "head";
head = pTreeCtrl->InsertItem(&temp);
temp.hParent = upper_body;
temp.item.pszText = "shoulder";
shoulder = pTreeCtrl->InsertItem(&temp);
temp.hParent = upper_body;
temp.item.pszText = "left_arm";
left_arm = pTreeCtrl->InsertItem(&temp);
temp.hParent = upper_body;
temp.item.pszText = "right_arm";
right_arm = pTreeCtrl->InsertItem(&temp);
temp.hParent = lower_body;
temp.item.pszText = "left_leg";
left_leg = pTreeCtrl->InsertItem(&temp);
temp.hParent = lower_body;
temp.item.pszText = "right_leg";
right_leg = pTreeCtrl->InsertItem(&temp);
temp.hParent = left_arm;
temp.item.pszText = "left_upper_arm";
left_upper_arm = pTreeCtrl->InsertItem(&temp);
temp.item.pszText = "left_lower_arm";
left_lower_arm = pTreeCtrl->InsertItem(&temp);
temp.item.pszText = "left_hand";
left_hand = pTreeCtrl->InsertItem(&temp);
temp.hParent = right_arm;
temp.item.pszText = "right_upper_arm";
right_upper_arm = pTreeCtrl->InsertItem(&temp);
temp.item.pszText = "right_lower_arm";
right_lower_arm = pTreeCtrl->InsertItem(&temp);
temp.item.pszText = "right_hand";
right_hand = pTreeCtrl->InsertItem(&temp);
temp.hParent = left_leg;
temp.item.pszText = "left_upper_leg";
left_upper_leg = pTreeCtrl->InsertItem(&temp);
temp.item.pszText = "left_lower_leg";
left_lower_leg = pTreeCtrl->InsertItem(&temp);
temp.item.pszText = "left_foot";
left_foot = pTreeCtrl->InsertItem(&temp);
temp.hParent = right_leg;
temp.item.pszText = "right_upper_leg";
right_upper_leg = pTreeCtrl->InsertItem(&temp);
temp.item.pszText = "right_lower_leg";
right_lower_leg = pTreeCtrl->InsertItem(&temp);
temp.item.pszText = "right_foot";
right_foot = pTreeCtrl->InsertItem(&temp);
CSpinButtonCtrl *pSpin;
pSpin = (CSpinButtonCtrl*)m_wndSkeletenDialogBar.GetDlgItem(IDC_SPIN_BODYTYPE);
pSpin->SetRange(0, 1);
pSpin->SetPos(0);
pSpin = (CSpinButtonCtrl*)m_wndSkeletenDialogBar.GetDlgItem(IDC_SPIN_ORIENTATIONX);
pSpin->SetRange(0, 1);
pSpin->SetPos(0);
pSpin = (CSpinButtonCtrl*)m_wndSkeletenDialogBar.GetDlgItem(IDC_SPIN_ORIENTATIONY);
pSpin->SetRange(0, 1);
pSpin->SetPos(0);
pSpin = (CSpinButtonCtrl*)m_wndSkeletenDialogBar.GetDlgItem(IDC_SPIN_POSITIONY);
pSpin->SetRange(0, 1);
pSpin->SetPos(0);
CString str = "Body Type : ";
str += (LPCTSTR)BodyTypes[body_id];
m_wndSkeletenDialogBar.SetDlgItemText(IDC_STATIC_BODYTYPE, (LPCTSTR)str);
// TODO: Add a menu item that will toggle the visibility of the
// dialog bar named "Frame Dialog Bar":
// 1. In ResourceView, open the menu resource that is used by
// the CMainFrame class
// 2. Select the View submenu
// 3. Double-click on the blank item at the bottom of the submenu
// 4. Assign the new item an ID: CG_ID_VIEW_FRAMEDIALOGBAR
// 5. Assign the item a Caption: Frame Dialog Bar
// TODO: Change the value of CG_ID_VIEW_FRAMEDIALOGBAR to an appropriate value:
// 1. Open the file resource.h
// CG: The following block was inserted by the 'Dialog Bar' component
{
// Initialize dialog bar m_wndFrameDialogBar
if (!m_wndFrameDialogBar.Create(this, CG_IDD_FRAMEDIALOGBAR,
CBRS_BOTTOM | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_HIDE_INPLACE,
CG_ID_VIEW_FRAMEDIALOGBAR))
{
TRACE0("Failed to create dialog bar m_wndFrameDialogBar\n");
return -1; // fail to create
}
m_wndFrameDialogBar.EnableDocking(CBRS_ALIGN_BOTTOM | CBRS_ALIGN_TOP);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndFrameDialogBar);
}
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
SetIcon(m_hIcon, TRUE);
SetIcon(m_hIcon, FALSE);
return 0;
}
void CMainFrame::SetRoot(void)
{
CTreeCtrl *pTreeCtrl = (CTreeCtrl*)m_wndSkeletenDialogBar.GetDlgItem(IDC_BODYTREE);
pTreeCtrl->SelectItem(pTreeCtrl->GetRootItem());
}
void CMainFrame::OnSelchangedTree(NMHDR* pNMHDR, LRESULT* pResult)
{
CTreeCtrl *pTreeCtrl = (CTreeCtrl*)m_wndSkeletenDialogBar.GetDlgItem(IDC_BODYTREE);
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
HTREEITEM hNewItem;
HTREEITEM hOldItem;
CString str = "Body Type : ";
hOldItem = pNMTreeView->itemOld.hItem;
hNewItem = pNMTreeView->itemNew.hItem;
if(hNewItem != NULL)
{
if(hNewItem == body)
{
body_id = BODY;
}else
if(hNewItem == upper_body)
{
body_id = UPPER_BODY;
}else
if(hNewItem == lower_body)
{
body_id = LOWER_BODY;
}else
if(hNewItem == left_arm)
{
body_id = LEFT_ARM;
}else
if(hNewItem == right_arm)
{
body_id = RIGHT_ARM;
}else
if(hNewItem == left_leg)
{
body_id = LEFT_LEG;
}else
if(hNewItem == right_leg)
{
body_id = RIGHT_LEG;
}else
if(hNewItem == left_upper_arm)
{
body_id = LEFT_UPPER_ARM;
}else
if(hNewItem == right_upper_arm)
{
body_id = RIGHT_UPPER_ARM;
}else
if(hNewItem == left_lower_arm)
{
body_id = LEFT_LOWER_ARM;
}else
if(hNewItem == right_lower_arm)
{
body_id = RIGHT_LOWER_ARM;
}else
if(hNewItem == left_hand)
{
body_id = LEFT_HAND;
}else
if(hNewItem == right_hand)
{
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -