⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainfrm.cpp.svn-base

📁 股票软件源码
💻 SVN-BASE
📖 第 1 页 / 共 5 页
字号:
	}

	UINT nIDIcon = IDR_MAINFRAME;

	if (AfxGetAlarmContainer().HasWarning())
	{
		nIDIcon = IDI_ALARM_WARNING;
	}
	else
	{
		CStockInfo info;
		double dDiff;
		if (AfxGetStockContainer().GetStockInfo(STKLIB_CODE_MAIN, &info)
			&& info.GetDiff(&dDiff,info.m_datetech,1))
		{
			if (dDiff > 0)
				nIDIcon = IDI_ALARM_INDEXRED;
			if (dDiff < 0)
				nIDIcon = IDI_ALARM_INDEXGREEN;
		}
	}

	// Notify Icon
	NOTIFYICONDATA	nid;
	memset(&nid, 0, sizeof(nid));
	nid.cbSize	= sizeof(nid);
	nid.hWnd	= GetSafeHwnd();
	nid.uID		= 1;
	nid.uFlags	= NIF_ICON | NIF_MESSAGE | NIF_TIP;
	nid.uCallbackMessage = WM_USER_NIFMESSAGE;
	nid.hIcon	= AfxGetApp()->LoadIcon(nIDIcon);
	CString strName = AfxGetStockIndexReportTip();
	strncpy(nid.szTip, strName, min(strName.GetLength(),sizeof(nid.szTip)-1));
	Shell_NotifyIcon(NIM_MODIFY, &nid);

	return 0;
}

BOOL CMainFrame::PreTranslateMessage(MSG* pMsg) 
{
	/* ProfUIS Using Code
	if (m_wndMenuBar.TranslateMainFrameMessage(pMsg))
		return TRUE;
	*/

	if (WM_KEYDOWN == pMsg->message)
	{
		int	nVirtKey = (int) pMsg->wParam;
		if (VK_ESCAPE == nVirtKey && m_fullScreen.bFullScreen)
			OnViewFullscreen();

		if (m_SearchBox.IsWantChar(pMsg->wParam))
		{
			CView * pView = AfxGetStaticDoc()->GetActiveView();
			if (!pView ||
				(pView->IsKindOf(RUNTIME_CLASS(CWizardView))
					|| pView->IsKindOf(RUNTIME_CLASS(CGraphView))
					|| pView->IsKindOf(RUNTIME_CLASS(CRealTimeView))
					|| pView->IsKindOf(RUNTIME_CLASS(CMultiSortView))
					|| pView->IsKindOf(RUNTIME_CLASS(CSListView))
					|| pView->IsKindOf(RUNTIME_CLASS(CBaseView))
					|| pView->IsKindOf(RUNTIME_CLASS(CSelectorView))))
			{
				CRect	rect;
				GetClientRect(&rect);
				m_SearchBox.SetWindowPos(NULL, rect.right-FRM_SEARCH_WIDTH-18, rect.bottom-FRM_SEARCH_HEIGHT-22,
										0, 0, SWP_NOSIZE | SWP_SHOWWINDOW);
				m_SearchBox.OnChangeStatus(pMsg->wParam, pMsg->lParam, FALSE);
			}
		}
		else if (::IsWindow(m_wndWorkspBar.GetSafeHwnd())
			 && !m_SearchBox.GetDroppedState() && !m_wndWorkspBar.IsWindowVisible())
		{
			CView * pView = AfxGetStaticDoc()->GetActiveView();
			if (pView && 
				(pView->IsKindOf(RUNTIME_CLASS(CGraphView))
				|| pView->IsKindOf(RUNTIME_CLASS(CRealTimeView))
				|| pView->IsKindOf(RUNTIME_CLASS(CMultiSortView))
				|| pView->IsKindOf(RUNTIME_CLASS(CSListView))))
				pView->SetFocus();
		}
	}

	return CMDIFrameWnd::PreTranslateMessage(pMsg);
}

