bool CParticleEditor::ShowGraph()
{
	CMDIFrameWnd *pMainWnd = DYNAMIC_DOWNCAST(CMDIFrameWnd, AfxGetMainWnd());
	ASSERT(pMainWnd != NULL);

	// do not create toolbar second time
	if (IsWindow(m_ParticleGraph))
	{
		//BOOL bShown = m_ParticleGraph.ShowWindow(SW_SHOW);
		//if (!bShown)
		//	pMainWnd->DockControlBar(&m_ParticleGraph, AFX_IDW_DOCKBAR_BOTTOM, NULL);
		return false;
	}

	if (!m_ParticleGraph.Create(_T("Particle Graph"), WS_CHILD | WS_VISIBLE, pMainWnd, ID_VIEW_GRAPH))
	{
		m_ToolBox->Log(LOGERROR, _T("Failed to create m_ParticleGraph window bar\n"));
		return false;
	}
	m_ParticleGraph.EnableDocking(CBRS_ALIGN_ANY);
	const DWORD dwBarStyle = CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC;
	m_ParticleGraph.SetBarStyle(m_ParticleGraph.GetBarStyle() | dwBarStyle);
	pMainWnd->DockControlBar(&m_ParticleGraph, AFX_IDW_DOCKBAR_BOTTOM, NULL);
	return true;
}
Example #2
0
int CSpeechFrm::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	CMDIFrameWnd *mainWnd;
		
	// Register the doc templates we provide to the app
	CWinApp* pApp = AfxGetApp();
	ASSERT(pApp != NULL);
	mainWnd = DYNAMIC_DOWNCAST(CMDIFrameWnd, pApp->m_pMainWnd);

	// get the apps instance handle for loading resources
	m_AppInst = AfxGetResourceHandle();
	// now tell the application to look in dll for resources
	AfxSetResourceHandle(ObjectSpeechDLL.hModule);
	if (CMDIChildWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	if (!m_SpeechToolPal.CreateEx(mainWnd, TBSTYLE_FLAT | TBSTYLE_WRAPABLE , WS_CHILD | WS_VISIBLE | CBRS_RIGHT
		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_FIXED, CRect(0, 2, 2, 4)) ||
		!m_SpeechToolPal.LoadToolBar(IDR_Speech_TOOL_PALETTE))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}

	m_SpeechToolPal.SetBorders(2, 2, 2, 2);

	m_SpeechToolPal.EnableDocking(CBRS_ORIENT_VERT);
	// make control bar notify us.

	mainWnd->DockControlBar(&m_SpeechToolPal);

	CRect tcRect;
	m_SpeechToolPal.GetToolBarCtrl().SetRows(1, FALSE, tcRect);
	int iconWidth;
	int iconHeight;
	int nRows;

	iconWidth = tcRect.Width()/NUMICONS;
	iconHeight = tcRect.Height();
	nRows = (NUMICONS / NICONSWIDE) + (((NUMICONS % NICONSWIDE) == 0) ? 0 : 1);

	tcRect.SetRect(0, 0, iconWidth * NICONSWIDE, (iconHeight * nRows));

	// Set the window size
	m_SpeechToolPal.SetWindowPos(NULL, 0, 0, tcRect.Width(), tcRect.Height(),
		SWP_NOACTIVATE  | SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOREDRAW);

	
	mainWnd->ShowControlBar(&m_SpeechToolPal, FALSE, FALSE);
	
	AfxSetResourceHandle(m_AppInst);
	
	return 0;
}
bool CParticleEditor::ShowTree()
{
	// do not create toolbar second time
	if (IsWindow(m_ParticleTreeDock))
	{
		//m_ParticleTreeDock.ShowWindow(SW_SHOW);
		return false;
	}
	CMDIFrameWnd *pMainWnd = DYNAMIC_DOWNCAST(CMDIFrameWnd, AfxGetMainWnd());
	ASSERT(pMainWnd != NULL);
	if (!m_ParticleTreeDock.Create(_T("Particle Tree"), WS_CHILD | WS_VISIBLE, pMainWnd, IDD_PARTICLE_TREEDOCKBAR))
	{
		m_ToolBox->Log(LOGERROR, _T("Failed to create m_ParticleTreeDock window bar\n"));
		return false;
	}
	m_ParticleTreeDock.EnableDocking(CBRS_ALIGN_ANY);
	const DWORD dwBarStyle = CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC;
	m_ParticleTreeDock.SetBarStyle(m_ParticleTreeDock.GetBarStyle() | dwBarStyle);
	// dock property dock bar on left
	pMainWnd->DockControlBar(&m_ParticleTreeDock, AFX_IDW_DOCKBAR_RIGHT, NULL);
	return true;
}
Example #4
0
void CDynToolBar::LoadState(char* pFilename)
  {
  CProfINIFile PF(pFilename);
  CMDIFrameWnd* pM = pTBMngr->pMainFrame;
  Strng Section;
  Section.Set("ToolBar_%d", iWindowID);
  Strng NewTitle = PF.RdStr(Section(), "Title", (char*)(const char*)sTitle);
  if (NewTitle.Length()!=sTitle.GetLength() || strcmp(NewTitle(), (const char*)sTitle)!=0)
    {
    SetWindowText(NewTitle());
    sTitle = NewTitle();
    }
  DWORD BarStyle = GetBarStyle();
  DWORD Style = GetStyle();
  BarStyle = PF.RdLong(Section(), "BarStyle", BarStyle);
  BarStyle &= CBRS_ALL; //CNM Prevent an ASSERT
  SetBarStyle(BarStyle);

  if (bCanConfigure)
    {
    CToolBarCtrl& bc = GetToolBarCtrl();
    int Cnt = bc.GetButtonCount();
    Cnt = PF.RdInt(Section(), "ButtonIDCount", Cnt);
    BOOL Chngd = (Cnt!=bc.GetButtonCount());
    UINT* NewIDs = new UINT[Cnt];
    Strng Item;
    for (int i=0; i<Cnt; i++)
      {
      Item.Set("ID_%d", i);
      int Cmd = (i<(int)iLen ? BtnIDs[i] : ID_SEPARATOR);
      Cmd = PF.RdInt(Section(), Item(), Cmd);
      NewIDs[i] = (UINT)Cmd;
      Chngd = (Chngd || (NewIDs[i]!=BtnIDs[i]));
      }
    if (Chngd)
      ChangeButtons(NewIDs, Cnt);
    delete []NewIDs;
    }

  flag Visible = ((Style & WS_VISIBLE) != 0);
  Visible = PF.RdInt(Section(), "Visible", Visible);
  pM->ShowControlBar(this, Visible, FALSE);
  pM->RecalcLayout(); //get MFC to adjust the dimensions of all docked ToolBars so that GetWindowRect will be accurate
  CRect Rect;
  CWnd* pWnd = GetParent();
  if (BarStyle & CBRS_FLOATING)
    {
    if (pWnd && pWnd->GetParent())
      {
      if (PrjFileVerNo()>=25)
        {
        CRect MRect;
        AfxGetMainWnd()->GetWindowRect(MRect);
        Rect.OffsetRect(-MRect.left, -MRect.top);
        int L=PF.RdInt(Section(), "Left", Rect.left);
        int T=PF.RdInt(Section(), "Top", Rect.top);
        Rect.OffsetRect(L-Rect.left, T-Rect.top);
        Rect.OffsetRect(+MRect.left, +MRect.top);
        }
      else
        {
        pWnd->GetParent()->GetWindowRect(&Rect);
        Location.x = PF.RdInt(Section(), "Left", Rect.left);
        Location.y = PF.RdInt(Section(), "Top", Rect.top);
        }
      pM->FloatControlBar(this, Location);
      }
    }
  else
    {
    GetWindowRect(&Rect);
    if (PrjFileVerNo()>=25)
      {
      CRect MRect;
      AfxGetMainWnd()->GetWindowRect(MRect);
      Rect.OffsetRect(-MRect.left, -MRect.top);
      int L=PF.RdInt(Section(), "Left", Rect.left);
      int T=PF.RdInt(Section(), "Top", Rect.top);
      Rect.OffsetRect(L-Rect.left, T-Rect.top);
      Rect.OffsetRect(+MRect.left, +MRect.top);
      }
    else
      {
    //Rect.left = PF.RdInt(Section(), "Left", Rect.left);
    //Rect.top = PF.RdInt(Section(), "Top", Rect.top);
      int L=PF.RdInt(Section(), "Left", Rect.left);
      int T=PF.RdInt(Section(), "Top", Rect.top);
      Rect.right  += L-Rect.left;
      Rect.bottom += T-Rect.top;
      Rect.left   += L-Rect.left;
      Rect.top    += T-Rect.top;
      }
    //Rect.top = PF.RdInt(Section(), "Top", Rect.top);
    UINT n = 0;
    if (BarStyle & CBRS_ALIGN_TOP)
      {
      Rect.top -= 1;
      Rect.bottom -= 1;
      n = AFX_IDW_DOCKBAR_TOP;
      }
    if (n==0 && BarStyle & CBRS_ALIGN_BOTTOM)
      {
      Rect.top += 1;
      Rect.bottom += 1;
      n = AFX_IDW_DOCKBAR_BOTTOM;
      }
    if (n==0 && BarStyle & CBRS_ALIGN_LEFT)
      {
      Rect.left -= 1;
      Rect.right -= 1;
      n = AFX_IDW_DOCKBAR_LEFT;
      }
    if (n==0 && BarStyle & CBRS_ALIGN_RIGHT)
      {
      Rect.left += 1;
      Rect.right += 1;
      n = AFX_IDW_DOCKBAR_RIGHT;
      }
    pM->DockControlBar(this, n, &Rect);
    }
  pM->RecalcLayout();
  }