📄 mainfrm.cpp.svn-base
字号:
}
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 + -