📄 mainfrm.cpp
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//
#include "stdafx.h"
#include "femme.h"
#include <ctype.h>
#include <stdio.h>
#include <string.h>
#include <process.h>
#include "lua.h"
#include "OpenLua.h"
#include "femmedoc.h"
BOOL bNoClose;
extern BOOL bNoClose;
extern lua_State * lua;
extern BOOL bLinehook;
extern "C" void lua_baselibopen (lua_State *L);
extern "C" void lua_iolibopen (lua_State *L);
extern "C" void lua_strlibopen (lua_State *L);
extern "C" void lua_mathlibopen (lua_State *L);
extern "C" void lua_dblibopen (lua_State *L);
#include "MainFrm.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)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_COMMAND(ID_SHOW_TBAR, OnShowTbar)
ON_WM_INITMENU()
ON_COMMAND(ID_SHOW_TBAR2, OnShowTbar2)
ON_WM_CLOSE()
//}}AFX_MSG_MAP
// Global help commands
// ON_COMMAND(ID_HELP_FINDER, CFrameWnd::OnHelpFinder)
// ON_COMMAND(ID_HELP, CFrameWnd::OnHelp)
// ON_COMMAND(ID_CONTEXT_HELP, CFrameWnd::OnContextHelp)
// ON_COMMAND(ID_DEFAULT_HELP, CFrameWnd::OnHelpFinder)
END_MESSAGE_MAP()
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
// ID_INDICATOR_CAPS,
// ID_INDICATOR_NUM,
// ID_INDICATOR_SCRL,
};
static UINT BASED_CODE arEditButtons[] =
{
ID_UNDO,
ID_SEPARATOR,
ID_SELECTWND,
ID_SEPARATOR,
ID_MOVE_OBJECTS,
ID_COPY_OBJECTS,
ID_EDIT_SCALE,
ID_EDIT_MIRROR,
ID_EDIT_CUT,
ID_SEPARATOR,
ID_SHOW_GRID,
ID_SNAP_GRID,
ID_SET_GRID,
};
/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction
CMainFrame::CMainFrame()
{
// TODO: add member initialization code here
bNoClose=FALSE;
}
CMainFrame::~CMainFrame()
{
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
UINT nOldStyle;
CRect dockpos;
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
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
}
// force the status bar to use a more readable font size
LOGFONT lf; // Used to create the CFont.
memset(&lf, 0, sizeof(LOGFONT)); // Clear out structure.
lf.lfHeight = 16;
strcpy(lf.lfFaceName, "MS Sans Serif");
m_StatusBarFont.CreateFontIndirect(&lf); // Create the font.
m_wndStatusBar.SetFont(&m_StatusBarFont);
// Create a toolbar
if (!m_toolBar.Create(this) ||
!m_toolBar.LoadToolBar(IDR_TOOLBAR1))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
m_toolBar.SetBarStyle(m_toolBar.GetBarStyle() |
CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
m_toolBar.SetWindowText("FEMM Editor Mode/View Commands");
// Enable docking
m_toolBar.EnableDocking(CBRS_ALIGN_TOP);
EnableDocking(CBRS_ALIGN_TOP);
GetWindowRect(dockpos);
dockpos.left+=34;
DockControlBar( &m_toolBar ,(UINT) 0 , dockpos);
nOldStyle=m_toolBar.GetBarStyle();
m_toolBar.SetBarStyle(nOldStyle | CBRS_TOOLTIPS | CBRS_FLYBY);
// Create a second toolbar
if (!m_toolBar2.Create(this, WS_CHILD | WS_VISIBLE | CBRS_LEFT
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_FLOAT_MULTI |CBRS_SIZE_DYNAMIC) ||
!m_toolBar2.LoadToolBar(IDR_TOOLBAR2))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
m_toolBar2.SetWindowText("FEMM Edit Tools");
// Enable docking
m_toolBar2.EnableDocking(CBRS_ALIGN_LEFT);
EnableDocking(CBRS_ALIGN_LEFT);
DockControlBar( &m_toolBar2 );
nOldStyle=m_toolBar2.GetBarStyle();
m_toolBar2.SetBarStyle(nOldStyle | CBRS_TOOLTIPS | CBRS_FLYBY);
return 0;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// 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::OnShowTbar()
{
if( (m_toolBar.GetStyle() & WS_VISIBLE) != 0 ){
ShowControlBar(&m_toolBar,FALSE,FALSE);
}
else{
ShowControlBar(&m_toolBar,TRUE,FALSE);
}
}
void CMainFrame::OnShowTbar2()
{
if( (m_toolBar2.GetStyle() & WS_VISIBLE) != 0 ){
ShowControlBar(&m_toolBar2,FALSE,FALSE);
}
else{
ShowControlBar(&m_toolBar2,TRUE,FALSE);
}
}
void CMainFrame::OnInitMenu(CMenu* pMenu)
{
CFrameWnd::OnInitMenu(pMenu);
if( (m_toolBar.GetStyle() & WS_VISIBLE) != 0 ){
// make sure that toolbar entry is checked
pMenu->CheckMenuItem(ID_SHOW_TBAR, MF_CHECKED);
}
else{
// make sure that toolbar entry is not checked
pMenu->CheckMenuItem(ID_SHOW_TBAR, MF_UNCHECKED);
}
if( (m_toolBar2.GetStyle() & WS_VISIBLE) != 0 ){
// make sure that toolbar entry is checked
pMenu->CheckMenuItem(ID_SHOW_TBAR2, MF_CHECKED);
}
else{
// make sure that toolbar entry is not checked
pMenu->CheckMenuItem(ID_SHOW_TBAR2, MF_UNCHECKED);
}
CFemmeDoc *pFemmeDoc=(CFemmeDoc *) GetActiveDocument( );
if((pFemmeDoc->LuaConsole.GetStyle() & WS_VISIBLE) != 0 )
pMenu->CheckMenuItem(ID_VIEW_LUACONSOLE, MF_CHECKED);
else
pMenu->CheckMenuItem(ID_VIEW_LUACONSOLE, MF_UNCHECKED);
}
void CMainFrame::OnClose()
{
if (bLinehook!=FALSE){
bLinehook=FALSE;
CFemmeDoc *pFemmeDoc=(CFemmeDoc *) GetActiveDocument( );
if (pFemmeDoc->hProc!=NULL) TerminateProcess(pFemmeDoc->hProc,NULL);
pFemmeDoc->hProc=NULL;
PostMessage(WM_CLOSE);
lua_error(lua,NULL);
}
if (bNoClose==FALSE) CFrameWnd::OnClose();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -