//右键弹出处理 void CComputerListView::OnContextMenu(CWnd*, CPoint point) { m_SelectRows.RemoveAll(); CMenu menu; CBCGPGridRow* pRow = GetGridCtrl()->GetCurSel(); if (pRow != NULL)//存在选中的子行 { CList<CBCGPGridItem*, CBCGPGridItem*> lstSelected; GetGridCtrl()->GetSelectedItems(lstSelected);//多重选择队列 POSITION pos = lstSelected.GetHeadPosition();//第一个 while (pos != NULL) { CBCGPGridItem* pItem = lstSelected.GetNext(pos);//下一个 m_SelectRows.Add((UINT)pItem->GetParentRow()->GetData());//保存选中的序号 } SendMessage(WM_LBUTTONUP);//弹起 VERIFY(menu.LoadMenu(IDR_COMPUTER_MENU));//载入 CMenu* pPopup = menu.GetSubMenu(0);//第一个子菜单 ASSERT(pPopup != NULL); #ifndef __USING_INTER_RESOURCE HMENU hTmp = pPopup->GetSubMenu(6)->GetSafeHmenu(); pPopup->ModifyMenu((UINT_PTR)hTmp,MF_POPUP,(UINT_PTR)hTmp,LOAD_STRING(IDS_REMOTE_OPERATION)); #endif //弹出菜单 theApp.GetContextMenuManager()->ShowPopupMenu(pPopup->Detach(), point.x, point.y, this, TRUE); } else { //扫描鼠标位置,点击在列栏上,才弹出此菜单 CRect rect; m_pWndGridCtrl->GetClientRect(rect); rect.bottom = 21; //栏高度大概为21个像素 ClientToScreen(rect); if (rect.PtInRect(point))//点击在栏上 { VERIFY(menu.LoadMenu(IDR_MENU_COLUMN));//载入列菜单 CMenu* pPopup = menu.GetSubMenu(0); ASSERT(pPopup != NULL); for (INT i = 0; i < GetGridCtrl()->GetColumnCount(); i++)//列枚举 {//动态插入与列项有关的菜单 pPopup->InsertMenu(i, MF_BYPOSITION, IDM_MINCOLUMNCMD + i, GetGridCtrl()->GetColumnName(i)); pPopup->CheckMenuItem(i, MF_BYPOSITION | (GetGridCtrl()->GetColumnVisible(i) ? MF_CHECKED : MF_UNCHECKED)); } theApp.GetContextMenuManager()->ShowPopupMenu(pPopup->Detach(), point.x, point.y, this, TRUE); } } }
void CComputerListView::OnUnlockScreen() { CUnlockScreenDlg dlg; if (dlg.DoModal() != IDOK) { return; } for (INT i = 0; i < GetGridCtrl()->GetRowCount(); i++) { if (!GetGridCtrl()->IsRowSelected(i)) { continue; } CBCGPGridRow* pRow = GetGridCtrl()->GetRow(i); if (!CLocalServer::GetInstance()->ComputerList.IsInvaildIndex(pRow->GetData())) { CComputerInfo& ComputerInfo = CLocalServer::GetInstance()->ComputerList.GetComputer(pRow->GetData()); if (ComputerInfo.GetComputerStatus() == CComputerInfo::ECS_LOCKED) { CLocalServer::GetInstance()->LocalUnlockScreen(pRow->GetData(), dlg.GetPwd()); } } } }
void CComputerListView::AdjustLayout() {//重新更新位置 if (GetGridCtrl()->GetSafeHwnd() != NULL) { CRect rectClient; GetClientRect(rectClient); GetGridCtrl()->SetWindowPos (NULL, 0, 0, rectClient.Width(), rectClient.Height(), SWP_NOACTIVATE | SWP_NOZORDER); } }
//显示列 void CComputerListView::OnShowColumn(UINT id) { INT nIndex = id - IDM_MINCOLUMNCMD;//列号 if (nIndex >= 0 && nIndex < GetGridCtrl()->GetColumnCount()) {//设置列的显示 GetGridCtrl()->SetColumnVisible(nIndex, !GetGridCtrl()->GetColumnVisible(nIndex)); GetGridCtrl()->AdjustLayout();//更新 } }
void CActiveMemberView::OnUpdateRebilling(CCmdUI *pCmdUI) { CList <CBCGPGridItem*,CBCGPGridItem*> arrMember; GetGridCtrl()->GetSelectedItems(arrMember); pCmdUI->Enable(arrMember.GetCount() > 0); }
void CMailView::UpdateCaptionText () { CBCGPOrganizerDoc* pDoc = GetDocument (); if (pDoc == NULL || pDoc->GetMode () != CBCGPOrganizerDoc::e_ModeMail) { return; } CMainFrame* pFrame = DYNAMIC_DOWNCAST(CMainFrame, AfxGetMainWnd ()); if (pFrame != NULL) { CString str; CBCGPGridCtrl* pGridCtrl = GetGridCtrl (); if (pGridCtrl != NULL) { CBCGPGridRow* pRow = pGridCtrl->GetCurSel (); if (pRow != NULL && !pRow->IsGroup ()) { str = _T("From: ") + pRow->GetItem (3)->FormatItem (); str += _T("; Subject: ") + pRow->GetItem (4)->FormatItem (); } } if (str.IsEmpty ()) { str = _T(" "); } pFrame->SetCaptionText (str); } }
void CActiveMemberView::OnContextMenu(CWnd* /*pWnd*/, CPoint point) { CMenu menu; VERIFY(menu.LoadMenu(IDR_ACTIVEMEMBER_MENU));//载入 CBCGPGridRow* pRow = GetGridCtrl()->GetCurSel(); if (pRow != NULL)//存在选中的子行 { SendMessage(WM_LBUTTONUP); CMenu* pPopup = menu.GetSubMenu(0);//第一个子菜单 if (pPopup) { // 2012/03/21-8238-gxx: if (CNetBarConfig::GetInstance()->GetRealNamePassword() == 4 ) { pPopup->RemoveMenu(IDM_CHECKIN, MF_BYCOMMAND); } theApp.GetContextMenuManager()->ShowPopupMenu(pPopup->Detach(), point.x, point.y, this, TRUE); } } else { CMenu* pPopup = menu.GetSubMenu(1);//第2个子菜单 theApp.GetContextMenuManager()->ShowPopupMenu(pPopup->Detach(), point.x, point.y, this, TRUE); } }
void CActiveMemberView::OnModifyRemark() { CBCGPGridRow* pRow = GetGridCtrl()->GetCurSel(); if (!pRow) { return; } UINT nMemberID = pRow->GetData(); CActiveMember ActiveMember; if (!CLocalServer::GetInstance()->ActiveMemberList.GetActiveMember(nMemberID, ActiveMember)) { return; } CDlgInputParam dlgInput(this); dlgInput.InitParam(LOAD_STRING(IDS_MODIFY_REMARK),LOAD_STRING(IDS_REMARK),ActiveMember.GetRemark()); if (dlgInput.DoModal() == IDOK) { ActiveMember.SetRemark( dlgInput.m_strParam ); CLocalServer::GetInstance()->ActiveMemberList.UpdateActiveMember(ActiveMember,TRUE); pRow->GetItem(14)->SetValue(ActiveMember.GetRemark().GetString(), TRUE); } }
void CComputerListView::OnPowerOn() { //多选启动 for (INT ii = 0; ii < GetGridCtrl()->GetRowCount(); ii++) { if (GetGridCtrl()->IsRowSelected(ii)) { CComputerInfo ComputerInfo; GetComputerInfoFromRow(ComputerInfo, ii); if (!ComputerInfo.HasClient()) { CBCGPGridRow* pRow = GetGridCtrl()->GetRow(ii); CLocalServer::GetInstance()->LocalStartupComputer(pRow->GetData()); } } } }
//拷屏 void CComputerListView::OnSnapScreen() { if (CNetBarConfig::GetInstance()->GetForbidCaptureScreen()) { CDlgBossPwd dlg; if (dlg.DoModal() != IDOK) return; } CBCGPGridRow* pRow = GetGridCtrl()->GetCurSel(); if (pRow != NULL) CLocalServer::GetInstance()->LocalCaptureScreen(pRow->GetData()); }
void CComputerListView::OnReboot() {//重新启动 CComputerInfo ComputerInfo; if (GetCurComputerInfo(ComputerInfo)) { for (INT ii = 0; ii < GetGridCtrl()->GetRowCount(); ii++) { if (GetGridCtrl()->IsRowSelected(ii)) { CComputerInfo ComputerInfo; GetComputerInfoFromRow(ComputerInfo, ii); if (ComputerInfo.HasClient()) { CBCGPGridRow* pRow = GetGridCtrl()->GetRow(ii); CLocalServer::GetInstance()->LocalShutdownComputer(pRow->GetData(), TRUE); } } } } }
void CComputerListView::OnPowerOff() { //多选关闭 for (INT ii = 0; ii < GetGridCtrl()->GetRowCount(); ii++) { if (GetGridCtrl()->IsRowSelected(ii)) { CBCGPGridRow* pRow = GetGridCtrl()->GetRow(ii); if (pRow != NULL) { CComputerInfo ComputerInfo; GetComputerInfoFromRow(ComputerInfo, ii); if (ComputerInfo.HasClient()) { INT_PTR nIndex = pRow->GetData(); CLocalServer::GetInstance()->LocalShutdownComputer(pRow->GetData(), FALSE); } } } } }
BOOL CActiveMemberView::GetCurActiveMember(CActiveMember& ActiveMember) { CBCGPGridRow* pRow = GetGridCtrl()->GetCurSel(); if (pRow != NULL) { UINT nMemberId = pRow->GetData(); return ((CActiveMemberGrid*)m_pWndGridCtrl)->GetActiveMemberList()->GetActiveMember(nMemberId, ActiveMember); } return FALSE; }
/** * @brief "Associate VP",为震源分配炮点 * @note 打开一个可指定要(通过输入其 Shot Number)分配给该震源的 VP 的对话框。这与用鼠标右键点击放炮表内 部所调出的“Start Seismonitor with Vib Source”命令效果基本相同。 * @param void * @return void */ void CActiveSourceWnd::OnActivesourceAssociatevp() { CBCGPGridCtrl* pGridCtrl = GetGridCtrl(); if(NULL==pGridCtrl) return; // 如果没有选择震源或者网格中某一行,则不处理 CBCGPGridRow* pRow= pGridCtrl->GetCurSel(); if(NULL==pRow) return; CMainFrame* pFrm = (CMainFrame*)AfxGetMainWnd(); pFrm->OnAssociatevp(pRow->GetData()); }
/** * @brief "Associate SPL & SPN",为震源分配炮点 * @note 与 Associate VP 命令效果基本相同,但您不必输入要分配给该震源的 VP Shot Number,而是必须输 入其 SPL (震源点测线) 和 SPN (震源点号)。 * @param void * @return void */ void CActiveSourceWnd::OnActivesourceAssociatesplspn() { CBCGPGridCtrl* pGridCtrl = GetGridCtrl(); if(NULL==pGridCtrl) return; // 如果没有选择震源或者网格中某一行,则不处理 CBCGPGridRow* pRow= pGridCtrl->GetCurSel(); if(NULL==pRow) return; CMainFrame* pFrm = (CMainFrame*)AfxGetMainWnd(); // 调用主框架处理函数,通过SPL和SPN找到响应的炮点 pFrm->OnAssociateSPLSPN(pRow->GetData()); }
/** * @brief 响应鼠标在震源网格中右键消息,显示右键菜单 * @note 如果选中某一个震源,则响应消息,显示右键菜单。菜单内容包括停止某一震源、为震源分配炮点编号、 为某震源通过震源点测线号及道号来确定炮点、清除Ready状态等 * @param CWnd* pWnd,窗口指针 * @param CPoint point,鼠标坐标 * @return void */ void CActiveSourceWnd::OnContextMenu(CWnd* pWnd, CPoint point) { // TODO: 在此处添加消息处理程序代码 CBCGPGridCtrl* pGridCtrl = GetGridCtrl(); if(NULL==pGridCtrl) return; // 如果没有选择震源或者网格中某一行,则不弹出菜单 CBCGPGridRow* pRow= pGridCtrl->GetCurSel(); if(NULL==pRow) return; CMenu menu; // 加载右击菜单 VERIFY(menu.LoadMenu (IDR_POPUP_ACTIVESOURCE)); CMenu* pPopup = menu.GetSubMenu(0); ASSERT(pPopup != NULL); // CMainFrame* pFrm = (CMainFrame*)AfxGetMainWnd(); CString strTemp; // 每一行的数据等于震源的编号 strTemp.Format(_T("Source %d"),pRow->GetData()); // pPopup->ModifyMenu(MF_BYCOMMAND,MF_STRING,ID_ACTIVESOURCE_SOURCE,strTemp); // pPopup->ModifyMenu(MF_BYPOSITION,MF_STRING,0,_T("AAAAA")); // 更改第一个菜单的标题,显示为“Source”+震源编号 MENUITEMINFO info; info.cbSize = sizeof (MENUITEMINFO); // must fill up this field info.fMask = MIIM_STRING; // get the state of the menu item info.dwTypeData = strTemp.GetBuffer(); info.cch = strTemp.GetLength(); VERIFY(pPopup->SetMenuItemInfo(ID_ACTIVESOURCE_SOURCE, &info,FALSE)); strTemp.ReleaseBuffer(); /* int nSourceState = pRow->GetItem(0)->GetImage(); if(nSourceState==SHOTSOURCE_FOCUS) { info.cbSize = sizeof (MENUITEMINFO); // must fill up this field info.fMask = MIIM_STATE; info.fState = MFS_DISABLED; // 如果正处于采集过程中,禁止更改放炮点 pPopup->SetMenuItemInfo(ID_ACTIVESOURCE_DISASSOCIATEVP, &info,FALSE); pPopup->SetMenuItemInfo(ID_ACTIVESOURCE_ASSOCIATEVP, &info,FALSE); pPopup->SetMenuItemInfo(ID_ACTIVESOURCE_ASSOCIATESPLSPN, &info,FALSE); // pPopup->EnableMenuItem(ID_ACTIVESOURCE_DISASSOCIATEVP,MF_BYCOMMAND|MF_DISABLED); // pPopup->EnableMenuItem(ID_ACTIVESOURCE_ASSOCIATEVP,MF_BYCOMMAND|MF_DISABLED); // pPopup->EnableMenuItem(ID_ACTIVESOURCE_ASSOCIATESPLSPN,MF_BYCOMMAND|MF_DISABLED); }*/ CBCGPPopupMenu* pPopupMenu = new CBCGPPopupMenu; pPopupMenu->Create(this, point.x, point.y,pPopup->Detach(),FALSE,TRUE); }
//通过行序号得到终端信息 BOOL CComputerListView::GetComputerInfoFromRow(CComputerInfo & ComputerInfo, INT RowIndex) { CBCGPGridRow* pRow = GetGridCtrl()->GetRow(RowIndex); if (pRow != NULL) { if (!CLocalServer::GetInstance()->ComputerList.IsInvaildIndex(pRow->GetData())) { ComputerInfo = CLocalServer::GetInstance()->ComputerList.GetComputer(pRow->GetData()); return TRUE; } } return FALSE; }
void CComputerListView::OnBundtimeonline() { CBCGPGridRow* pRow = GetGridCtrl()->GetCurSel(); if (pRow != NULL) { if (!CLocalServer::GetInstance()->ComputerList.IsInvaildIndex(pRow->GetData())) { CComputerInfo ComputerInfo = CLocalServer::GetInstance()->ComputerList.GetComputer(pRow->GetData()); CDlgBundleTime BundleTimeDlg; BundleTimeDlg.SetNetId(ComputerInfo.GetNetId(), TRUE); BundleTimeDlg.DoModal(); } } }
/** * @brief "Disassociate VP",暂停震源使用 * @note 不再希望继续使用某一震源,或想要将其置入待命状态,或想要手工分配给它另一 个 VP,则在Active Source窗口右键菜单中选择Disassociate VP,暂停该震源的施工。 在滑动扫描等模式下以前分配给该未用震源的剩余 VP 将被忽略。 * @param void * @return void */ void CActiveSourceWnd::OnActivesourceDisassociatevp() { CBCGPGridCtrl* pGridCtrl = GetGridCtrl(); if(NULL==pGridCtrl) return; // 如果没有选择震源或者网格中某一行,则不处理 CBCGPGridRow* pRow= pGridCtrl->GetCurSel(); if(NULL==pRow) return; CMainFrame* pFrm = (CMainFrame*)AfxGetMainWnd(); // 调用主框架处理函数,通知服务器停止放炮,删除放炮管理对象 CShotSource* pSource = pFrm->OnDisassociatevp(pRow->GetData()); // 重新加载震源,并删除对应的炮点属性 if(pSource) LoadShotSource(pSource,pRow->GetRowId()); }
void CActiveMemberView::OnRebilling() { CIBAString str; str.LoadString(IDS_ENSURE_REBILLING); if (theApp.IBAMsgBox(str,MB_OKCANCEL|MB_ICONQUESTION)!=IDOK) { return; } CList <CBCGPGridItem*,CBCGPGridItem*> arrMember; GetGridCtrl()->GetSelectedItems(arrMember); if( arrMember.GetCount() > 0) { CShortMsgDlg dlg; int nValid = 0; POSITION pos = arrMember.GetHeadPosition(); while(pos!=NULL) { const CBCGPGridItem* &pItem = arrMember.GetNext(pos); CBCGPGridRow *pRow = pItem->GetParentRow(); UINT nMemberId = pRow->GetData(); INT_PTR nIn = CLocalServer::GetInstance()->ComputerList.Find(nMemberId); if ( nIn!=-1 ) { CActiveMember Act; if (CLocalServer::GetInstance()->ActiveMemberList.GetActiveMember(nMemberId,Act)) { // 发送给指定客户端 CLocalServer::GetInstance()->LocalCheckOutUser(nIn, nMemberId, 3); CIBALog::GetInstance()->WriteFormat(_T("客户端重新计费->PC=%s, memberId=%d"),Act.GetTerminalID(),nMemberId); Act.SetActivationTime(COleDateTime::GetCurrentTime()); CLocalServer::GetInstance()->ActiveMemberList.UpdateActiveMember(Act,TRUE); Refresh(FALSE); } } } } }
//换机 void CComputerListView::OnChangeComputer() { ////////////////查询是否有用户//////////// CBCGPGridRow* pRow = GetGridCtrl()->GetCurSel(); if (pRow == NULL) return; INT_PTR nIndex = pRow->GetData(); if (CLocalServer::GetInstance()->ComputerList.IsInvaildIndex(nIndex)) return; CComputerInfo &ComputerInfo = CLocalServer::GetInstance()->ComputerList.GetComputer(pRow->GetData()); CNDCheckInDlg dlg; dlg.SetCheckIn(FALSE); dlg.SetNetId(ComputerInfo.GetNetId()); dlg.DoModal(); }
/** * @brief 刷新震源的状态图标 * @note 通过每行设定的数据(等于震源的Nb)找到CShotSource* pSource对应的行, 并刷新震源的状态图标,图标位于网格中第一列 * @param CShotSource* pSource,需要刷新显示状态的震源指针 * @return void */ void CActiveSourceWnd::RefrestShotSourceState(CShotSource* pSource) { if(!pSource) return ; CBCGPGridCtrl* pGridCtrl = GetGridCtrl(); if(NULL==pGridCtrl) return ; CBCGPGridRow *pRow=NULL; int nRowCount = pGridCtrl->GetRowCount(); for(int i=0;i<nRowCount;i++) { pRow = pGridCtrl->GetRow(i); // 判断每行的属性数据与震源的编号是否相等 if(pRow->GetData()==pSource->m_dwSourceNb) { pRow->GetItem (0)->SetImage(pSource->m_bySourceState); } } }
/****************************************************************************** 函 数: 输 入: 输 出: 返 回 值: 功 能: 将震源表加载到网格中 修改历史: *******************************************************************************/ void CActiveSourceWnd::LoadShotSources(CShotSources* pShotSrcs) { if(NULL==pShotSrcs) return; CBCGPGridCtrl* pGridCtrl = GetGridCtrl(); if(NULL==pGridCtrl) return; int nCount = pShotSrcs->GetCount(); pGridCtrl->RemoveAll(); CShotSource* pSrc = NULL; for (int nRow = 0; nRow < nCount; nRow++) { pSrc=pShotSrcs->GetShotSource(nRow); if(!pSrc ) continue; LoadShotSource(pSrc); } pGridCtrl->AdjustLayout (); return; }
LRESULT CMailView::OnOpen (WPARAM /*wParam*/, LPARAM /*lParam*/) { CBCGPGridRow* pRow = GetGridCtrl ()->GetCurSel (); if (pRow == NULL || pRow->IsGroup ()) { return 0L; } CMailFrame frame (*pRow, TRUE, this); if (frame.DoModal () != IDOK) { if (frame.IsDeleted ()) { PostMessage (WM_COMMAND, ID_MAIL_REMOVE, 0); } } return 0L; }
/** * @brief 将一条震源加载到网格中 * @note 将一个震源对象属性添加到网格的对应列中,如果nRowNum小于0,则表示向网格中新增加一行; 如果nRowNum大于0,则表示向指定行输出震源对象。 * @param CShotSource* pShotSrc,震源对象指针 * @param int nRowNum,行号 * @return void */ void CActiveSourceWnd::LoadShotSource(CShotSource* pShotSrc,int nRowNum) { if(NULL==pShotSrc) return ; CBCGPGridCtrl* pGridCtrl = GetGridCtrl(); if(NULL==pGridCtrl) return; CBCGPGridRow* pRow=NULL; if(nRowNum<0) { pRow = pGridCtrl->CreateRow (pGridCtrl->GetColumnCount()); pGridCtrl->AddRow(pRow); } else { pRow = pGridCtrl->GetRow(nRowNum); } if(!pRow) return; // 震源属性 pRow->GetItem (0)->SetImage(pShotSrc->m_bySourceState); pRow->GetItem (2)->SetValue (_T("-")); pRow->GetItem (3)->SetValue (LPCTSTR(pShotSrc->m_strLabel)); pRow->GetItem (4)->SetValue (pShotSrc->m_dwSourceIndex); // 空的炮点 pRow->GetItem (5)->SetValue (_T("")); pRow->GetItem (6)->SetValue (_T("-")); pRow->GetItem (7)->SetValue (_T("")); pRow->GetItem (8)->SetValue (_T("")); pRow->GetItem (9)->SetValue (_T("")); pRow->GetItem (10)->SetValue (_T("")); pRow->GetItem (11)->SetValue (_T("")); pRow->GetItem (12)->SetValue (_T("")); pRow->GetItem (13)->SetValue (_T("")); pRow->GetItem (14)->SetValue (_T("")); pRow->GetItem (15)->SetValue (_T("")); pRow->GetItem (16)->SetValue (_T("")); // 设置行的属性数据为震源的编号 pRow->SetData(pShotSrc->m_dwSourceNb); }
void CActiveMemberView::OnSendShortMessage() { CList <CBCGPGridItem*,CBCGPGridItem*> arrMember; GetGridCtrl()->GetSelectedItems(arrMember); if( arrMember.GetCount() > 0) { CShortMsgDlg dlg; int nValid = 0; POSITION pos = arrMember.GetHeadPosition(); while(pos!=NULL) { const CBCGPGridItem* &pItem = arrMember.GetNext(pos); CBCGPGridRow *pRow = pItem->GetParentRow(); UINT nMemberId = pRow->GetData(); INT_PTR nIn = CLocalServer::GetInstance()->ComputerList.Find(nMemberId); if ( nIn!=-1 ) { // 发送给指定客户端 nValid++; dlg.AddReceiver( (UINT)nIn ); } } dlg.SetSendType(1); dlg.DoModal(); } else { CShortMsgDlg dlg; dlg.DoModal(); } }
void CComputerListView::OnPing() { CBCGPGridRow* pRow = GetGridCtrl()->GetCurSel(); if (pRow != NULL) { if (!CLocalServer::GetInstance()->ComputerList.IsInvaildIndex(pRow->GetData())) { CComputerInfo ComputerInfo; if (GetCurComputerInfo(ComputerInfo)) { if (ComputerInfo.HasUser()) //有用户则上报金额 { CLocalServer::GetInstance()->LocalForceUpdateData(pRow->GetData()); return ; } } CLocalServer::GetInstance()->LocalPingClient(pRow->GetData()); } } }
void CMailView::OnUpdateDelete(CCmdUI* pCmdUI) { CBCGPGridRow* pRow = GetGridCtrl ()->GetCurSel (); pCmdUI->Enable (pRow != NULL && !pRow->IsGroup ()); }
/****************************************************************************** 函 数: 输 入: 输 出: 返 回 值: 功 能: 用户选择震源、炮号准备放炮时,将炮号的信息(CShotPoint)写到表格中对应的震源行内 修改历史: *******************************************************************************/ int CActiveSourceWnd::LoadShotPointBySource(CShotSource* pSource, CShotPoint* pShotPoint) { if(!pSource || !pShotPoint) return -1; CBCGPGridCtrl* pGridCtrl = GetGridCtrl(); if(NULL==pGridCtrl) return -1; CBCGPGridRow *pRow=NULL; int nRowCount = pGridCtrl->GetRowCount(); COleVariant oVariant; for(int i=0;i<nRowCount;i++) { pRow = pGridCtrl->GetRow(i); // 判断每行的属性数据与震源的编号是否相等 if(pRow->GetData()==pSource->m_dwSourceNb) { // 装载下一次要放炮的炮点编号 oVariant = (long)pShotPoint->m_dwShotNb + pSource->m_lStep; oVariant.ChangeType(VT_BSTR); pRow->GetItem (2)->SetValue (oVariant); // 装载炮点的数据,编号 oVariant = (long)pShotPoint->m_dwShotNb; oVariant.ChangeType(VT_BSTR); pRow->GetItem (5)->SetValue (oVariant); // Dist min pRow->GetItem (6)->SetValue (_T("-")); // Current Stack pRow->GetItem (7)->SetValue (_T("0")); // SourcePoint Line oVariant = pShotPoint->m_fSourceLine; oVariant.ChangeType(VT_BSTR); pRow->GetItem (8)->SetValue (oVariant); // SourcePoint Number oVariant = pShotPoint->m_fSourceNb; oVariant.ChangeType(VT_BSTR); pRow->GetItem (9)->SetValue (oVariant); // SourcePoint Index oVariant = (long)pShotPoint->m_dwSourcePointIndex; oVariant.ChangeType(VT_BSTR); pRow->GetItem (10)->SetValue (oVariant); // SFL oVariant = (long)pShotPoint->m_dwSpreadSFL; oVariant.ChangeType(VT_BSTR); pRow->GetItem (11)->SetValue (oVariant); // SFN oVariant = (long)pShotPoint->m_dwSpreadSFN; oVariant.ChangeType(VT_BSTR); pRow->GetItem (12)->SetValue (oVariant); // Spread# oVariant = (long)pShotPoint->m_dwSpreadNb; oVariant.ChangeType(VT_BSTR); pRow->GetItem (13)->SetValue (oVariant); // SuperSpread oVariant = (long)pShotPoint->m_dwSuperSpread; oVariant.ChangeType(VT_BSTR); pRow->GetItem (14)->SetValue (oVariant); // ProcessType oVariant = (long)pShotPoint->m_dwProcessNb; oVariant.ChangeType(VT_BSTR); pRow->GetItem (15)->SetValue (oVariant); // Swath oVariant = (long)pShotPoint->m_dwSwathNb; oVariant.ChangeType(VT_BSTR); pRow->GetItem (16)->SetValue (oVariant); return 1; } } return 1; }
void CComputerListView::OnGetLog() { CBCGPGridRow* pRow = GetGridCtrl()->GetCurSel(); if (pRow != NULL) CLocalServer::GetInstance()->LocalGetLog(pRow->GetData()); }