void CMainFrame::OnUpdateFrameTitle(BOOL bAddToTitle)
{
	//CMDIFrameWnd::OnUpdateFrameTitle(bAddToTitle);
	//if (::IsWindow(m_MdiTabbed.GetSafeHwnd()))
	//	m_MdiTabbed.UpdateWindows();

	if (bAddToTitle)
	{
		CString	strMainFrame;
		VERIFY(strMainFrame.LoadString(IDR_MAINFRAME));

		CString	strTitle;
		if (AfxExtractSubString(strTitle,strMainFrame,
			CDocTemplate::windowTitle) && !strTitle.IsEmpty())
		{
			//strTitle	+=	"(";
			//strTitle	+=	AfxGetVersionString();
			//strTitle	+=	")";
			// reset title
			AfxSetWindowText(m_hWnd, strTitle);
		}
	}
}

void CMainFrame::OnSize(UINT nType, int cx, int cy) 
{
	CMDIFrameWnd::OnSize(nType, cx, cy);
	
	if (SIZE_MINIMIZED == nType)
	{
		if (AfxGetProfile().GetNotifyIcon())
			ShowWindow(SW_HIDE);
	}
}

void CMainFrame::OnClose() 
{
	// Kill Timer
	KillTimer(TIMER_TIME);
	KillTimer(TIMER_STOCKINDEXREFRESH);

	if (m_fullScreen.bFullScreen)
		OnViewFullscreen();

	BOOL	bCanClose;
	
	bCanClose	=	TRUE;
	CSimuView	*	pSimuView = AfxGetSimuView();
	if (pSimuView && 0 == pSimuView->SendMessage(WM_USER_CANCLOSEVIEW, NULL, (LPARAM)(&bCanClose)) && !bCanClose)
		return;

	bCanClose	=	TRUE;
	CSelectorView	*	pSelectorView = AfxGetSelectorView();
	if (pSelectorView && 0 == pSelectorView->SendMessage(WM_USER_CANCLOSEVIEW, NULL, (LPARAM)(&bCanClose)) && !bCanClose)
		return;

	if (IsWindowVisible())
	{
		// My Own Bar State and Window Placement
		// SaveBarState(_T("BarState"));
		AfxGetApp()->WriteProfileInt(szBarSection, szMainBar, m_wndMainBar.IsWindowVisible());
		AfxGetApp()->WriteProfileInt(szBarSection, szSListBar, m_wndSListBar.IsWindowVisible());
		AfxGetApp()->WriteProfileInt(szBarSection, szSimuBar, m_wndSimuBar.IsWindowVisible());
		AfxGetApp()->WriteProfileInt(szBarSection, szWorkspBar, m_wndWorkspBar.IsWindowVisible());
		
		WINDOWPLACEMENT wp;
		wp.length = sizeof wp;
		if (GetWindowPlacement(&wp))
		{
			wp.flags = 0;
			if (IsZoomed())
				wp.flags |= WPF_RESTORETOMAXIMIZED;
			// and write it to the .INI file
			AfxGetProfile().SetWindowPlacement(&wp);
		}
	}

	// delete notify icon
	NOTIFYICONDATA	nid;
	memset(&nid, 0, sizeof(nid));
	nid.cbSize	= sizeof(nid);
	nid.hWnd	= GetSafeHwnd();
	nid.uID		= 1;
	nid.uFlags	= 0;
	Shell_NotifyIcon(NIM_DELETE, &nid);
	
	CMDIFrameWnd::OnClose();
}

BOOL CMainFrame::DestroyWindow() 
{
	/* ProfUIS Using Code
	// Prof-UIS Bar State and WindowPlacement
	VERIFY(CExtControlBar::ProfileBarStateSave(this, szRegKeyCompany, szRegKeyApp));
	// VERIFY(g_CmdManager->SerializeState(szRegKeyApp, szRegKeyCompany, szRegKeyApp, true));
	// g_CmdManager->ProfileWndRemove(GetSafeHwnd());
	*/
	
	return CMDIFrameWnd::DestroyWindow();
}

void CMainFrame::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu) 
{
	if (!bSysMenu && pPopupMenu)
	{
		InitMenuPopup(pPopupMenu);
	}

	CMDIFrameWnd::OnInitMenuPopup(pPopupMenu, nIndex, bSysMenu);
}

