📄 mainfrm.cpp
字号:
body_id = RIGHT_HAND;
}else
if(hNewItem == left_upper_leg)
{
body_id = LEFT_UPPER_LEG;
}else
if(hNewItem == right_upper_leg)
{
body_id = RIGHT_UPPER_LEG;
}else
if(hNewItem == left_lower_leg)
{
body_id = LEFT_LOWER_LEG;
}else
if(hNewItem == right_lower_leg)
{
body_id = RIGHT_LOWER_LEG;
}else
if(hNewItem == left_foot)
{
body_id = LEFT_FOOT;
}else
if(hNewItem == right_foot)
{
body_id = RIGHT_FOOT;
}else
if(hNewItem == head)
{
body_id = HEAD;
}else
if(hNewItem == shoulder)
{
body_id = SHOULDER;
}
m_pView->SetActiveBody(body_id);
str += (LPCTSTR)BodyTypes[body_id];
m_wndSkeletenDialogBar.SetDlgItemText(IDC_STATIC_BODYTYPE, (LPCTSTR)str);
}
*pResult = 0;
}
void CMainFrame::SetCurrentBodyToTree(int body_id)
{
CTreeCtrl *pTreeCtrl = (CTreeCtrl*)m_wndSkeletenDialogBar.GetDlgItem(IDC_BODYTREE);
switch(body_id)
{
case BODY:
pTreeCtrl->SelectItem(body);
break;
case UPPER_BODY:
pTreeCtrl->SelectItem(upper_body);
break;
case HEAD:
pTreeCtrl->SelectItem(head);
break;
case SHOULDER:
pTreeCtrl->SelectItem(shoulder);
break;
case LEFT_ARM:
pTreeCtrl->SelectItem(left_arm);
break;
case RIGHT_ARM:
pTreeCtrl->SelectItem(right_arm);
break;
case LEFT_UPPER_ARM:
pTreeCtrl->SelectItem(left_upper_arm);
break;
case RIGHT_UPPER_ARM:
pTreeCtrl->SelectItem(right_upper_arm);
break;
case LEFT_LOWER_ARM:
pTreeCtrl->SelectItem(left_lower_arm);
break;
case RIGHT_LOWER_ARM:
pTreeCtrl->SelectItem(right_lower_arm);
break;
case LEFT_HAND:
pTreeCtrl->SelectItem(left_hand);
break;
case RIGHT_HAND:
pTreeCtrl->SelectItem(right_hand);
break;
case LOWER_BODY:
pTreeCtrl->SelectItem(lower_body);
break;
case LEFT_LEG:
pTreeCtrl->SelectItem(left_leg);
break;
case RIGHT_LEG:
pTreeCtrl->SelectItem(right_leg);
break;
case LEFT_UPPER_LEG:
pTreeCtrl->SelectItem(left_upper_leg);
break;
case RIGHT_UPPER_LEG:
pTreeCtrl->SelectItem(right_upper_leg);
break;
case LEFT_LOWER_LEG:
pTreeCtrl->SelectItem(left_lower_leg);
break;
case RIGHT_LOWER_LEG:
pTreeCtrl->SelectItem(right_lower_leg);
break;
case LEFT_FOOT:
pTreeCtrl->SelectItem(left_foot);
break;
case RIGHT_FOOT:
pTreeCtrl->SelectItem(right_foot);
break;
}
}
void CMainFrame::SpinScroll(int ID, UINT updown)
{
CString str = "Body Type : ";
switch(ID)
{
case IDC_SPIN_BODYTYPE:
if(updown == UP)
{
body_id--;
if(body_id < BODY)
{
body_id = BODY;
}
}else
{
body_id++;
if(body_id > RIGHT_FOOT)
{
body_id = RIGHT_FOOT;
}
}
str += (LPCTSTR)BodyTypes[body_id];
m_wndSkeletenDialogBar.SetDlgItemText(IDC_STATIC_BODYTYPE, (LPCTSTR)str);
m_pView->SetActiveBody(body_id);
SetCurrentBodyToTree(body_id);
break;
case IDC_SPIN_ORIENTATIONX:
if(updown == UP)
{
m_pView->ManipulateBody(-0.01f, 0.0f);
}else
{
m_pView->ManipulateBody(0.01f, 0.0f);
}
m_pView->Invalidate(FALSE);
break;
case IDC_SPIN_ORIENTATIONY:
if(updown == UP)
{
m_pView->ManipulateBody(0.0f, -0.001f);
}else
{
m_pView->ManipulateBody(0.0f, 0.001f);
}
m_pView->Invalidate(FALSE);
break;
case IDC_SPIN_POSITIONY:
if(updown == UP)
{
m_pView->TranslateBody(-1.0f);
}else
{
m_pView->TranslateBody(1.0f);
}
m_pView->Invalidate(FALSE);
break;
}
}
void CMainFrame::UpdateOrientation(int body_id, float x, float y)
{
CString str;
if(body_id != BODY && body_id != LEFT_ARM &&
body_id != RIGHT_ARM && body_id != LEFT_LEG &&
body_id != RIGHT_LEG)
{
str.GetBuffer(40);
str.Format("Orientation X : %f", x);
m_wndSkeletenDialogBar.SetDlgItemText(IDC_STATIC_ORIENTATIONX, (LPCTSTR)str);
str.Empty();
str.GetBuffer(40);
str.Format("Orientation Y : %f", y);
m_wndSkeletenDialogBar.SetDlgItemText(IDC_STATIC_ORIENTATIONY, (LPCTSTR)str);
}else
{
str.GetBuffer(40);
str.Format("Orientation X : None");
m_wndSkeletenDialogBar.SetDlgItemText(IDC_STATIC_ORIENTATIONX, (LPCTSTR)str);
str.Empty();
str.GetBuffer(40);
str.Format("Orientation Y : None");
m_wndSkeletenDialogBar.SetDlgItemText(IDC_STATIC_ORIENTATIONY, (LPCTSTR)str);
}
}
void CMainFrame::UpdatePosition(float height)
{
CString str;
str.GetBuffer(40);
str.Format("Height : %f", height);
m_wndSkeletenDialogBar.SetDlgItemText(IDC_STATIC_POSITIONY, (LPCTSTR)str);
}
void CMainFrame::UpdateFrame(int iCurrentFrame, int iMaxFrame)
{
CString str;
str.GetBuffer(40);
str.Format("Frame : %d / %d", iCurrentFrame, iMaxFrame);
m_wndFrameDialogBar.SetDlgItemText(IDC_STATIC_FRAME, (LPCTSTR)str);
}
void CMainFrame::UpdatePlaySpeedInfo(int iPlaySpeed)
{
CString str;
str.GetBuffer(40);
str.Format("Play Speed : %d/30", iPlaySpeed);
m_wndFrameDialogBar.SetDlgItemText(IDC_STATIC_PLAYSPEED, (LPCTSTR)str);
}
void CMainFrame::AddGroupString(CString *str)
{
CListBox *pListBox = (CListBox*)m_wndFrameDialogBar.GetDlgItem(IDC_LIST_ANIMGROUP);
pListBox->AddString(*str);
}
void CMainFrame::DelGroupString(CString *str)
{
CListBox *pListBox = (CListBox*)m_wndFrameDialogBar.GetDlgItem(IDC_LIST_ANIMGROUP);
int index = pListBox->FindStringExact(0, (LPCTSTR)*str);
if(index == LB_ERR)
{
AfxMessageBox("Error occur : Test");
}else
{
pListBox->DeleteString(index);
}
}
void CMainFrame::SetCurrentAnim(CString *str)
{
CListBox *pListBox = (CListBox*)m_wndFrameDialogBar.GetDlgItem(IDC_LIST_ANIMGROUP);
int index = pListBox->FindStringExact(0, (LPCTSTR)*str);
if(index == LB_ERR)
{
AfxMessageBox("Error occur : Set");
}else
{
pListBox->SetCurSel(index);
}
}
void CMainFrame::PlaySpeed(int updown)
{
m_pView->PlaySpeed(updown);
}
void CMainFrame::GetCurrentAnim(CString *str)
{
}
void CMainFrame::ListBoxChange(int i, CString& str)
{
m_pView->ChangeCurrentAnimation(i, str);
}
void CMainFrame::ChangeGroupName()
{
m_pView->ChangeGroupName();
}
void CMainFrame::OnButtonPlay()
{
m_pView->FramePlay();
}
void CMainFrame::OnButtonStop()
{
m_pView->FrameStop();
}
void CMainFrame::OnButtonAddGroup()
{
m_pView->FrameAddGroup();
}
void CMainFrame::OnButtonDelGroup()
{
m_pView->FrameDelGroup();
}
void CMainFrame::OnButtonAddFrame()
{
m_pView->FrameAddFrame();
}
void CMainFrame::OnButtonDelFrame()
{
m_pView->FrameDelFrame();
}
void CMainFrame::OnButtonNext()
{
m_pView->FrameNext();
}
void CMainFrame::OnButtonPrev()
{
m_pView->FramePrev();
}
void CMainFrame::OnButtonFirst()
{
m_pView->FrameFirst();
}
void CMainFrame::OnButtonLast()
{
m_pView->FrameLast();
}
void CMainFrame::OnToggleAttributebar()
{
if(m_wndAttributeBar.IsWindowVisible() == TRUE)
{
m_wndAttributeBar.ShowWindow(SW_HIDE);
}else
{
m_wndAttributeBar.ShowWindow(SW_SHOW);
}
Invalidate(TRUE);
}
void CMainFrame::OnUpdateToggleAttributebar(CCmdUI* pCmdUI)
{
if(m_wndAttributeBar.IsWindowVisible() == TRUE)
{
pCmdUI->SetCheck(TRUE);
}else
{
pCmdUI->SetCheck(FALSE);
}
}
void CMainFrame::OnToggleManipulatebar()
{
if(m_wndManipulateBar.IsWindowVisible() == TRUE)
{
m_wndManipulateBar.ShowWindow(SW_HIDE);
}else
{
m_wndManipulateBar.ShowWindow(SW_SHOW);
}
Invalidate(TRUE);
}
void CMainFrame::OnUpdateToggleManipulatebar(CCmdUI* pCmdUI)
{
if(m_wndManipulateBar.IsWindowVisible() == TRUE)
{
pCmdUI->SetCheck(TRUE);
}else
{
pCmdUI->SetCheck(FALSE);
}
}
void CMainFrame::OnPaint()
{
CPaintDC dc(this); // device context for painting
if (IsIconic())
{
// Erase the icon background when placed over other app window
DefWindowProc(WM_ICONERASEBKGND, (WORD)dc.m_hDC, 0L);
// Center the icon
CRect rc;
GetClientRect(&rc);
rc.left = (rc.right - ::GetSystemMetrics(SM_CXICON))/2;
rc.top = (rc.bottom - ::GetSystemMetrics(SM_CYICON))/2;
// Draw the icon
dc.DrawIcon(rc.left, rc.top, m_hIcon);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -