⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainfrm.cpp

📁 详细介绍c++编程
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		  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 + -