📄 mainfrm.cpp
字号:
if (bytes == sizeof *fonts[i])
memcpy(fonts[i], ptr, sizeof *fonts[i]);
delete [] ptr;
}
static const COLORREF defaults[]= // domy渓ne kolory t砤 dla okien
{ // VIEW_ED_BCOL, VIEW_SYM_BCOL, VIEW_DEASM_BCOL, VIEW_MEMO_BCOL, VIEW_ZERO_BCOL
RGB(255,255,255), RGB(255,255,224), RGB(255,255,255),
RGB(240,255,240), RGB(255,240,240), RGB(255,255,255), RGB(240,240,240)
};
*text_color[i] = COLORREF(pApp->GetProfileInt(ENTRY_VIEW, tcolors[i], RGB(0,0,0)));
*bkgnd_color[i] = COLORREF(pApp->GetProfileInt(ENTRY_VIEW, bcolors[i], defaults[i]));
}
for (int clr= 0; syntax_colors[clr]; ++clr)
*color_syntax[clr] = pApp->GetProfileInt(ENTRY_VIEW, syntax_colors[clr], *color_syntax[clr]);
for (int style= 0; syntax_font[style]; ++style)
*syntax_font_style[style] = pApp->GetProfileInt(ENTRY_VIEW, syntax_font[style], *syntax_font_style[style]);
// pApp->GetProfileInt(ENTRY_ASM,ASM_CASE,1);
}
else // zapis
{
pApp->WriteProfileInt(ENTRY_SYM, SYM_FIN, theApp.m_global.GetSymFinish());
pApp->WriteProfileInt(ENTRY_SYM, SYM_IO_ADDR, CSym6502::io_addr);
pApp->WriteProfileInt(ENTRY_SYM, SYM_IO_ENABLED, CSym6502::io_enabled);
pApp->WriteProfileInt(ENTRY_SYM, SYM_PROT_MEM, CSym6502::s_bWriteProtectArea);
pApp->WriteProfileInt(ENTRY_SYM, SYM_PROT_MEM_FROM, CSym6502::s_uProtectFromAddr);
pApp->WriteProfileInt(ENTRY_SYM, SYM_PROT_MEM_TO, CSym6502::s_uProtectToAddr);
CPoint pos= m_IOWindow.GetWndPos();
pApp->WriteProfileInt(ENTRY_SYM, SYM_WND_X, pos.x);
pApp->WriteProfileInt(ENTRY_SYM, SYM_WND_Y, pos.y);
int w, h;
m_IOWindow.GetSize(w, h);
pApp->WriteProfileInt(ENTRY_SYM, SYM_WND_W, w);
pApp->WriteProfileInt(ENTRY_SYM, SYM_WND_H, h);
COLORREF txt, bk;
m_IOWindow.GetColors(txt, bk);
// pApp->WriteProfileInt(ENTRY_SYM, SYM_WND_TEXT_COL, (int)txt);
// pApp->WriteProfileInt(ENTRY_SYM, SYM_WND_BK_COL, (int)bk);
// pApp->WriteProfileBinary(ENTRY_SYM, SYM_WND_FONT, LPBYTE(&m_IOWindow.m_LogFont), UINT(sizeof m_IOWindow.m_LogFont));
pApp->WriteProfileInt(ENTRY_DEASM, DEASM_ADDR_COLOR, (int)CDeasm6502View::m_rgbAddress);
pApp->WriteProfileInt(ENTRY_DEASM, DEASM_CODE_COLOR, (int)CDeasm6502View::m_rgbCode);
// pApp->WriteProfileInt(ENTRY_DEASM, DEASM_INSTR_COLOR, (int)CDeasm6502View::m_rgbInstr);
pApp->WriteProfileInt(ENTRY_DEASM, DEASM_SHOW_CODE, (int)CDeasm6502View::m_bDrawCode);
pApp->WriteProfileInt(ENTRY_GEN, GEN_PROC, (int)theApp.m_global.GetProcType());
pApp->WriteProfileInt(ENTRY_GEN, GEN_BUS_WIDTH, CSym6502::bus_width);
pApp->WriteProfileInt(ENTRY_GEN, GEN_PTR, (int)CMarks::m_rgbPointer);
pApp->WriteProfileInt(ENTRY_GEN, GEN_BRKP, (int)CMarks::m_rgbBreakpoint);
pApp->WriteProfileInt(ENTRY_GEN, GEN_ERR, (int)CMarks::m_rgbError);
// pApp->WriteProfileBinary(ENTRY_EDIT, EDIT_FONT, LPBYTE(&CSrc6502View::m_LogFont), UINT(sizeof CSrc6502View::m_LogFont));
pApp->WriteProfileInt(ENTRY_EDIT, EDIT_TAB_STEP, CSrc6502View::m_nTabStep);
pApp->WriteProfileInt(ENTRY_EDIT, EDIT_AUTO_INDENT, CSrc6502View::m_bAutoIndent);
pApp->WriteProfileInt(ENTRY_EDIT, EDIT_SYNTAX_CHECK, CSrc6502View::m_bAutoSyntax);
pApp->WriteProfileInt(ENTRY_EDIT, EDIT_CAPITALS, CSrc6502View::m_bAutoUppercase);
pApp->WriteProfileInt(ENTRY_EDIT, EDIT_FILENEW, C6502App::m_bFileNew);
pApp->WriteProfileInt(ENTRY_ASM, ASM_CASE, 1);
pApp->WriteProfileInt(ENTRY_ASM, ASM_GEN_LST, theApp.m_global.m_bGenerateListing);
pApp->WriteProfileString(ENTRY_ASM, ASM_LST_FILE, theApp.m_global.m_strListingFile);
pApp->WriteProfileInt(ENTRY_ASM, ASM_GEN_BYTE, CAsm6502::generateBRKExtraByte);
pApp->WriteProfileInt(ENTRY_ASM, ASM_BRK_BYTE, CAsm6502::BRKExtraByte);
pApp->WriteProfileInt(ENTRY_VIEW, VIEW_IDENTS_X, CIdentInfo::m_WndRect.left);
pApp->WriteProfileInt(ENTRY_VIEW, VIEW_IDENTS_Y, CIdentInfo::m_WndRect.top);
pApp->WriteProfileInt(ENTRY_VIEW, VIEW_IDENTS_W, CIdentInfo::m_WndRect.Width());
pApp->WriteProfileInt(ENTRY_VIEW, VIEW_IDENTS_H, CIdentInfo::m_WndRect.Height());
pApp->WriteProfileInt(ENTRY_VIEW, VIEW_MEMO_X, m_Memory.m_WndRect.left);
pApp->WriteProfileInt(ENTRY_VIEW, VIEW_MEMO_Y, m_Memory.m_WndRect.top);
pApp->WriteProfileInt(ENTRY_VIEW, VIEW_MEMO_W, m_Memory.m_WndRect.Width());
pApp->WriteProfileInt(ENTRY_VIEW, VIEW_MEMO_H, m_Memory.m_WndRect.Height());
pApp->WriteProfileInt(ENTRY_VIEW, VIEW_ZMEM_X, m_ZeroPage.m_WndRect.left);
pApp->WriteProfileInt(ENTRY_VIEW, VIEW_ZMEM_Y, m_ZeroPage.m_WndRect.top);
pApp->WriteProfileInt(ENTRY_VIEW, VIEW_ZMEM_W, m_ZeroPage.m_WndRect.Width());
pApp->WriteProfileInt(ENTRY_VIEW, VIEW_ZMEM_H, m_ZeroPage.m_WndRect.Height());
pApp->WriteProfileInt(ENTRY_VIEW, VIEW_STACK_X, m_Stack.m_WndRect.left);
pApp->WriteProfileInt(ENTRY_VIEW, VIEW_STACK_Y, m_Stack.m_WndRect.top);
pApp->WriteProfileInt(ENTRY_VIEW, VIEW_STACK_W, m_Stack.m_WndRect.Width());
pApp->WriteProfileInt(ENTRY_VIEW, VIEW_STACK_H, m_Stack.m_WndRect.Height());
pApp->WriteProfileInt(ENTRY_VIEW, VIEW_LOG_X, m_wndLog.m_WndRect.left);
pApp->WriteProfileInt(ENTRY_VIEW, VIEW_LOG_Y, m_wndLog.m_WndRect.top);
pApp->WriteProfileInt(ENTRY_VIEW, VIEW_LOG_W, m_wndLog.m_WndRect.Width());
pApp->WriteProfileInt(ENTRY_VIEW, VIEW_LOG_H, m_wndLog.m_WndRect.Height());
pApp->WriteProfileInt(ENTRY_VIEW, VIEW_IO_HID, CIOWindow::m_bHidden);
pApp->WriteProfileInt(ENTRY_VIEW, VIEW_REGS_HID, CRegisterBar::m_bHidden);
pApp->WriteProfileInt(ENTRY_VIEW, VIEW_MEMO_HID, m_Memory.m_bHidden);
pApp->WriteProfileInt(ENTRY_VIEW, VIEW_ZMEM_HID, m_ZeroPage.m_bHidden);
pApp->WriteProfileInt(ENTRY_VIEW, VIEW_STACK_HID, m_Stack.m_bHidden);
pApp->WriteProfileInt(ENTRY_VIEW, VIEW_LOG_HID, m_wndLog.m_bHidden);
for (int i= 0; fonts[i]; i++)
{
pApp->WriteProfileBinary(ENTRY_VIEW, idents[i], LPBYTE(fonts[i]), UINT(sizeof *fonts[i]));
pApp->WriteProfileInt(ENTRY_VIEW, tcolors[i], int(*text_color[i]));
pApp->WriteProfileInt(ENTRY_VIEW, bcolors[i], int(*bkgnd_color[i]));
}
for (int clr= 0; syntax_colors[clr]; ++clr)
pApp->WriteProfileInt(ENTRY_VIEW, syntax_colors[clr], int(*color_syntax[clr]));
for (int style= 0; syntax_font[style]; ++style)
pApp->WriteProfileInt(ENTRY_VIEW, syntax_font[style], *syntax_font_style[style]);
}
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_WM_CLOSE()
ON_COMMAND(ID_SYM_ASSEMBLE, OnAssemble)
ON_UPDATE_COMMAND_UI(ID_SYM_ASSEMBLE, OnUpdateAssemble)
ON_UPDATE_COMMAND_UI(ID_SYM_DEBUG, OnUpdateSymDebug)
ON_COMMAND(ID_SYM_DEBUG, OnSymDebug)
ON_COMMAND(ID_SYM_STEP_INTO, OnSymStepInto)
ON_UPDATE_COMMAND_UI(ID_SYM_STEP_INTO, OnUpdateSymStepInto)
ON_COMMAND(ID_SYM_SKIP_INSTR, OnSymSkipInstr)
ON_UPDATE_COMMAND_UI(ID_SYM_SKIP_INSTR, OnUpdateSymSkipInstr)
ON_COMMAND(ID_SYM_BREAKPOINT, OnSymBreakpoint)
ON_UPDATE_COMMAND_UI(ID_SYM_BREAKPOINT, OnUpdateSymBreakpoint)
ON_COMMAND(ID_SYM_BREAK, OnSymBreak)
ON_UPDATE_COMMAND_UI(ID_SYM_BREAK, OnUpdateSymBreak)
ON_COMMAND(ID_SYM_GO, OnSymGo)
ON_UPDATE_COMMAND_UI(ID_SYM_GO, OnUpdateSymGo)
ON_COMMAND(ID_SYM_OPTIONS, OnOptions)
ON_UPDATE_COMMAND_UI(ID_SYM_OPTIONS, OnUpdateOptions)
ON_COMMAND(ID_SYM_GO_LINE, OnSymGoToLine)
ON_UPDATE_COMMAND_UI(ID_SYM_GO_LINE, OnUpdateSymGoToLine)
ON_COMMAND(ID_SYM_SKIP_TO_LINE, OnSymSkipToLine)
ON_UPDATE_COMMAND_UI(ID_SYM_SKIP_TO_LINE, OnUpdateSymSkipToLine)
ON_COMMAND(ID_SYM_GO_RTS, OnSymGoToRts)
ON_UPDATE_COMMAND_UI(ID_SYM_GO_RTS, OnUpdateSymGoToRts)
ON_COMMAND(ID_SYM_STEP_OVER, OnSymStepOver)
ON_UPDATE_COMMAND_UI(ID_SYM_STEP_OVER, OnUpdateSymStepOver)
ON_COMMAND(ID_SYM_EDIT_BREAKPOINT, OnSymEditBreakpoint)
ON_UPDATE_COMMAND_UI(ID_SYM_EDIT_BREAKPOINT, OnUpdateSymEditBreakpoint)
ON_COMMAND(ID_SYM_RESTART, OnSymRestart)
ON_UPDATE_COMMAND_UI(ID_SYM_RESTART, OnUpdateSymRestart)
ON_COMMAND(ID_SYM_ANIMATE, OnSymAnimate)
ON_UPDATE_COMMAND_UI(ID_SYM_ANIMATE, OnUpdateSymAnimate)
ON_UPDATE_COMMAND_UI(ID_VIEW_REGISTERBAR, OnUpdateIdViewRegisterbar)
ON_COMMAND(ID_FILE_SAVE_CODE, OnFileSaveCode)
ON_UPDATE_COMMAND_UI(ID_FILE_SAVE_CODE, OnUpdateFileSaveCode)
ON_COMMAND(ID_VIEW_DEASM, OnViewDeasm)
ON_UPDATE_COMMAND_UI(ID_VIEW_DEASM, OnUpdateViewDeasm)
ON_COMMAND(ID_VIEW_IDENT, OnViewIdents)
ON_UPDATE_COMMAND_UI(ID_VIEW_IDENT, OnUpdateViewIdents)
ON_COMMAND(ID_VIEW_MEMORY, OnViewMemory)
ON_UPDATE_COMMAND_UI(ID_VIEW_MEMORY, OnUpdateViewMemory)
ON_COMMAND(ID_EDITOR_OPT, OnEditorOpt)
ON_UPDATE_COMMAND_UI(ID_EDITOR_OPT, OnUpdateEditorOpt)
ON_COMMAND(ID_VIEW_IO_WINDOW, OnViewIOWindow)
ON_UPDATE_COMMAND_UI(ID_VIEW_IO_WINDOW, OnUpdateViewIOWindow)
ON_WM_DESTROY()
ON_COMMAND(ID_FILE_OPEN_CODE, OnFileLoadCode)
ON_UPDATE_COMMAND_UI(ID_FILE_OPEN_CODE, OnUpdateFileLoadCode)
ON_COMMAND(ID_DEASM_OPTIONS, OnDeasmOptions)
ON_UPDATE_COMMAND_UI(ID_DEASM_OPTIONS, OnUpdateDeasmOptions)
ON_COMMAND(ID_VIEW_REGISTERBAR, OnViewRegisterWnd)
ON_WM_SYSCOLORCHANGE()
ON_UPDATE_COMMAND_UI(ID_VIEW_ZEROPAGEBAR, OnUpdateViewZeropage)
ON_COMMAND(ID_VIEW_ZEROPAGEBAR, OnViewZeropage)
ON_UPDATE_COMMAND_UI(ID_MEMORY_OPTIONS, OnUpdateMemoryOptions)
ON_COMMAND(ID_MEMORY_OPTIONS, OnMemoryOptions)
ON_WM_TIMER()
ON_COMMAND(ID_VIEW_STACK, OnViewStack)
ON_UPDATE_COMMAND_UI(ID_VIEW_STACK, OnUpdateViewStack)
ON_COMMAND(ID_SYM_GEN_IRQ, OnSymGenIRQ)
ON_UPDATE_COMMAND_UI(ID_SYM_GEN_IRQ, OnUpdateSymGenIRG)
ON_COMMAND(ID_SYM_GEN_NMI, OnSymGenNMI)
ON_UPDATE_COMMAND_UI(ID_SYM_GEN_NMI, OnUpdateSymGenNMI)
ON_COMMAND(ID_SYM_GEN_RST, OnSymGenReset)
ON_UPDATE_COMMAND_UI(ID_SYM_GEN_RST, OnUpdateSymGenReset)
ON_COMMAND(ID_SYM_GEN_INT, OnSymGenIntDlg)
ON_UPDATE_COMMAND_UI(ID_SYM_GEN_INT, OnUpdateSymGenIntDlg)
ON_COMMAND(ID_VIEW_LOG, OnViewLog)
ON_UPDATE_COMMAND_UI(ID_VIEW_LOG, OnUpdateViewLog)
ON_COMMAND(ID_HELP_DYNAMIC, OnHelpDynamic)
ON_UPDATE_COMMAND_UI(ID_HELP_DYNAMIC, OnUpdateHelpDynamic)
//}}AFX_MSG_MAP
// Global help commands
ON_COMMAND(ID_HELP_FINDER, CMDIFrameWnd::OnHelpFinder)
ON_COMMAND(ID_HELP, CMDIFrameWnd::OnHelp)
// ON_COMMAND(ID_CONTEXT_HELP, CMDIFrameWnd::OnContextHelp)
ON_COMMAND(ID_DEFAULT_HELP, CMDIFrameWnd::OnHelpFinder)
ON_MESSAGE(WM_USER+9998, OnUpdateState)
ON_MESSAGE(CBroadcast::WM_USER_START_DEBUGGER, OnStartDebugger)
ON_MESSAGE(CBroadcast::WM_USER_EXIT_DEBUGGER, OnExitDebugger)
ON_MESSAGE(CBroadcast::WM_USER_PROG_MEM_CHANGED, OnChangeCode)
END_MESSAGE_MAP()
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
0,
0,
#ifdef USE_CRYSTAL_EDIT
ID_EDIT_INDICATOR_POSITION,
ID_INDICATOR_OVR,
#endif
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
// ID_INDICATOR_SCRL,
};
/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction
CMainFrame::CMainFrame()
{
// TODO: add member initialization code here
m_nLastPage = 0; // ostatnio wywo砤na strona (zak砤dka) w pude砶u opcji
int i= 0;
m_hWindows[i++] = &m_hWnd;
m_hWindows[i++] = &m_wndRegisterBar.m_hWnd;
m_hWindows[i++] = &m_IOWindow.m_hWnd;
m_hWindows[i++] = &m_Memory.m_hWnd;
m_hWindows[i++] = &m_ZeroPage.m_hWnd;
m_hWindows[i++] = &m_Idents.m_hWnd;
m_hWindows[i++] = &m_Stack.m_hWnd;
m_hWindows[i++] = &m_wndLog.m_hWnd;
m_hWindows[i++] = NULL;
m_uTimer = 0;
}
CMainFrame::~CMainFrame()
{
// if (m_Idents)
// delete m_Idents;
}
//-----------------------------------------------------------------------------
const DWORD CMainFrame::dwDockBarMapEx[4][2] =
{
{ AFX_IDW_DOCKBAR_TOP, CBRS_TOP },
{ AFX_IDW_DOCKBAR_BOTTOM, CBRS_BOTTOM },
{ AFX_IDW_DOCKBAR_LEFT, CBRS_LEFT },
{ AFX_IDW_DOCKBAR_RIGHT, CBRS_RIGHT },
};
void CMainFrame::EnableDockingEx(DWORD dwDockStyle)
{
// must be CBRS_ALIGN_XXX or CBRS_FLOAT_MULTI only
ASSERT((dwDockStyle & ~(CBRS_ALIGN_ANY|CBRS_FLOAT_MULTI)) == 0);
m_pFloatingFrameClass = RUNTIME_CLASS(CMiniDockFrameWnd);
for (int i = 0; i < 4; i++)
{
if (dwDockBarMapEx[i][1] & dwDockStyle & CBRS_ALIGN_ANY)
{
CDockBar* pDock = (CDockBar*)GetControlBar(dwDockBarMapEx[i][0]);
if (pDock == NULL)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -