HRESULT CNodeSim::FE_OpenFunctioneditorFile(CString omStrNewCFileName, HWND hMainFrame, S_EXFUNC_PTR& sExInitStruct) { if (CGlobalObj::ouGetObj(m_eBus).m_pEditorDocTemplate == NULL) { CGlobalObj::ouGetObj(m_eBus).m_pEditorDocTemplate = new CMultiDocTemplate(IDI_ICON_FN_EDITOR, RUNTIME_CLASS(CFunctionEditorDoc), RUNTIME_CLASS(CEditFrameWnd), // custom MDI child frame RUNTIME_CLASS(CFileView)); //AddDocTemplate(CGlobalObj::m_pEditorDocTemplate); } CGlobalObj::sm_hWndMDIParentFrame = hMainFrame; NS_UpdateFuncStructsNodeSimEx((PVOID)&sExInitStruct, UPDATE_ALL); return CGlobalObj::ouGetObj(m_eBus).bOpenFunctioneditorfile(omStrNewCFileName) ? S_OK : S_FALSE; }
HRESULT CNodeSim::FE_CreateFuncEditorTemplate(HWND handle, S_EXFUNC_PTR& sExInitStruct) { //AFX_MANAGE_STATE(AfxGetStaticModuleState()); if (CGlobalObj::ouGetObj(m_eBus).m_pEditorDocTemplate == NULL) { CEditFrameWnd::sm_eBus = m_eBus; CFileView::sm_eBus = m_eBus; CGlobalObj::ouGetObj(m_eBus).m_pEditorDocTemplate = new CMultiDocTemplate(IDI_ICON_FN_EDITOR, RUNTIME_CLASS(CFunctionEditorDoc), RUNTIME_CLASS(CEditFrameWnd), // custom MDI child frame RUNTIME_CLASS(CFileView)); //AddDocTemplate(CGlobalObj::m_pEditorDocTemplate); } CGlobalObj::sm_hWndMDIParentFrame = handle; NS_UpdateFuncStructsNodeSimEx((PVOID)&sExInitStruct, UPDATE_ALL); CFrameWnd* pParent = (CFrameWnd*)CWnd::FromHandle(CGlobalObj::sm_hWndMDIParentFrame); // Get Window rectangle from configuration module if ((CGlobalObj::ouGetObj(m_eBus).m_wWindowPlacement.length == 0) || (CGlobalObj::ouGetObj(m_eBus).m_wWindowPlacement.rcNormalPosition.top == -1)) { CGlobalObj::ouGetObj(m_eBus).bGetDefaultValue(SIMSYS_WND_PLACEMENT, CGlobalObj::ouGetObj(m_eBus).m_wWindowPlacement); } // Check for window pointer if( CGlobalObj::ouGetObj(m_eBus).m_pomSimSysWnd == NULL ) { // Create New Instance CGlobalObj::ouGetObj(m_eBus).m_pomSimSysWnd = new CSimSysWnd(m_eBus); if( CGlobalObj::ouGetObj(m_eBus).m_pomSimSysWnd != NULL ) { // Register Window Class LPCTSTR strMDIClass = AfxRegisterWndClass( CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS, LoadCursor(NULL, IDC_CROSS), 0, AfxGetApp()->LoadIcon(IDI_ICON_FN_EDITOR) ); // Set the size got from configuration module CRect omRect(CGlobalObj::ouGetObj(m_eBus).m_wWindowPlacement.rcNormalPosition); // Create Simulated system Configuration window CString omTitle; omTitle.Format("%s - %s", defSTR_SIMSYS_WINDOW_TITLE, CGlobalObj::omGetBusName(m_eBus)); if( CGlobalObj::ouGetObj(m_eBus).m_pomSimSysWnd->Create( strMDIClass, omTitle.GetBuffer(MAX_PATH), WS_CHILD | WS_OVERLAPPEDWINDOW, omRect, (CMDIFrameWnd*)pParent ) == TRUE ) { // Show window and set focus CGlobalObj::ouGetObj(m_eBus).m_pomSimSysWnd->ShowWindow( SW_SHOW ); CGlobalObj::ouGetObj(m_eBus).m_pomSimSysWnd->SetFocus(); if ((CGlobalObj::ouGetObj(m_eBus).m_wWindowPlacement.rcNormalPosition.bottom == 0) && (CGlobalObj::ouGetObj(m_eBus).m_wWindowPlacement.rcNormalPosition.left == 0) && (CGlobalObj::ouGetObj(m_eBus).m_wWindowPlacement.rcNormalPosition.right == 0) && (CGlobalObj::ouGetObj(m_eBus).m_wWindowPlacement.rcNormalPosition.top == 0)) { //Propably new configuration CGlobalObj::ouGetObj(m_eBus).bGetDefaultValue(SIMSYS_WND_PLACEMENT, CGlobalObj::ouGetObj(m_eBus).m_wWindowPlacement); } CGlobalObj::ouGetObj(m_eBus).m_pomSimSysWnd->m_wWndPlacement = CGlobalObj::ouGetObj(m_eBus).m_wWindowPlacement; CGlobalObj::ouGetObj(m_eBus).m_pomSimSysWnd->SetWindowPlacement (&(CGlobalObj::ouGetObj(m_eBus).m_pomSimSysWnd->m_wWndPlacement)); CGlobalObj::ouGetObj(m_eBus).m_pomSimSysWnd->ShowWindow( SW_RESTORE ); } } } // If already exist then activate and set the focus else { CGlobalObj::ouGetObj(m_eBus).m_pomSimSysWnd->ShowWindow( SW_RESTORE ); CGlobalObj::ouGetObj(m_eBus).m_pomSimSysWnd->MDIActivate(); CGlobalObj::ouGetObj(m_eBus).m_pomSimSysWnd->SetActiveWindow(); } return S_OK; }