////////////////////////////////////////////////////////////////////////////////
// ToolBar
// 工具条下拉菜单显示
void CMainFrame::OnMainBarDropDown(NMHDR* pNMHDR, LRESULT* pResult)
{
	NMTOOLBAR* pNMToolBar = (NMTOOLBAR*)pNMHDR;

	BOOL	bLoad	=	FALSE;
	CMenu menu;
	if (ID_MAINBAR_SETTING == pNMToolBar->iItem)
		bLoad	=	menu.LoadMenu(IDR_MENU_MAINBARSETTING);
	else if (ID_MAINBAR_VIEW == pNMToolBar->iItem)
		bLoad	=	menu.LoadMenu(IDR_MENU_MAINBARVIEW);
	else if (ID_MAINBAR_TECH == pNMToolBar->iItem)
		bLoad	=	menu.LoadMenu(IDR_MENU_MAINBARTECH);
	else if (ID_MAINBAR_PERIOD == pNMToolBar->iItem)
		bLoad	=	menu.LoadMenu(IDR_MENU_MAINBARPERIOD);
	else
		ASSERT(FALSE);

	if (bLoad)
	{
		CMenu* pPopupMenu = menu.GetSubMenu(0);
		if (pPopupMenu)
		{
			CPoint pt = CalcPopupMenuPoint(&m_wndMainBar, pNMToolBar->iItem, pPopupMenu);
			pPopupMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON, pt.x, pt.y, this);
		}
	}

	*pResult = TBDDRET_DEFAULT;
}

void CMainFrame::OnSlistBarDropDown(NMHDR* pNMHDR, LRESULT* pResult)
{
	NMTOOLBAR* pNMToolBar = (NMTOOLBAR*)pNMHDR;

	BOOL	bLoad	=	FALSE;
	CMenu menu;
	if (ID_SLISTBAR_GROUP == pNMToolBar->iItem)
		bLoad	=	menu.LoadMenu(IDR_MENU_SLISTBARGROUP);
	else if (ID_SLISTBAR_DOMAIN == pNMToolBar->iItem)
		bLoad	=	menu.LoadMenu(IDR_MENU_SLISTBARDOMAIN);
	else if (ID_SLISTBAR_CLASS == pNMToolBar->iItem)
		bLoad	=	menu.LoadMenu(IDR_MENU_SLISTBARCLASS);
	else
		ASSERT(FALSE);

	if (bLoad)
	{
		CMenu* pPopupMenu = menu.GetSubMenu(0);
		if (pPopupMenu)
		{
			CPoint pt = CalcPopupMenuPoint(&m_wndSListBar, pNMToolBar->iItem, pPopupMenu);
			pPopupMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON, pt.x, pt.y, this);
		}
	}

	*pResult = TBDDRET_DEFAULT;
}

#define	ON_DROPDOWN_MENU(wndBar, nItem)					\
	NMTOOLBAR nmTB;											\
	memset(&nmTB, 0, sizeof(nmTB));						\
	nmTB.iItem = nItem;										\
	nmTB.hdr.hwndFrom	=	wndBar.GetSafeHwnd();			\
	nmTB.hdr.idFrom		=	wndBar.GetDlgCtrlID();			\
	nmTB.hdr.code		=	TBN_DROPDOWN;					\
	SendMessage(WM_NOTIFY, IDW_MAINBAR, (LPARAM)&nmTB);

void CMainFrame::OnMainbarSetting()	{	ON_DROPDOWN_MENU(m_wndMainBar,ID_MAINBAR_SETTING);	}
void CMainFrame::OnMainbarView()	{	ON_DROPDOWN_MENU(m_wndMainBar,ID_MAINBAR_VIEW);	}
void CMainFrame::OnMainbarTech()	{	ON_DROPDOWN_MENU(m_wndMainBar,ID_MAINBAR_TECH);	}
void CMainFrame::OnMainbarPeriod()	{	ON_DROPDOWN_MENU(m_wndMainBar,ID_MAINBAR_PERIOD);	}

void CMainFrame::OnSlistbarGroup()	{	ON_DROPDOWN_MENU(m_wndSListBar,ID_SLISTBAR_GROUP);	}
void CMainFrame::OnSlistbarDomain()	{	ON_DROPDOWN_MENU(m_wndSListBar,ID_SLISTBAR_DOMAIN);	}
void CMainFrame::OnSlistbarClass()	{	ON_DROPDOWN_MENU(m_wndSListBar,ID_SLISTBAR_CLASS);	}

