📄 mainfrm.cpp.svn-base
字号:
nMenuHeight += 9;
else
nMenuHeight += 19;
}
}
// Left Width
int nLeftWidth = rectButton.Height();
for (int i=0; i<pBar->GetCount(); i++)
{
if (pBar->GetButtonStyle(i) == TBSTYLE_BUTTON)
{
CRect rectItem;
pBar->GetToolBarCtrl().GetRect(i, &rectItem);
nLeftWidth = rectItem.Width();
break;
}
}
// Track Point
CPoint pt;
if (cyScreen-rectButton.bottom-2 >= nMenuHeight
|| rectButton.top-2 < nMenuHeight)
{
pt.x = rectButton.left + nLeftWidth;
pt.y = rectButton.bottom + 1;
}
else
{
pt.x = rectButton.left + nLeftWidth;
pt.y = rectButton.top - 1;
}
return pt;
}
void CMainFrame::InitMenuPopup(CMenu* pPopupMenu)
{
if (NULL == pPopupMenu || NULL == pPopupMenu->GetSafeHmenu())
return;
for (UINT nMenu=0; nMenu<pPopupMenu->GetMenuItemCount(); nMenu++)
{
if (ID_SLIST_GROUP1 == pPopupMenu->GetMenuItemID(nMenu))
{
pPopupMenu->ModifyMenu(nMenu, MF_BYPOSITION | MF_GRAYED, ID_SLIST_GROUP1, (LPCTSTR)NULL);
for (UINT k=pPopupMenu->GetMenuItemCount()-1; k>nMenu; k--)
pPopupMenu->DeleteMenu(k, MF_BYPOSITION);
AfxMenuInsertGroup(pPopupMenu, nMenu+1, ID_SLIST_GROUP_START, ID_SLIST_GROUP_END, TRUE);
break;
}
else if (ID_SLIST_DOMAIN1 == pPopupMenu->GetMenuItemID(nMenu))
{
pPopupMenu->DeleteMenu(nMenu, MF_BYPOSITION);
AfxMenuInsertDomain(pPopupMenu, nMenu, ID_SLIST_DOMAIN_START, ID_SLIST_DOMAIN_END);
break;
}
else if (ID_OPTION_ADDTOGROUP == pPopupMenu->GetMenuItemID(nMenu))
{
pPopupMenu->ModifyMenu(nMenu, MF_BYPOSITION | MF_GRAYED, ID_OPTION_ADDTOGROUP, (LPCTSTR)NULL);
for (UINT k=pPopupMenu->GetMenuItemCount()-1; k>nMenu; k--)
pPopupMenu->DeleteMenu(k, MF_BYPOSITION);
CView * pView = AfxGetStaticDoc()->GetActiveView();
AfxMenuInsertGroup(pPopupMenu, nMenu+1, ID_OPTION_ADDTOGROUP_START, ID_OPTION_ADDTOGROUP_END,
pView && (pView->IsKindOf(RUNTIME_CLASS(CSListView))||pView->IsKindOf(RUNTIME_CLASS(CGraphView))||pView->IsKindOf(RUNTIME_CLASS(CBaseView))));
break;
}
else if (ID_VIEW_TECHKLINE == pPopupMenu->GetMenuItemID(nMenu))
{
CView * pView = AfxGetStaticDoc()->GetActiveView();
UINT nFlags = ((pView && pView->IsKindOf(RUNTIME_CLASS(CGraphView))) ? MF_BYPOSITION | MF_STRING : MF_BYPOSITION | MF_STRING | MF_GRAYED);
pPopupMenu->DeleteMenu(nMenu, MF_BYPOSITION);
for (UINT nID = STT_KLINE_MAX; nID >= STT_KLINE_MIN; nID --)
{
UINT nFlagsLocal = nFlags;
if (AfxGetProfile().IsGraphTechShow(nID)) nFlagsLocal |= MF_CHECKED;
pPopupMenu->InsertMenu(nMenu, nFlagsLocal, ID_VIEW_TECH_START+nID, AfxGetSTTFullName(nID));
}
}
else if (ID_VIEW_TECHTREND == pPopupMenu->GetMenuItemID(nMenu))
{
CView * pView = AfxGetStaticDoc()->GetActiveView();
UINT nFlags = ((pView && pView->IsKindOf(RUNTIME_CLASS(CGraphView))) ? MF_BYPOSITION | MF_STRING : MF_BYPOSITION | MF_STRING | MF_GRAYED);
pPopupMenu->DeleteMenu(nMenu, MF_BYPOSITION);
for (UINT nID = STT_TREND_MAX; nID >= STT_TREND_MIN; nID --)
{
UINT nFlagsLocal = nFlags;
if (AfxGetProfile().IsGraphTechShow(nID)) nFlagsLocal |= MF_CHECKED;
pPopupMenu->InsertMenu(nMenu, nFlagsLocal, ID_VIEW_TECH_START+nID, AfxGetSTTFullName(nID));
}
}
else if (ID_VIEW_TECHENERGY == pPopupMenu->GetMenuItemID(nMenu))
{
pPopupMenu->DeleteMenu(nMenu, MF_BYPOSITION);
CView * pView = AfxGetStaticDoc()->GetActiveView();
UINT nFlags = ((pView && pView->IsKindOf(RUNTIME_CLASS(CGraphView))) ? MF_BYPOSITION | MF_STRING : MF_BYPOSITION | MF_STRING | MF_GRAYED);
for (UINT nID = STT_ENERGY_MAX; nID >= STT_ENERGY_MIN; nID --)
{
UINT nFlagsLocal = nFlags;
if (AfxGetProfile().IsGraphTechShow(nID)) nFlagsLocal |= MF_CHECKED;
pPopupMenu->InsertMenu(nMenu, nFlagsLocal, ID_VIEW_TECH_START+nID, AfxGetSTTFullName(nID));
}
}
else if (ID_VIEW_TECHSWING == pPopupMenu->GetMenuItemID(nMenu))
{
CView * pView = AfxGetStaticDoc()->GetActiveView();
UINT nFlags = ((pView && pView->IsKindOf(RUNTIME_CLASS(CGraphView))) ? MF_BYPOSITION | MF_STRING : MF_BYPOSITION | MF_STRING | MF_GRAYED);
pPopupMenu->DeleteMenu(nMenu, MF_BYPOSITION);
for (UINT nID = STT_SWING_MAX; nID >= STT_SWING_MIN; nID --)
{
UINT nFlagsLocal = nFlags;
if (AfxGetProfile().IsGraphTechShow(nID)) nFlagsLocal |= MF_CHECKED;
pPopupMenu->InsertMenu(nMenu, nFlagsLocal, ID_VIEW_TECH_START+nID, AfxGetSTTFullName(nID));
}
}
else if (ID_VIEW_TECHOTHER == pPopupMenu->GetMenuItemID(nMenu))
{
CView * pView = AfxGetStaticDoc()->GetActiveView();
UINT nFlags = ((pView && pView->IsKindOf(RUNTIME_CLASS(CGraphView))) ? MF_BYPOSITION | MF_STRING : MF_BYPOSITION | MF_STRING | MF_GRAYED);
pPopupMenu->DeleteMenu(nMenu, MF_BYPOSITION);
for (UINT nID = STT_OTHER_MAX; nID >= STT_OTHER_MIN; nID --)
{
UINT nFlagsLocal = nFlags;
if (AfxGetProfile().IsGraphTechShow(nID)) nFlagsLocal |= MF_CHECKED;
pPopupMenu->InsertMenu(nMenu, nFlagsLocal, ID_VIEW_TECH_START+nID, AfxGetSTTFullName(nID));
}
}
else if (ID_VIEW_TECHCLK == pPopupMenu->GetMenuItemID(nMenu))
{
CView * pView = AfxGetStaticDoc()->GetActiveView();
UINT nFlags = ((pView && pView->IsKindOf(RUNTIME_CLASS(CGraphView))) ? MF_BYPOSITION | MF_STRING : MF_BYPOSITION | MF_STRING | MF_GRAYED);
pPopupMenu->DeleteMenu(nMenu, MF_BYPOSITION);
for (UINT nID = STT_CLK_MAX; nID >= STT_CLK_MIN; nID --)
{
UINT nFlagsLocal = nFlags;
if (AfxGetProfile().IsGraphTechShow(nID)) nFlagsLocal |= MF_CHECKED;
pPopupMenu->InsertMenu(nMenu, nFlagsLocal, ID_VIEW_TECH_START+nID, AfxGetSTTFullName(nID));
}
}
else if (ID_VIEW_TECHUSER == pPopupMenu->GetMenuItemID(nMenu))
{
CView * pView = AfxGetStaticDoc()->GetActiveView();
UINT nFlags = ((pView && pView->IsKindOf(RUNTIME_CLASS(CGraphView))) ? MF_BYPOSITION | MF_STRING : MF_BYPOSITION | MF_STRING | MF_GRAYED);
pPopupMenu->DeleteMenu(nMenu, MF_BYPOSITION);
UINT nTechUserCount = CTechUser::GetTechUserCount();
UINT nIDEnd = STT_USER_MIN+nTechUserCount-1;
if (nIDEnd > STT_USER_MIN+14)
nIDEnd = STT_USER_MIN+14;
for (UINT nID = nIDEnd; nID >= STT_USER_MIN; nID --)
{
UINT nFlagsLocal = nFlags;
if (AfxGetProfile().IsGraphTechShow(nID)) nFlagsLocal |= MF_CHECKED;
pPopupMenu->InsertMenu(nMenu, nFlagsLocal, ID_VIEW_TECH_START+nID-STT_USER_MIN+1+STT_MAX, AfxGetSTTFullName(nID));
}
}
}
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CMDIFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CMDIFrameWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
void CMainFrame::OnTimer(UINT nIDEvent)
{
if (TIMER_TIME == nIDEvent)
{
CSPTime time = CSPTime::GetCurrentTime();
CString string = (LPCTSTR)AfxGetTimeString(time.GetTime(), "%H:%M:%S,", FALSE);
m_wndStatusBar.SetPaneText(3, string);
}
else if (TIMER_STOCKINDEXREFRESH == nIDEvent)
{
CString strSHTipFmt, strSZTipFmt;
strSHTipFmt.LoadString(IDS_MAINFRAME_SHINDEXTIP);
strSZTipFmt.LoadString(IDS_MAINFRAME_SZINDEXTIP);
double dDevided = 100000000;
#ifdef CLKLAN_ENGLISH_US
dDevided = 1000000000;
#endif
CString string;
double dDiff = 0;
CStockInfo info;
COLORREF clrRise = AfxGetProfile().GetColor(CColorClass::clrRise);
COLORREF clrFall = AfxGetProfile().GetColor(CColorClass::clrFall);
if (AfxGetStockContainer().GetStockInfo(STKLIB_CODE_SZZS, &info))
{
info.GetDiff(&dDiff,info.m_datetech,1);
string.Format(strSHTipFmt, info.m_fClose, dDiff, info.m_fAmount/dDevided);
// m_wndStatusBar.SetPaneColor(dDiff > 0 ? clrRise : clrFall);
m_wndStatusBar.SetPaneText(1, string);
}
if (AfxGetStockContainer().GetStockInfo(STKLIB_CODE_SZNCZ, &info))
{
info.GetDiff(&dDiff,info.m_datetech,1);
string.Format(strSZTipFmt, info.m_fClose, dDiff, info.m_fAmount/dDevided);
// m_wndStatusBar.SetPaneColor(dDiff > 0 ? clrRise : clrFall);
m_wndStatusBar.SetPaneText(2, string);
}
PostMessage(WM_APP_STKRECEIVER_ALARM, STKRCV_ALARM_REFRESH, 0);
}
// 检测是否有新版本,自动升级
else if (TIMER_AUTOUPDATE == nIDEvent)
{
KillTimer(TIMER_AUTOUPDATE);
CInternetSession m_cis;
CHttpConnection* m_chc;
m_cis.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT, 5);
m_chc = m_cis.GetHttpConnection(AfxGetProfile().GetHTTPServerDomain());
CHttpFile* pFile = m_chc->OpenRequest(CHttpConnection::HTTP_VERB_GET, "/download/update.ini");
if (!pFile->SendRequest())
{
pFile->Close();
AfxMessageBox("SendRequest Error");
}
char szPath[256];
CString strPath;
GetModuleFileName(NULL, szPath, 256);
strPath = szPath;
if (strPath.ReverseFind('\\') >= 0)
strPath = strPath.Left(strPath.ReverseFind('\\'));
strPath += "\\update.ini";
CStdioFile csf;
csf.Open(strPath, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary);
char buf[2048];
int n;
while ((n = pFile->Read(buf, 2048)) >0)
csf.Write(buf, n);
csf.Close();
pFile->Close();
char szVer[16];
GetPrivateProfileString("TsKing", "Version", "2", szVer, 16, strPath);
if (atof(szVer) > float(theApp.m_nVersion[3]))
{
int nRet = AfxMessageBox("已经有新的版本,是否需要升级?", MB_YESNO);
if (nRet = IDOK)
{
// 启动升级对话框
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);
dlg->OnOK();
}
}
//else
//{
// CString strText;
// strText.Format("%s %d", szVer, theApp.m_nVersion[3]);
// AfxMessageBox(strText);
//}
}
else if (TIMER_SHOWNETINFO == nIDEvent)
{
static unsigned long countShow = 0;
countShow ++;
if (countShow == 10)
{
KillTimer(TIMER_SHOWNETINFO);
CNetInfoDlg dlg;
dlg.DoModal();
if (AfxGetProfile().HasNewVersion()
&& IDYES == AfxMessageBox(IDS_DOWNLOAD_UPGRADENOW, MB_YESNO))
{
CUpgradeDlg * dlg = new CUpgradeDlg;
dlg->Create(CUpgradeDlg::IDD, this);
dlg->SetAutoDelete(TRUE);
dlg->SetAutoRun(TRUE);
dlg->CenterWindow(this);
dlg->SetWindowPos(NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_SHOWWINDOW | SWP_NOSIZE);
}
}
}
CMDIFrameWnd::OnTimer(nIDEvent);
}
// 判断软件是否合法函数
LRESULT CMainFrame::CreateValid(WPARAM wParam, LPARAM lParam)
{
if (wParam < 100)
{
if (AfxGetSView().IsEva() && AfxGetSView().GetLeft() < 30)
{
PostMessage(WM_USER_CHECKSN, 250);
}
}
else if (wParam >= 100 && wParam < 200)
{
PostMessage(lParam);
}
else
{
AfxAssertQuit();
}
return wParam;
}
LRESULT CMainFrame::OnUpdateBarMenu(WPARAM wParam, LPARAM lParam)
{
return 0;
}
LRESULT CMainFrame::OnNifMessage(WPARAM wParam, LPARAM lParam)
{
static BOOL g_bQuoteTipVisited = FALSE;
if (WM_LBUTTONDOWN == lParam)
{
if (!IsIconic())
{
ShowWindow(SW_MINIMIZE);
if (AfxGetProfile().GetNotifyIcon())
ShowWindow(SW_HIDE);
}
else
{
BOOL bQuoteTipVisible = CQuoteTipDlg::GetInstance().IsWindowVisible();
CQuoteTipDlg::GetInstance().Hide();
SetWindowPos(&CWnd::wndTop, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE);
ShowWindow(SW_RESTORE);
UpdateWindow();
if (!g_bQuoteTipVisited || bQuoteTipVisible)
{
}
g_bQuoteTipVisited = FALSE;
RecalcLayout();
}
}
else if (WM_RBUTTONDOWN == lParam)
{
// 临时刷新一下行情
CStockContainer & container = AfxGetSListStockContainer();
AfxGetStkReceiver().RequestStockData(CStock::dataReport, container.GetData(), container.GetSize(), 0, 0);
// Show Quote
CQuoteTipDlg::GetInstance().ShowGradual();
CQuoteTipDlg::GetInstance().SetAutoHide(5, TRUE);
g_bQuoteTipVisited = TRUE;
}
return 0;
}
LRESULT CMainFrame::OnInitDates(WPARAM wParam, LPARAM lParam)
{
return 0;
}
LRESULT CMainFrame::OnUpdateSlistView(WPARAM wParam, LPARAM lParam)
{
AfxGetSListStockContainer().ReRetrieveFromStatic(AfxGetActiveStrategy());
AfxGetStaticDoc()->UpdateAllViews(NULL, UPDATE_HINT_SLISTVIEW, NULL);
return 0;
}
LRESULT CMainFrame::OnStkReceiverAlarm(WPARAM wParam, LPARAM lParam)
{
if (STKRCV_ALARM_WARNING == wParam)
{
CAlarmTipDlg::GetInstance().ShowGradual();
CAlarmTipDlg::GetInstance().SetAutoHide(5, TRUE);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -