mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-04 13:13:25 +03:00
Integration of OCCT 6.5.0 from SVN
This commit is contained in:
186
samples/mfc/standard/Common/OCC_MainFrame.cpp
Executable file
186
samples/mfc/standard/Common/OCC_MainFrame.cpp
Executable file
@@ -0,0 +1,186 @@
|
||||
// OCC_MainFrame.cpp: implementation of the OCC_MainFrame class.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
#include "OCC_MainFrame.h"
|
||||
|
||||
#include <res\OCC_Resource.h>
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// OCC_MainFrame
|
||||
|
||||
IMPLEMENT_DYNAMIC(OCC_MainFrame, CMDIFrameWnd)
|
||||
|
||||
BEGIN_MESSAGE_MAP(OCC_MainFrame, CMDIFrameWnd)
|
||||
//{{AFX_MSG_MAP(OCC_MainFrame)
|
||||
// NOTE - the ClassWizard will add and remove mapping macros here.
|
||||
// DO NOT EDIT what you see in these blocks of generated code !
|
||||
ON_WM_CREATE()
|
||||
//}}AFX_MSG_MAP
|
||||
ON_COMMAND(ID_HELP_FINDER, CMDIFrameWnd::OnHelpFinder)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
static UINT indicators[] =
|
||||
{
|
||||
ID_SEPARATOR, // status line indicator
|
||||
ID_INDICATOR_CAPS,
|
||||
ID_INDICATOR_NUM,
|
||||
ID_INDICATOR_SCRL,
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// OCC_MainFrame construction/destruction
|
||||
|
||||
OCC_MainFrame::OCC_MainFrame(BOOL withAISToolBar /*=false*/)
|
||||
{
|
||||
m_withAISToolBar=withAISToolBar;
|
||||
if(withAISToolBar){
|
||||
m_AISToolBar = new CToolBar;
|
||||
}
|
||||
else
|
||||
m_AISToolBar = NULL;
|
||||
}
|
||||
|
||||
OCC_MainFrame::~OCC_MainFrame()
|
||||
{
|
||||
if (m_AISToolBar) delete m_AISToolBar;
|
||||
}
|
||||
|
||||
/*
|
||||
int FindMenuItem(CMenu* Menu, LPCTSTR MenuString)
|
||||
{
|
||||
ASSERT(Menu);
|
||||
ASSERT(::IsMenu(Menu->GetSafeHmenu()));
|
||||
|
||||
int count = Menu->GetMenuItemCount();
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
CString str;
|
||||
if (Menu->GetMenuString(i, str, MF_BYPOSITION) &&
|
||||
(strcmp(str, MenuString) == 0))
|
||||
return i;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
*/
|
||||
|
||||
int OCC_MainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
||||
{
|
||||
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
|
||||
return -1;
|
||||
|
||||
if (!m_wndToolBar.Create(this) ||
|
||||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
|
||||
{
|
||||
TRACE0("Failed to create toolbar\n");
|
||||
return -1; // fail to create
|
||||
}
|
||||
|
||||
if (m_withAISToolBar){
|
||||
if (!m_AISToolBar->Create(this) ||
|
||||
!m_AISToolBar->LoadToolBar(IDR_TB_AIS))
|
||||
{
|
||||
TRACE0("Failed to create toolbar\n");
|
||||
return -1; // fail to create
|
||||
}
|
||||
}
|
||||
|
||||
if (!m_wndStatusBar.Create(this) ||
|
||||
!m_wndStatusBar.SetIndicators(indicators,
|
||||
sizeof(indicators)/sizeof(UINT)))
|
||||
{
|
||||
TRACE0("Failed to create status bar\n");
|
||||
return -1; // fail to create
|
||||
}
|
||||
|
||||
// TODO: Remove this if you don't want tool tips or a resizeable toolbar
|
||||
m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
|
||||
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
|
||||
|
||||
// TODO: Delete these three lines if you don't want the toolbar to
|
||||
// be dockable
|
||||
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
|
||||
EnableDocking(CBRS_ALIGN_ANY);
|
||||
DockControlBar(&m_wndToolBar,AFX_IDW_DOCKBAR_TOP);
|
||||
if (m_withAISToolBar){
|
||||
m_AISToolBar->SetBarStyle(m_AISToolBar->GetBarStyle() |
|
||||
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
|
||||
m_AISToolBar->EnableDocking(CBRS_ALIGN_ANY);
|
||||
DockControlBarLeftOf(m_AISToolBar,&m_wndToolBar);
|
||||
}
|
||||
|
||||
/*
|
||||
CMenu* menu = GetMenu();
|
||||
CMenu* SubMenu = menu->GetSubMenu(2);
|
||||
int pos = FindMenuItem(SubMenu, "&About SampleName...");
|
||||
if (pos > -1)
|
||||
{
|
||||
UINT id = SubMenu->GetMenuItemID(pos);
|
||||
LPCTSTR SampleName = ((OCC_BaseApp* )AfxGetApp())->GetSampleName();
|
||||
char* str="";
|
||||
strcpy(str,SampleName);
|
||||
strcat(str,"...");
|
||||
char* about = "About ";
|
||||
strcat(about,str);
|
||||
SubMenu->ModifyMenu(id, MF_BYCOMMAND, id, about);
|
||||
}
|
||||
*/
|
||||
return 0;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// OCC_MainFrame diagnostics
|
||||
|
||||
#ifdef _DEBUG
|
||||
void OCC_MainFrame::AssertValid() const
|
||||
{
|
||||
CMDIFrameWnd::AssertValid();
|
||||
}
|
||||
|
||||
void OCC_MainFrame::Dump(CDumpContext& dc) const
|
||||
{
|
||||
CMDIFrameWnd::Dump(dc);
|
||||
}
|
||||
|
||||
#endif //_DEBUG
|
||||
|
||||
void OCC_MainFrame::SetStatusMessage(const CString & message)
|
||||
{
|
||||
m_wndStatusBar.SetWindowText(message);
|
||||
}
|
||||
|
||||
|
||||
BOOL OCC_MainFrame::PreCreateWindow(CREATESTRUCT& cs)
|
||||
{
|
||||
// TODO: Modify the Window class or styles here by modifying
|
||||
// the CREATESTRUCT cs
|
||||
|
||||
return CMDIFrameWnd::PreCreateWindow(cs);
|
||||
}
|
||||
|
||||
void OCC_MainFrame::DockControlBarLeftOf(CToolBar* Bar,CToolBar* LeftOf)
|
||||
{
|
||||
CRect rect;
|
||||
DWORD dw;
|
||||
UINT n;
|
||||
|
||||
// get MFC to adjust the dimensions of all docked ToolBars
|
||||
// so that GetWindowRect will be accurate
|
||||
RecalcLayout();
|
||||
LeftOf->GetWindowRect(&rect);
|
||||
rect.OffsetRect(1,0);
|
||||
dw=LeftOf->GetBarStyle();
|
||||
n = 0;
|
||||
n = (dw&CBRS_ALIGN_TOP) ? AFX_IDW_DOCKBAR_TOP : n;
|
||||
n = (dw&CBRS_ALIGN_BOTTOM && n==0) ? AFX_IDW_DOCKBAR_BOTTOM : n;
|
||||
n = (dw&CBRS_ALIGN_LEFT && n==0) ? AFX_IDW_DOCKBAR_LEFT : n;
|
||||
n = (dw&CBRS_ALIGN_RIGHT && n==0) ? AFX_IDW_DOCKBAR_RIGHT : n;
|
||||
|
||||
// When we take the default parameters on rect, DockControlBar will dock
|
||||
// each Toolbar on a seperate line. By calculating a rectangle, we in effect
|
||||
// are simulating a Toolbar being dragged to that location and docked.
|
||||
DockControlBar(Bar,n,&rect);
|
||||
}
|
Reference in New Issue
Block a user