////////////////////////////////////////////////////////////////////////////////
// “系统”菜单
// 实时行情接收
void CMainFrame::OnSysConnectserver()
{
	// AfxGetStkReceiver().NetEngineBeginWorking();
	extern BOOL CALLBACK LoadProgram(HWND hWnd, int nMinProgress, int nMaxProgress);

	CStartupDlg	startup;
	CBitmap	bmp;
	bmp.LoadBitmap(IDB_DLGLEFTLOGO);
	startup.SetBitmap((HBITMAP)bmp.GetSafeHandle());
	startup.SetLoadProgramFunc(LoadProgram);
	startup.SetDisableOffline(TRUE);
	startup.DoModal();
}

void CMainFrame::OnUpdateSysConnectserver(CCmdUI* pCmdUI)
{
	pCmdUI->Enable(!AfxGetStkReceiver().NetEngineIsWorking());
}

void CMainFrame::OnSysDisconnectserver()
{
	AfxGetStkReceiver().NetEngineEndWorking();
}

void CMainFrame::OnUpdateSysDisconnectserver(CCmdUI* pCmdUI)
{
	pCmdUI->Enable(AfxGetStkReceiver().NetEngineIsWorking());
}

void CMainFrame::OnSysStarttongshi()
{
	AfxGetStkReceiver().EngineBeginWorking(TRUE);
	AfxGetSListStockContainer().ReRetrieveFromStatic(AfxGetActiveStrategy());
	AfxGetStaticDoc()->UpdateAllViews(NULL, UPDATE_HINT_SLISTVIEW, NULL);
}

void CMainFrame::OnUpdateSysStarttongshi(CCmdUI* pCmdUI)
{
	pCmdUI->SetCheck(AfxGetStkReceiver().EngineIsWorking());
	pCmdUI->Enable(TRUE);
}

void CMainFrame::OnSysSetuptongshi()
{
	AfxGetStkReceiver().EngineSetup();
	AfxGetSListStockContainer().ReRetrieveFromStatic(AfxGetActiveStrategy());
	AfxGetStaticDoc()->UpdateAllViews(NULL, UPDATE_HINT_SLISTVIEW, NULL);
	AfxGetStaticDoc()->UpdateAllViews(NULL, UPDATE_HINT_GRAPHVIEW, NULL);
}

void CMainFrame::OnUpdateSysSetuptongshi(CCmdUI* pCmdUI)
{
	pCmdUI->Enable(AfxGetStkReceiver().EngineIsWorking());
}

void CMainFrame::OnSysStoptongshi()
{
	AfxGetStkReceiver().EngineEndWorking();
}

void CMainFrame::OnUpdateSysStoptongshi(CCmdUI* pCmdUI)
{
	pCmdUI->Enable(AfxGetStkReceiver().EngineIsWorking());
}

void CMainFrame::OnSysAutoupgrade() 
{
	CUpgradeDlg	* dlg = new CUpgradeDlg;
	dlg->Create(CUpgradeDlg::IDD, this);
	dlg->SetAutoDelete(TRUE);
	dlg->CenterWindow(this);
	dlg->SetWindowPos(NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_SHOWWINDOW | SWP_NOSIZE);
}

void CMainFrame::OnSysAutosave() 
{
	AfxGetProfile().SetAutoSaveKDataMin(!AfxGetProfile().GetAutoSaveKDataMin());
}

void CMainFrame::OnUpdateSysAutosave(CCmdUI* pCmdUI)
{
	pCmdUI->SetCheck(AfxGetProfile().GetAutoSaveKDataMin());
	pCmdUI->Enable(TRUE);
}

void CMainFrame::OnSysNotifyicon() 
{
	AfxGetProfile().SetNotifyIcon(!AfxGetProfile().GetNotifyIcon());
}

void CMainFrame::OnUpdateSysNotifyicon(CCmdUI* pCmdUI)
{
	pCmdUI->SetCheck(AfxGetProfile().GetNotifyIcon());
	pCmdUI->Enable(TRUE);
}

////////////////////////////////////////////////////////////////////////////////
// “查看”菜单
// 标准工具条文字标签显示
void CMainFrame::OnViewMainbartext()
{
	m_wndMainBar.ToggleTextLabel(CTextToolBar::labelBottom);
	m_wndSListBar.ToggleTextLabel(CTextToolBar::labelRight);
	RecalcLayout();
}

void CMainFrame::OnUpdateViewMainbartext(CCmdUI* pCmdUI)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -