BOOL CPPagePlayback::OnApply() { UpdateData(); CAppSettings& s = AfxGetAppSettings(); s.nVolume = m_oldVolume = m_nVolume; s.nBalance = m_nBalance; s.nVolumeStep = std::min(std::max(m_nVolumeStep, 1), 100); s.nSpeedStep = m_nSpeedStep; s.fLoopForever = !!m_iLoopForever; s.nLoops = m_nLoops; s.eAfterPlayback = static_cast<CAppSettings::AfterPlayback>(m_iAfterPlayback); s.iZoomLevel = m_iZoomLevel; s.fRememberZoomLevel = !!m_iRememberZoomLevel; s.nAutoFitFactor = m_nAutoFitFactor = std::min(std::max(m_nAutoFitFactor, 25), 100); s.fAutoloadAudio = !!m_fAutoloadAudio; s.fEnableWorkerThreadForOpening = !!m_fEnableWorkerThreadForOpening; s.fReportFailedPins = !!m_fReportFailedPins; s.strSubtitlesLanguageOrder = m_subtitlesLanguageOrder; s.strAudiosLanguageOrder = m_audiosLanguageOrder; s.bAllowOverridingExternalSplitterChoice = !!m_fAllowOverridingExternalSplitterChoice; // There is no main frame when the option dialog is displayed stand-alone if (CMainFrame* pMainFrame = AfxGetMainFrame()) { pMainFrame->UpdateControlState(CMainFrame::UPDATE_VOLUME_STEP); } return __super::OnApply(); }
void CGraphView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) { // TODO: Add your specialized code here and/or call the base class if( UPDATE_HINT_GRAPHVIEW != lHint && UPDATE_HINT_GRAPHVIEW_NOTRELOADDATA != lHint ) return; if( !IsWindowVisible() ) return; SetFocus( ); CStockInfo info; if( AfxGetProfile().GetCurrentStock( &info ) ) { m_graph.SetCurStock( info ); m_graph.PrepareStockData( UPDATE_HINT_GRAPHVIEW_NOTRELOADDATA != lHint ); } else { m_graph.SetCurStock( STKLIB_CODE_MAIN ); m_graph.PrepareStockData( UPDATE_HINT_GRAPHVIEW_NOTRELOADDATA != lHint ); AfxGetProfile().SetCurrentStock( STKLIB_CODE_MAIN, FALSE ); } Invalidate( ); CMainFrame * pFrame = AfxGetMainFrame(); if( pFrame ) pFrame->m_SearchBox.SetCurrentWindowText( ); }
BOOL CPPageBase::OnApply() { // There is no main frame when the option dialog is displayed stand-alone if (CMainFrame* pMainFrame = AfxGetMainFrame()) { pMainFrame->PostMessage(WM_SAVESETTINGS); } return __super::OnApply(); }
void CRealTimeView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) { // TODO: Add your specialized code here and/or call the base class if( UPDATE_HINT_REALTIMEVIEW != lHint ) return; if( !IsWindowVisible() ) return; SetFocus( ); ASSERT( RTV_MAX_MULTICOUNT > 0 ); CStockInfo info; if( AfxGetProfile().GetCurrentStock( &info ) ) { m_realtime[0].SetCurStock( info ); m_realtime[0].PrepareStockData( ); } else { m_realtime[0].SetCurStock( STKLIB_CODE_MAIN ); m_realtime[0].PrepareStockData( ); AfxGetProfile().SetCurrentStock( STKLIB_CODE_MAIN, FALSE ); } if( CRealTime::modeReportDetail == m_realtime[0].GetDrawMode() ) AfxGetStkReceiver().RequestStockData( CStock::dataDetail, &info, 1, 0, 0 ); else AfxGetStkReceiver().RequestStockData( CStock::dataMinute, &info, 1, 0, 0 ); // 多股同列 int i; for( i=1; i<m_nMultiStockCount && i<RTV_MAX_MULTICOUNT; i++ ) { if( AfxGetProfile().GetNextStock( &info ) ) { m_realtime[i].SetCurStock( info ); m_realtime[i].PrepareStockData( ); if( CRealTime::modeReportDetail == m_realtime[0].GetDrawMode() ) AfxGetStkReceiver().RequestStockData( CStock::dataDetail, &info, 1, 0, 0 ); else AfxGetStkReceiver().RequestStockData( CStock::dataMinute, &info, 1, 0, 0 ); } } for( i=1; i<m_nMultiStockCount && i<RTV_MAX_MULTICOUNT; i++ ) AfxGetProfile().GetPrevStock( &info ); Invalidate( ); if( 1 == m_nMultiStockCount && CRealTime::modePriceLine == m_realtime[0].GetDrawMode() ) m_wndReportTab.SetWindowPos( NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW ); else m_wndReportTab.SetWindowPos( NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_HIDEWINDOW ); CMainFrame * pFrame = AfxGetMainFrame(); if( pFrame ) pFrame->m_SearchBox.SetCurrentWindowText( ); SendRequestQuote(TRUE); }
void CSListView::SetCurrentStatus( int nType, LPCTSTR lpszDomain, DWORD dwDate ) { AfxGetSListStockContainer().RetrieveFromStatic( nType, lpszDomain, AfxGetActiveStrategy(), dwDate ); OnUpdate( NULL, UPDATE_HINT_SLISTVIEW, NULL ); CMainFrame * pFrame = AfxGetMainFrame(); if( pFrame ) pFrame->m_DateBox.SetCurrentWindowText( ); }
void CPlayerSeekBar::MoveThumb(const CPoint& point) { if (m_bHasDuration) { REFERENCE_TIME rtPos = PositionFromClientPoint(point); if (AfxGetAppSettings().bFastSeek ^ (GetKeyState(VK_SHIFT) < 0)) { rtPos = AfxGetMainFrame()->GetClosestKeyFrame(rtPos); } SyncThumbToVideo(rtPos); } }
BOOL CPPageFullscreen::OnApply() { UpdateData(); CAppSettings& s = AfxGetAppSettings(); s.strFullScreenMonitor = m_fullScreenMonitor; s.fLaunchfullscreen = !!m_bLaunchFullscreen; s.fExitFullScreenAtTheEnd = !!m_fExitFullScreenAtTheEnd; s.bHideFullscreenControls = !!m_bHideFullscreenControls; { int n = m_hidePolicy.GetCurSel(); if (n != CB_ERR) { s.eHideFullscreenControlsPolicy = static_cast<CAppSettings::HideFullscreenControlsPolicy>(m_hidePolicy.GetItemData(n)); } else { ASSERT(FALSE); } } if (s.eHideFullscreenControlsPolicy == CAppSettings::HideFullscreenControlsPolicy::SHOW_WHEN_CURSOR_MOVED && m_uHideFullscreenControlsDelay > 0 && m_uHideFullscreenControlsDelay < SANE_TIMEOUT_FOR_SHOW_CONTROLS_ON_MOUSE_MOVE) { m_uHideFullscreenControlsDelay = SANE_TIMEOUT_FOR_SHOW_CONTROLS_ON_MOUSE_MOVE; UpdateData(FALSE); } s.uHideFullscreenControlsDelay = m_uHideFullscreenControlsDelay; s.bHideFullscreenDockedPanels = !!m_bHideFullscreenDockedPanels; s.autoChangeFSMode.bEnabled = !!m_bAutoChangeFSModeEnabled; s.autoChangeFSMode.bApplyDefaultModeAtFSExit = !!m_bAutoChangeFSModeApplyDefModeAtFSExist; s.autoChangeFSMode.bRestoreResAfterProgExit = !!m_bAutoChangeFSModeRestoreResAfterProgExit; s.autoChangeFSMode.uDelay = m_uAutoChangeFullscrResDelay; m_autoChangeFSModes.clear(); for (int nItem = 0, count = m_list.GetItemCount(); nItem < count; nItem++) { double dFRStart, dFRStop; if (nItem == 0) { // Special case for default mode dFRStart = 0.0; dFRStop = 0.0; } else { dFRStart = _tcstod(m_list.GetItemText(nItem, COL_FRAMERATE_START), nullptr); dFRStop = _tcstod(m_list.GetItemText(nItem, COL_FRAMERATE_STOP), nullptr); } m_autoChangeFSModes.emplace_back(!!m_list.GetCheck(nItem), dFRStart, dFRStop, m_displayModes[m_list.GetItemData(nItem)]); } s.autoChangeFSMode.modes = m_autoChangeFSModes; // There is no main frame when the option dialog is displayed stand-alone if (CMainFrame* pMainFrame = AfxGetMainFrame()) { pMainFrame->UpdateControlState(CMainFrame::UPDATE_CONTROLS_VISIBILITY); } return __super::OnApply(); }
void CSetGroupDlg::OnOK() { // TODO: Add extra validation here CDomainContainer & groups = AfxGetGroupContainer( ); groups = m_grpTemp; groups.Store( AfxGetProfile().GetGroupFile() ); ::PostMessage( AfxGetGroupView()->GetSafeHwnd(), WM_USER_UPDATEGROUPS, 0, 0 ); ::PostMessage( AfxGetMainFrame()->GetSafeHwnd(), WM_USER_UPDATEBARMENU, 0, 0 ); CXFDialog::OnOK(); }
void CStrategyView::ExecuteStrategy( CStrategy * pStrategy, DWORD dwData ) { if( NULL != pStrategy ) { if( SV_ITEM_PROPERTY == dwData ) ::PostMessage( AfxGetMainFrame()->GetSafeHwnd(), WM_COMMAND, ID_STRATEGY_PROPERTY, 0 ); else if( SV_ITEM_STOCKS == dwData ) AfxShowSlist( CStockContainer::typeStrategy, NULL ); else if( SV_ITEM_RULE == dwData ) ::PostMessage( AfxGetMainFrame()->GetSafeHwnd(), WM_COMMAND, ID_STRATEGY_SETRULE, 0 ); else if( SV_ITEM_RATE == dwData ) ::PostMessage( AfxGetMainFrame()->GetSafeHwnd(), WM_COMMAND, ID_STRATEGY_SETRATE, 0 ); else if( SV_ITEM_SIMU == dwData ) AfxSwitchToStaticView( RUNTIME_CLASS(CSimuView) ); else if( SV_ITEM_REPORT == dwData ) ::PostMessage( AfxGetMainFrame()->GetSafeHwnd(), WM_COMMAND, ID_STRATEGY_REPORT, 0 ); else if( SV_ITEM_REALOP == dwData ) ::PostMessage( AfxGetMainFrame()->GetSafeHwnd(), WM_COMMAND, ID_STRATEGY_REALOP, 0 ); else AfxSwitchToStaticView( RUNTIME_CLASS(CSimuView) ); } }
BOOL CDateComboBox::PreTranslateMessage(MSG* pMsg) { if( pMsg->message == WM_KEYDOWN ) { if( CSearchBox::IsWantChar( pMsg->wParam ) ) { CMainFrame * pFrame = AfxGetMainFrame(); if( pFrame ) pFrame->m_SearchBox.OnChangeStatus( pMsg->wParam, pMsg->lParam, FALSE ); return TRUE; } } return CComboBox::PreTranslateMessage(pMsg); }
CView* CStaticDoc::GetActiveView( ) { CMainFrame * pMainFrame = AfxGetMainFrame(); if( pMainFrame ) { CChildFrame * pChildFrame = DYNAMIC_DOWNCAST( CChildFrame, pMainFrame->MDIGetActive() ); if( pChildFrame ) { CView * pView = pChildFrame->GetActiveView(); if( pView && this == pView->GetDocument() ) return pView; } } return NULL; }
void CPlayerSeekBar::OnLButtonDown(UINT nFlags, CPoint point) { CRect clientRect; GetClientRect(&clientRect); if (m_bEnabled && m_bHasDuration && clientRect.PtInRect(point)) { m_bHovered = false; SetCapture(); MoveThumb(point); VERIFY(SetTimer(TIMER_HOVER_CAPTURED, HOVER_CAPTURED_TIMEOUT, nullptr)); } else { auto pFrame = AfxGetMainFrame(); if (!pFrame->m_fFullScreen) { MapWindowPoints(pFrame, &point, 1); pFrame->PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x, point.y)); } } }
void CChildFrame::OnTabSelChange(NMHDR* pNMHDR, LRESULT* pResult) { int nSel = m_tabctrl.GetCurSel(); if( -1 == nSel ) return; CMainFrame * pFrame = AfxGetMainFrame(); if( NULL == pFrame ) return; TCITEM tci; tci.mask = TCIF_PARAM; if( m_tabctrl.GetItem( nSel, &tci ) ) { pFrame->OnCmdMsg( tci.lParam, 0, NULL, NULL ); } }
BOOL CStkUIApp::OnDBChanged( BOOL bRecalculate ) { CWaitCursor waitcursor; // Reload DB AfxGetStockContainer().Load( &AfxGetDB(), NULL, NULL ); AfxGetDomainContainer().Load( AfxGetProfile().GetDomainFile() ); AfxGetGroupContainer().Load( AfxGetProfile().GetGroupFile() ); AfxGetDB().LoadKDataCache( AfxGetStockContainer(), NULL, NULL, 0, STKLIB_MAX_PROGRESS ); AfxGetStockContainer().OnDataChanged( ); AfxGetStkReceiver().RefreshStockContainer( AfxGetStockContainer(), TRUE ); // Reload AfxGetStockMain() AfxReloadStockMain( ); // Recalcuate Yield if( bRecalculate && IDYES == AfxMessageBox( IDS_INSTALLPAC_IFRECALCULATE, MB_YESNO|MB_ICONINFORMATION ) ) { AfxRecalculateYield( AfxGetProfile().GetYieldAverageDays(), TRUE ); AfxGetStockContainer().ReloadBase( &AfxGetDB() ); } // Update SListBar CMainFrame * pMainFrame = AfxGetMainFrame(); if( pMainFrame ) { pMainFrame->m_SearchBox.InitStocks( TRUE, TRUE, TRUE ); pMainFrame->m_SearchBox.SetCurrentWindowText( ); //pMainFrame->m_DateBox.InitDates( ); //pMainFrame->m_DateBox.SetCurrentWindowText( ); } // Update Views AfxGetSListStockContainer().ReRetrieveFromStatic( AfxGetActiveStrategy(), TRUE ); AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_SLISTVIEW, NULL ); AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_GRAPHVIEW, NULL ); AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_BASEVIEW, NULL ); AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_SIMUVIEW_REREALRUN, NULL ); AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_SELECTORVIEW, NULL ); ::PostMessage( AfxGetGroupView()->GetSafeHwnd(), WM_USER_UPDATEGROUPS, 0, 0 ); return TRUE; }
void CPlayerSeekBar::SyncThumbToVideo(REFERENCE_TIME rtPos) { if (m_rtPos == rtPos) { return; } m_rtPos = rtPos; if (m_bHasDuration) { CRect newThumbRect(GetThumbRect()); if (newThumbRect != m_lastThumbRect) { InvalidateRect(newThumbRect | m_lastThumbRect); auto pFrame = AfxGetMainFrame(); if (pFrame && AfxGetAppSettings().fUseWin7TaskBar && pFrame->m_pTaskbarList) { pFrame->m_pTaskbarList->SetProgressValue(pFrame->m_hWnd, m_rtPos, m_rtStop); } } } }
BOOL CPPageTweaks::OnApply() { UpdateData(); CAppSettings& s = AfxGetAppSettings(); s.nJumpDistS = m_nJumpDistS; s.nJumpDistM = m_nJumpDistM; s.nJumpDistL = m_nJumpDistL; s.bNotifySkype = !!m_fNotifySkype; s.fPreventMinimize = !!m_fPreventMinimize; s.fUseWin7TaskBar = !!m_fUseWin7TaskBar; s.fUseSearchInFolder = !!m_fUseSearchInFolder; s.fUseTimeTooltip = !!m_fUseTimeTooltip; s.nTimeTooltipPosition = m_TimeTooltipPosition.GetCurSel(); s.nOSDSize = m_nOSDSize; m_FontType.GetLBText(m_FontType.GetCurSel(), s.strOSDFont); s.bFastSeek = !!m_fFastSeek; s.eFastSeekMethod = static_cast<decltype(s.eFastSeekMethod)>(m_FastSeekMethod.GetCurSel()); s.bHideWindowedMousePointer = !!m_bHideWindowedMousePointer; s.fShowChapters = !!m_fShowChapters; s.fLCDSupport = !!m_fLCDSupport; CMainFrame* pFrame = ((CMainFrame*)GetParentFrame()); if (m_fUseWin7TaskBar) { pFrame->CreateThumbnailToolbar(); } pFrame->UpdateThumbarButton(); // There is no main frame when the option dialog is displayed stand-alone if (CMainFrame* pMainFrame = AfxGetMainFrame()) { pMainFrame->UpdateControlState(CMainFrame::UPDATE_SKYPE); pMainFrame->UpdateControlState(CMainFrame::UPDATE_SEEKBAR_CHAPTERS); } return __super::OnApply(); }
void CSListView::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView) { // TODO: Add your specialized code here and/or call the base class CMainFrame * pFrame = AfxGetMainFrame( ); if( pFrame ) pFrame->SetMessageText( bActivate ? IDS_HELPTIP_SLIST : AFX_IDS_IDLEMESSAGE ); if( bActivate && m_bShouldUpdate ) { OnUpdate( NULL, UPDATE_HINT_SLISTVIEW, NULL ); m_bShouldUpdate = FALSE; } CFormView::OnActivateView(bActivate, pActivateView, pDeactiveView); if( ::IsWindow(m_wndWorkTab.GetSafeHwnd()) ) { m_wndWorkTab.Invalidate( ); m_wndWorkTab.UpdateWindow( ); } }
void CPlayerSeekBar::UpdateToolTipText() { ASSERT(m_bHasDuration); REFERENCE_TIME rtNow = PositionFromClientPoint(m_tooltipPoint); CString time; GUID timeFormat = AfxGetMainFrame()->GetTimeFormat(); if (timeFormat == TIME_FORMAT_MEDIA_TIME) { DVD_HMSF_TIMECODE tcNow = RT2HMS_r(rtNow); if (tcNow.bHours > 0) { time.Format(_T("%02u:%02u:%02u"), tcNow.bHours, tcNow.bMinutes, tcNow.bSeconds); } else { time.Format(_T("%02u:%02u"), tcNow.bMinutes, tcNow.bSeconds); } } else if (timeFormat == TIME_FORMAT_FRAME) { time.Format(_T("%I64d"), rtNow); } else { ASSERT(FALSE); } CComBSTR chapterName; { CAutoLock lock(&m_csChapterBag); if (m_pChapterBag) { REFERENCE_TIME rt = rtNow; m_pChapterBag->ChapLookup(&rt, &chapterName); } } if (chapterName.Length() == 0) { m_tooltipText = time; } else { m_tooltipText.Format(_T("%s - %s"), time, chapterName); } m_ti.lpszText = (LPTSTR)(LPCTSTR)m_tooltipText; m_tooltip.SetToolInfo(&m_ti); }
CChildFrame* CChildFrame::CreateNewFrame( CStaticDoc* pStaticDoc ) { if (pStaticDoc != NULL) ASSERT_VALID(pStaticDoc); // create a frame wired to the specified document ASSERT( pStaticDoc->GetIDResource() != 0); // must have a resource ID to load from CCreateContext context; context.m_pCurrentFrame = NULL; context.m_pCurrentDoc = NULL; //pStaticDoc; context.m_pLastView = NULL; context.m_pNewViewClass = NULL; // pViewClass if this is set, a view will be created! context.m_pNewDocTemplate = NULL; CRuntimeClass* pFrameClass = RUNTIME_CLASS(CChildFrame); CChildFrame * pFrame = (CChildFrame*)pFrameClass->CreateObject(); if (pFrame == NULL) { TRACE1("Warning: Dynamic create of frame %hs failed.\n", pFrameClass->m_lpszClassName); return NULL; } ASSERT_KINDOF(CChildFrame, pFrame); // create new from resource if (!pFrame->LoadFrame( pStaticDoc->GetIDResource(), WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, // default frame styles AfxGetMainFrame(), &context)) { TRACE0("Warning: Couldn't create a child frame.\n"); // frame will be deleted in PostNcDestroy cleanup return NULL; } // it worked ! return pFrame; }
BOOL CPPageSubStyle::OnApply() { UpdateData(); if (m_iCharset >= 0) { m_stss.charSet = (int)m_cbCharset.GetItemData(m_iCharset); } m_stss.fontSpacing = m_spacing; m_stss.fontAngleZ = m_angle; m_stss.fontScaleX = m_scalex; m_stss.fontScaleY = m_scaley; m_stss.borderStyle = m_borderStyle; m_stss.outlineWidthX = m_stss.outlineWidthY = m_borderWidth; m_stss.shadowDepthX = m_stss.shadowDepthY = m_shadowDepth; m_stss.scrAlignment = m_screenAlignment + 1; m_stss.marginRect = m_margin; m_stss.relativeTo = (STSStyle::RelativeTo)m_iRelativeTo; for (size_t i = 0; i < m_alpha.size(); i++) { ASSERT(m_alpha[i] <= BYTE_MAX); m_stss.alpha[i] = BYTE_MAX - BYTE(m_alpha[i]); } if (m_bDefaultStyle) { STSStyle& stss = AfxGetAppSettings().subtitlesDefStyle; if (stss != m_stss) { stss = m_stss; if (CMainFrame* pMainFrame = AfxGetMainFrame()) { pMainFrame->UpdateSubDefaultStyle(); } } } return __super::OnApply(); }
BOOL CStaticDoc::ShowStaticView( CRuntimeClass * pViewClass, BOOL bMaximized ) { if( NULL == pViewClass ) return FALSE; CChildFrame * pChildFrame = NULL; POSITION pos = GetFirstViewPosition( ); CView * pView = NULL; while( pView = GetNextView(pos) ) { if( pView->IsKindOf( pViewClass ) ) { pChildFrame = DYNAMIC_DOWNCAST( CChildFrame, pView->GetParentFrame() ); ASSERT( pChildFrame ); if( pChildFrame ) break; } } if( NULL == pChildFrame ) { // create frame pChildFrame = CChildFrame::CreateNewFrame( this ); ASSERT( pChildFrame ); if( pChildFrame ) { // create view CCreateContext context; context.m_pCurrentDoc = this; context.m_pCurrentFrame = pChildFrame; context.m_pLastView = NULL; context.m_pNewDocTemplate = NULL; context.m_pNewViewClass = pViewClass; CView * pNewView = DYNAMIC_DOWNCAST(CView,pChildFrame->CreateView( &context, AFX_IDW_PANE_FIRST)); if( pNewView ) { pChildFrame->SetActiveView( pNewView ); pNewView->OnInitialUpdate( ); } // if no active child frame, maximize this frame CMainFrame * pMainFrame = AfxGetMainFrame(); if( pMainFrame ) { CFrameWnd * pActiveFrame = AfxGetMainFrame()->GetActiveFrame(); if( !pActiveFrame || !pActiveFrame->IsKindOf(RUNTIME_CLASS(CChildFrame)) ) pChildFrame->MDIMaximize(); } } } if( pChildFrame ) { // activate it pChildFrame->MDIActivate(); if( bMaximized ) pChildFrame->MDIMaximize(); else pChildFrame->ShowWindow( SW_SHOW ); } return TRUE; }
void CSListView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) { // TODO: Add your specialized code here and/or call the base class if( UPDATE_HINT_SLISTVIEW != lHint ) return; if( IsWindowVisible() ) SetFocus( ); int nColumnCount = m_Grid.GetColumnCount(); if( nColumnCount <= 0 ) return; if( GetParentFrame()->GetSafeHwnd() != AfxGetMainFrame()->GetActiveFrame()->GetSafeHwnd() ) { m_bShouldUpdate = TRUE; return; } m_bShouldUpdate = FALSE; CStockContainer & container = AfxGetSListStockContainer(); container.Lock(); m_Grid.DeleteNonFixedRows(); // Progress CMainFrame * pMainFrame = AfxGetMainFrame(); if( pMainFrame ) { pMainFrame->ShowProgressBar( ); pMainFrame->SetProgress( 0 ); pMainFrame->SetMessageText( IDS_MAINFRAME_WAITING ); } CUIntArray anParams; anParams.SetSize( 0, nColumnCount ); for( int nCol=0; nCol < nColumnCount; nCol ++ ) { LPARAM lParam = m_Grid.GetItemData( 0, nCol ); anParams.Add( lParam ); } CRect rectClient; GetClientRect( &rectClient ); int nPageCount = 1 + rectClient.Height() / abs(m_Grid.GetFixedRowHeight()) + 1; for( int i=0; i<container.GetSize(); i++ ) { CStockInfo & info = container.GetStockInfoByID(i); int nRow = m_Grid.InsertRow( info.GetStockName() ); m_Grid.SetItemData( nRow, 0, i ); for( int nCol=0; nCol<anParams.GetSize(); nCol++ ) { m_Grid.SetItemFormat( nRow, nCol, DT_CENTER|DT_VCENTER|DT_SINGLELINE ); m_Grid.SetItemText( nRow, nCol, AfxGetVariantDispString( anParams[nCol], info, &container ) ); m_Grid.SetItemBkColour( nRow, nCol, AfxGetProfile().GetColor(CColorClass::clrSListBK) ); m_Grid.SetItemFgColour( nRow, nCol, AfxGetVariantColor( anParams[nCol], info ) ); if( anParams[nCol] == SLH_DATE ) m_Grid.SetColumnWidth( nCol, 80 ); if( anParams[nCol] == SLH_CODE ) m_Grid.SetColumnWidth( nCol, 60 ); } if( i == nPageCount+5 ) { m_Grid.Invalidate( ); MSG msg; while (::PeekMessage(&msg, NULL, NULL, NULL, PM_NOREMOVE) ) AfxGetApp()->PumpMessage(); } if( pMainFrame ) pMainFrame->SetProgress( 100*i/container.GetSize() ); } // Set Average and Weight Average // SetAverageItem( m_Grid, container, FALSE ); // Sort If Needed if( -1 != m_nColSort ) { LPARAM lParam = m_Grid.GetItemData( 0, m_nColSort ); if( lParam >= 0 ) { CStockContainer::m_pSortContainer = &container; container.m_nSortVariantID = lParam; container.m_bSortAscend = m_bSortAscend; m_Grid.SortItems( ItemCompareFunc, 0, TRUE ); } } if( pMainFrame ) { pMainFrame->SetProgress( 100 ); pMainFrame->HideProgressBar( ); pMainFrame->SetMessageText( IDS_MAINFRAME_FINISHED ); pMainFrame->SetMessageText( IDS_HELPTIP_SLIST ); } if( m_bFirstUpdate ) m_Grid.AutoSizeColumns( ); else m_Grid.SetColumnWidth( 0, 80 ); m_bFirstUpdate = FALSE; m_Grid.Invalidate( ); SendRequestQuote(TRUE); container.UnLock(); }
BOOL CChildFrame::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class CMainFrame * pMainFrame = AfxGetMainFrame( ); if( WM_SYSKEYDOWN == pMsg->message || WM_SYSKEYUP == pMsg->message || WM_SYSCHAR == pMsg->message ) { if( pMainFrame && VK_F4 == pMsg->wParam ) { pMainFrame->PostMessage( WM_CLOSE ); return TRUE; } } else if( WM_RBUTTONUP == pMsg->message || WM_RBUTTONDOWN == pMsg->message || WM_NCRBUTTONUP == pMsg->message || WM_NCRBUTTONDOWN == pMsg->message ) { CWnd* pWnd = CWnd::FromHandlePermanent(pMsg->hwnd); CView * pView = DYNAMIC_DOWNCAST( CView, pWnd ); if( NULL == pView ) pView = GetActiveView(); UINT nMenuID = 0; if( pView && pView->IsKindOf(RUNTIME_CLASS(CWizardView)) ) nMenuID = IDR_POPUP_WIZARDVIEW; else if( pView && pView->IsKindOf(RUNTIME_CLASS(CSimuView)) ) nMenuID = IDR_POPUP_SIMUVIEW; else if( pView && pView->IsKindOf(RUNTIME_CLASS(CSListView)) ) nMenuID = IDR_POPUP_SLISTVIEW; else if( pView && pView->IsKindOf(RUNTIME_CLASS(CGraphView)) ) { pView->PostMessage(WM_USER_MYRBUTTONDOWN,pMsg->wParam,pMsg->lParam); nMenuID = IDR_POPUP_GRAPHVIEW; } else if( pView && pView->IsKindOf(RUNTIME_CLASS(CRealTimeView)) ) nMenuID = IDR_POPUP_REALTIMEVIEW; else if( pView && pView->IsKindOf(RUNTIME_CLASS(CMultiSortView)) ) nMenuID = IDR_POPUP_MULTISORTVIEW; else if( pView && pView->IsKindOf(RUNTIME_CLASS(CBaseView)) ) nMenuID = IDR_POPUP_BASEVIEW; else if( pView && pView->IsKindOf(RUNTIME_CLASS(CSelectorView)) ) nMenuID = IDR_POPUP_SETTING; else if( pView && pView->IsKindOf(RUNTIME_CLASS(CStrategyView)) ) nMenuID = IDR_POPUP_SIMUVIEW; else if( pView && pView->IsKindOf(RUNTIME_CLASS(CGroupView)) ) nMenuID = IDR_POPUP_SETTING; else if( pView && pView->IsKindOf(RUNTIME_CLASS(CTechsView)) ) nMenuID = IDR_POPUP_SETTING; if( pMainFrame && 0 != nMenuID ) { if( pWnd && WM_RBUTTONUP == pMsg->message ) { CPoint pt; pt.x = LOWORD(pMsg->lParam); pt.y = HIWORD(pMsg->lParam); pWnd->ClientToScreen(&pt); CMenu menu; if( menu.LoadMenu( nMenuID ) ) { CMenu * pMenu = menu.GetSubMenu(0); for( UINT nMenu=0; pMenu && nMenu<pMenu->GetMenuItemCount(); nMenu++ ) { CMenu * pPopupMenu = pMenu->GetSubMenu(nMenu); pMainFrame->InitMenuPopup( pPopupMenu ); } /* ProfUIS Using Code CExtPopupMenuWnd * pPopupWnd = new CExtPopupMenuWnd; VERIFY( pPopupWnd->UpdateFromMenu( pMainFrame->GetSafeHwnd(), &menu, true, true ) ); VERIFY( pPopupWnd->TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt.x, pt.y, pMainFrame->GetSafeHwnd() ) ); */ VERIFY( pMenu->TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt.x, pt.y, pMainFrame ) ); } } return TRUE; } } /* ProfUIS Using Code if( pMainFrame && pMainFrame->m_wndMenuBar.TranslateMainFrameMessage(pMsg) ) return TRUE; */ return CMDIChildWnd::PreTranslateMessage(pMsg); }
BOOL CPPageBase::OnApply() { AfxGetMainFrame()->PostMessage(WM_SAVESETTINGS); return __super::OnApply(); }
BOOL CALLBACK LoadProgram( HWND hWnd, int nMinProgress, int nMaxProgress ) { int nMin = nMinProgress; int nMax = nMaxProgress; int nRange = nMaxProgress-nMinProgress; CStkUIApp * pApp = AfxGetStkUIApp(); if( NULL == pApp ) return FALSE; CStaticDoc * pStaticDoc = pApp->GetStaticDoc(); CMainFrame * pMainFrame = AfxGetMainFrame(); HINSTANCE hInstanceOld = AfxGetResourceHandle(); AfxSetResourceHandle( AfxGetInstanceHandle() ); SendMessage( hWnd, WM_USER_STARTUP_PROGRESS, nMin, 0 ); AfxGetStockContainer().Load( &AfxGetDB(), NULL, NULL ); AfxGetDomainContainer().Load( AfxGetProfile().GetDomainFile() ); AfxGetGroupContainer().Load( AfxGetProfile().GetGroupFile() ); SendMessage( hWnd, WM_USER_STARTUP_PROGRESS, nMin+nRange*4/30, 0 ); pMainFrame->m_SearchBox.InitStocks( TRUE, TRUE, TRUE ); //pMainFrame->m_DateBox.InitDates( ); SendMessage( hWnd, WM_USER_STARTUP_PROGRESS, nMin+nRange*8/30, 0 ); // Open Simulation Strategy if( NULL == pApp->GetFirstStrategyPosition() ) { if( 0 == pApp->OpenLastOpenedStrategy( ) ) pApp->OpenDefaultStrategy( ); } SendMessage( hWnd, WM_USER_STARTUP_PROGRESS, nMin+nRange*12/30, 0 ); // Show Views //if( !pStaticDoc->GetViewIfExist( RUNTIME_CLASS(CWizardView) ) ) // pStaticDoc->ShowStaticView( RUNTIME_CLASS(CWizardView), TRUE ); //SendMessage( hWnd, WM_USER_STARTUP_PROGRESS, nMin+nRange*14/30, 0 ); //if( !pStaticDoc->GetViewIfExist( RUNTIME_CLASS(CSimuView) ) ) // pStaticDoc->ShowStaticView( RUNTIME_CLASS(CSimuView), TRUE ); //SendMessage( hWnd, WM_USER_STARTUP_PROGRESS, nMin+nRange*16/30, 0 ); if( !pStaticDoc->GetViewIfExist( RUNTIME_CLASS(CSListView) ) ) pStaticDoc->ShowStaticView( RUNTIME_CLASS(CSListView), TRUE ); SendMessage( hWnd, WM_USER_STARTUP_PROGRESS, nMin+nRange*18/30, 0 ); //if( !pStaticDoc->GetViewIfExist( RUNTIME_CLASS(CRealTimeView) ) ) // pStaticDoc->ShowStaticView( RUNTIME_CLASS(CRealTimeView), TRUE ); //SendMessage( hWnd, WM_USER_STARTUP_PROGRESS, nMin+nRange*20/30, 0 ); //if( !pStaticDoc->GetViewIfExist( RUNTIME_CLASS(CMultiSortView) ) ) // pStaticDoc->ShowStaticView( RUNTIME_CLASS(CMultiSortView), TRUE ); //SendMessage( hWnd, WM_USER_STARTUP_PROGRESS, nMin+nRange*22/30, 0 ); //if( !pStaticDoc->GetViewIfExist( RUNTIME_CLASS(CGraphView) ) ) // pStaticDoc->ShowStaticView( RUNTIME_CLASS(CGraphView), TRUE ); //SendMessage( hWnd, WM_USER_STARTUP_PROGRESS, nMin+nRange*24/30, 0 ); //if( !pStaticDoc->GetViewIfExist( RUNTIME_CLASS(CBaseView) ) ) // pStaticDoc->ShowStaticView( RUNTIME_CLASS(CBaseView), TRUE ); //SendMessage( hWnd, WM_USER_STARTUP_PROGRESS, nMin+nRange*26/30, 0 ); //if( !pStaticDoc->GetViewIfExist( RUNTIME_CLASS(CInfoView) ) ) // pStaticDoc->ShowStaticView( RUNTIME_CLASS(CInfoView), TRUE ); //SendMessage( hWnd, WM_USER_STARTUP_PROGRESS, nMin+nRange*28/30, 0 ); //if( !pStaticDoc->GetViewIfExist( RUNTIME_CLASS(CSelectorView) ) ) // pStaticDoc->ShowStaticView( RUNTIME_CLASS(CSelectorView), TRUE ); AfxSwitchToStaticView( RUNTIME_CLASS(CSListView) ); AfxGetProfile().SetCurrentStock( STKLIB_CODE_SZZS, FALSE ); pMainFrame->m_SearchBox.SetCurrentWindowText( ); //pMainFrame->m_DateBox.SetWindowPos(NULL,0,0,135,200,SWP_NOMOVE|SWP_SHOWWINDOW|SWP_NOZORDER|SWP_NOREDRAW); AfxBeginThread( LoadKDataCacheMain, NULL, THREAD_PRIORITY_NORMAL); SendMessage( hWnd, WM_USER_STARTUP_PROGRESS, nMax, 0 ); AfxSetResourceHandle( hInstanceOld ); return TRUE; }
void CSListView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) { // TODO: Add your specialized code here and/or call the base class if( UPDATE_HINT_SLISTVIEW != lHint ) return; if( IsWindowVisible() ) SetFocus( ); int nColumnCount = m_Grid.GetColumnCount(); if( nColumnCount <= 0 ) return; if( GetParentFrame()->GetSafeHwnd() != AfxGetMainFrame()->GetActiveFrame()->GetSafeHwnd() ) { m_bShouldUpdate = TRUE; return; } m_bShouldUpdate = FALSE; CStockContainer & container = AfxGetSListStockContainer(); container.Lock(); m_Grid.DeleteNonFixedRows(); // Progress CUIntArray anParams; anParams.SetSize( 0, nColumnCount ); for( int nCol=0; nCol < nColumnCount; nCol ++ ) { LPARAM lParam = m_Grid.GetItemData( 0, nCol ); anParams.Add( lParam ); } CRect rectClient; GetClientRect( &rectClient ); int nPageCount = 1 + rectClient.Height() / abs(m_Grid.GetFixedRowHeight()) + 1; /** disabled for( int i=0; i<container.GetSize(); i++ ) { CStockInfo & info = container.GetStockInfoByID(i); int nRow = m_Grid.InsertRow( info.GetStockName() ); m_Grid.SetItemData( nRow, 0, i ); for( int nCol=0; nCol<anParams.GetSize(); nCol++ ) { m_Grid.SetItemFormat( nRow, nCol, DT_CENTER|DT_VCENTER|DT_SINGLELINE ); m_Grid.SetItemText( nRow, nCol, AfxGetVariantDispString( anParams[nCol], info, &container ) ); m_Grid.SetItemBkColour( nRow, nCol, AfxGetProfile().GetColor(CColorClass::clrSListBK) ); m_Grid.SetItemFgColour( nRow, nCol, AfxGetVariantColor( anParams[nCol], info ) ); if( anParams[nCol] == SLH_DATE ) m_Grid.SetColumnWidth( nCol, 80 ); } if( i == nPageCount+5 ) { m_Grid.Invalidate( ); MSG msg; while (::PeekMessage(&msg, NULL, NULL, NULL, PM_NOREMOVE) ) AfxGetApp()->PumpMessage(); } if( pMainFrame ) pMainFrame->SetProgress( 100*i/container.GetSize() ); } // Set Average and Weight Average SetAverageItem( m_Grid, container, FALSE ); // Sort If Needed if( -1 != m_nColSort ) { LPARAM lParam = m_Grid.GetItemData( 0, m_nColSort ); if( lParam >= 0 ) { CStockContainer::m_pSortContainer = &container; container.m_nSortVariantID = lParam; container.m_bSortAscend = m_bSortAscend; m_Grid.SortItems( ItemCompareFunc, 0, TRUE ); } } */ for(int i= 0;i<1;i++) { int nRow = m_Grid.InsertRow( "sz002376"); m_Grid.SetItemData( nRow, 0, i ); const char * paramValues [] = {"新北洋","sz002376","1000","1000","1000","17.74","19.08","17740","-1340.0"}; for( int nCol=0; nCol<9; nCol++ ) { m_Grid.SetItemFormat( nRow, nCol, DT_CENTER|DT_VCENTER|DT_SINGLELINE ); m_Grid.SetItemText( nRow, nCol, paramValues[nCol] ); m_Grid.SetItemBkColour( nRow, nCol, AfxGetProfile().GetColor(CColorClass::clrSListBK) ); //m_Grid.SetItemFgColour( nRow, nCol, ); if( anParams[nCol] == SLH_DATE ) m_Grid.SetColumnWidth( nCol, 80 ); } } int nRow = m_Grid.InsertRow( "summary"); //m_Grid.SetItemData( nRow, 0, 1 ); const char * sumValues [] = {"","","","","","","合计(人民币)","17740","-1340.0"}; for( int ic=0; ic<9; ic++ ) { m_Grid.SetItemFormat( nRow, ic, DT_CENTER|DT_VCENTER|DT_SINGLELINE ); m_Grid.SetItemText( nRow, ic, sumValues[ic] ); m_Grid.SetItemBkColour( nRow, 0, AfxGetProfile().GetColor(CColorClass::clrSListBK) ); } nRow = m_Grid.InsertRow( "blank"); m_Grid.SetItemText( nRow, 0, "" ); m_Grid.SetItemBkColour( nRow, 0, AfxGetProfile().GetColor(CColorClass::clrSListBK) ); //m_Grid.SetItemData( nRow, 0, 1 ); nRow = m_Grid.InsertRow( "allheader"); const char * allValues [] = {"币种","资金余额","可用资金","可取资金","证券市值","资产总值","","",""}; for( ic=0; ic<9; ic++ ) { m_Grid.SetItemFormat( nRow, ic, DT_CENTER|DT_VCENTER|DT_SINGLELINE ); m_Grid.SetItemText( nRow, ic, allValues[ic] ); m_Grid.SetItemBkColour( nRow, ic, AfxGetProfile().GetColor(CColorClass::clrSListBK) ); m_Grid.SetItemFgColour( nRow, ic, 0x00ff0000 ); LOGFONT *pfont = m_Grid.GetItemFont(nRow,ic); pfont->lfWeight = 700; m_Grid.SetItemFont(nRow,ic,pfont); } nRow = m_Grid.InsertRow( "alldata"); const char * alldataValues [] = {"人民币","2163.99","2163.99","2163.99","17740","19903.99","","",""}; for( ic=0; ic<9; ic++ ) { m_Grid.SetItemFormat( nRow, ic, DT_CENTER|DT_VCENTER|DT_SINGLELINE ); m_Grid.SetItemText( nRow, ic, alldataValues[ic] ); m_Grid.SetItemBkColour( nRow, ic, AfxGetProfile().GetColor(CColorClass::clrSListBK) ); } if( m_bFirstUpdate ) m_Grid.AutoSizeColumns( ); else m_Grid.SetColumnWidth( 0, 80 ); m_bFirstUpdate = FALSE; m_Grid.Invalidate( ); //SendRequestQuote(TRUE); container.UnLock(); }
// 快捷键 void AfxExecuteAccelerator( UINT nAcce ) { HWND hWnd = AfxGetMainFrame()->GetSafeHwnd(); switch( nAcce ) { case ACCE_01: // 热键F1 ::PostMessage( hWnd, WM_COMMAND, ID_REALTIME_REPORTDETAIL, 0 ); break; case ACCE_02: // 热键F2 ::PostMessage( hWnd, WM_COMMAND, ID_VIEW_SLIST, 0 ); break; case ACCE_03: // 热键F3 ::PostMessage( hWnd, WM_COMMAND, ID_REALTIME_VIEWSZZS, 0 ); break; case ACCE_04: // 热键F4 ::PostMessage( hWnd, WM_COMMAND, ID_REALTIME_VIEWSZNCZ, 0 ); break; case ACCE_05: // 热键F5 { CView * pView = AfxGetStaticDoc()->GetActiveView(); if( pView && pView->IsKindOf( RUNTIME_CLASS(CGraphView) ) ) ::PostMessage( hWnd, WM_COMMAND, ID_VIEW_REALTIME, 0 ); else ::PostMessage( hWnd, WM_COMMAND, ID_VIEW_GRAPH, 0 ); } break; case ACCE_06: // 热键F6 ::PostMessage( hWnd, WM_COMMAND, ID_SLIST_GROUPSELF, 0 ); break; case ACCE_07: // 热键F7 ::PostMessage( hWnd, WM_COMMAND, ID_VIEW_MULTISORT, 0 ); break; case ACCE_08: // 热键F8 break; case ACCE_09: // 热键F9 break; case ACCE_10: // 热键F10 ::PostMessage( hWnd, WM_COMMAND, ID_VIEW_F10, 0 ); break; case ACCE_1: // 上A报价 ::PostMessage( hWnd, WM_COMMAND, ID_SLIST_SHAA, 0 ); break; case ACCE_2: // 上B报价 ::PostMessage( hWnd, WM_COMMAND, ID_SLIST_SHAB, 0 ); break; case ACCE_3: // 深A报价 ::PostMessage( hWnd, WM_COMMAND, ID_SLIST_SZNA, 0 ); break; case ACCE_4: // 深B报价 ::PostMessage( hWnd, WM_COMMAND, ID_SLIST_SZNB, 0 ); break; case ACCE_5: // 上债报价 ::PostMessage( hWnd, WM_COMMAND, ID_SLIST_SHABOND, 0 ); break; case ACCE_6: // 深债报价 ::PostMessage( hWnd, WM_COMMAND, ID_SLIST_SZNBOND, 0 ); break; case ACCE_61: // 上A涨跌 ::PostMessage( hWnd, WM_COMMAND, ID_SLIST_SHAASORTDP, 0 ); break; case ACCE_62: // 上B涨跌 ::PostMessage( hWnd, WM_COMMAND, ID_SLIST_SHABSORTDP, 0 ); break; case ACCE_63: // 深A涨跌 ::PostMessage( hWnd, WM_COMMAND, ID_SLIST_SZNASORTDP, 0 ); break; case ACCE_64: // 深B涨跌 ::PostMessage( hWnd, WM_COMMAND, ID_SLIST_SZNBSORTDP, 0 ); break; case ACCE_65: // 上债涨跌 ::PostMessage( hWnd, WM_COMMAND, ID_SLIST_SHABONDSORTDP, 0 ); break; case ACCE_66: // 深债涨跌 ::PostMessage( hWnd, WM_COMMAND, ID_SLIST_SZNBONDSORTDP, 0 ); break; case ACCE_71: // 上证信息 break; case ACCE_72: // 深证信息 break; case ACCE_73: // 券商信息 break; case ACCE_81: // 上A综合 ::PostMessage( hWnd, WM_COMMAND, ID_REALTIME_MSSZAG, 0 ); break; case ACCE_82: // 上B综合 ::PostMessage( hWnd, WM_COMMAND, ID_REALTIME_MSSZBG, 0 ); break; case ACCE_83: // 深A综合 ::PostMessage( hWnd, WM_COMMAND, ID_REALTIME_MSSZNAG, 0 ); break; case ACCE_84: // 深B综合 ::PostMessage( hWnd, WM_COMMAND, ID_REALTIME_MSSZNBG, 0 ); break; case ACCE_85: // 上债综合 ::PostMessage( hWnd, WM_COMMAND, ID_REALTIME_MSSZZQ, 0 ); break; case ACCE_86: // 深债综合 ::PostMessage( hWnd, WM_COMMAND, ID_REALTIME_MSSZNZQ, 0 ); break; case ACCE_LBDK: // 量比多空 ::PostMessage( hWnd, WM_COMMAND, ID_REALTIME_LBDK, 0 ); break; case ACCE_MMLD: // 买卖力道 ::PostMessage( hWnd, WM_COMMAND, ID_REALTIME_MMLD, 0 ); break; default: ASSERT( FALSE ); } }
void CSListView::OnSelchangeWorktab(NMHDR* pNMHDR, LRESULT* pResult) { int nCur = m_wndWorkTab.GetCurtab(); CRect rect = m_wndWorkTab.GetTabRect( nCur ); CMenu menu; switch( nCur ) { case SL_WORKTAB_CLASS: /* if( menu.LoadMenu( IDR_MENU_SLISTBARCLASS ) ) { CMenu* pPopupMenu = menu.GetSubMenu(0); if( pPopupMenu ) pPopupMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_BOTTOMALIGN | TPM_LEFTBUTTON , rect.left+3, rect.top+6, AfxGetMainFrame() ); }*/ break; case SL_WORKTAB_A: SetCurrentStatus( CStockContainer::typeA, NULL, -1 ); break; case SL_WORKTAB_SZNB: SetCurrentStatus( CStockContainer::typeClassSznb, NULL, -1 ); break; case SL_WORKTAB_SHB: SetCurrentStatus( CStockContainer::typeClassShab, NULL, -1 ); break; case SL_WORKTAB_BOND: SetCurrentStatus( CStockContainer::typeBond, NULL, -1 ); break; case SL_WORKTAB_FUND: SetCurrentStatus( CStockContainer::typeFund, NULL, -1 ); break; case SL_WORKTAB_SELF: { CString strSelf; strSelf.LoadString( IDS_DOMAIN_SELF ); SetCurrentStatus( CStockContainer::typeGroup, strSelf, -1 ); } break; case SL_WORKTAB_GROUP: if( menu.LoadMenu( IDR_MENU_SLISTBARGROUP ) ) { CMenu* pPopupMenu = menu.GetSubMenu(0); if( pPopupMenu ) pPopupMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_BOTTOMALIGN | TPM_LEFTBUTTON , rect.left+3, rect.top+6, AfxGetMainFrame() ); } break; case SL_WORKTAB_DOMAIN: if( menu.LoadMenu( IDR_MENU_SLISTBARDOMAIN ) ) { CMenu* pPopupMenu = menu.GetSubMenu(0); if( pPopupMenu ) pPopupMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_BOTTOMALIGN | TPM_LEFTBUTTON , rect.left+3, rect.top+6, AfxGetMainFrame() ); } break; default:; } *pResult = 0; }