📄 rdddbgdlg.cpp
字号:
// RddDbgDlg.cpp : implementation file
//
#include "stdafx.h"
#include "RddDbg.h"
#include "RddDbgDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CRddDbgDlg dialog
CRddDbgDlg::CRddDbgDlg(CWnd* pParent /*=NULL*/)
: CDialog(CRddDbgDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CRddDbgDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CRddDbgDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CRddDbgDlg)
DDX_Control(pDX, IDC_YXLIST, m_yxlist);
DDX_Control(pDX, IDC_YCLIST, m_yclist);
DDX_Control(pDX, IDC_TAB, m_tab);
DDX_Control(pDX, IDC_SOELIST, m_soelist);
DDX_Control(pDX, IDC_CMDLIST, m_cmdlist);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CRddDbgDlg, CDialog)
//{{AFX_MSG_MAP(CRddDbgDlg)
ON_WM_SIZE()
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB, OnSelchangeTab)
ON_NOTIFY(NM_DBLCLK, IDC_CMDLIST, OnDblclkCmdlist)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CRddDbgDlg message handlers
BOOL CRddDbgDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
WORD wX = GetSystemMetrics(SM_CXSCREEN);
WORD wY = GetSystemMetrics(SM_CYSCREEN);
SetWindowPos(NULL, 0, 0, wX, wY, SWP_NOSIZE | SWP_NOZORDER);
CenterWindow(GetDesktopWindow()); // center to the hpc screen
m_tab.InsertItem( 0, _T("命令列表") );
m_tab.InsertItem( 1, _T("遥测") );
m_tab.InsertItem( 2, _T("遥信") );
m_tab.InsertItem( 3, _T("SOE") );
//命令列表初始化头
m_cmdlist.SetExtendedStyle(LVS_EX_FULLROWSELECT);
m_cmdlist.InsertColumn( 0, L"标识", LVCFMT_CENTER, wX/8+6, 0 );
m_cmdlist.InsertColumn( 1, L"命令名", LVCFMT_CENTER, wX/8*3-20, 0 );
m_cmdlist.InsertColumn( 2, L"命令状态", LVCFMT_CENTER, wX/2+8, 0 );
InitCmdList();
//遥测列表头
m_yclist.SetExtendedStyle(LVS_EX_FULLROWSELECT);
m_yclist.InsertColumn( 0, L"路号", LVCFMT_CENTER, 40, 0 );
m_yclist.InsertColumn( 1, L"电压", LVCFMT_CENTER, 60, 0 );
m_yclist.InsertColumn( 2, L"电流", LVCFMT_CENTER, 60, 0 );
m_yclist.InsertColumn( 3, L"有功", LVCFMT_CENTER, 60, 0 );
m_yclist.InsertColumn( 4, L"无功", LVCFMT_CENTER, 60, 0 );
m_yclist.InsertColumn( 5, L"功率因素", LVCFMT_CENTER, 60, 0 );
m_yclist.InsertColumn( 6, L"阻抗", LVCFMT_CENTER, 60, 0 );
m_yclist.InsertColumn( 7, L"亮灯率", LVCFMT_CENTER, 60, 0 );
m_yclist.InsertColumn( 8, L"光照度", LVCFMT_CENTER, 60, 0 );
InitYCList();
//遥信列表头
m_yxlist.SetExtendedStyle(LVS_EX_FULLROWSELECT);
m_yxlist.InsertColumn( 0, L"时间", LVCFMT_CENTER, 100, 0 );
m_yxlist.InsertColumn( 1, L"遥信类别", LVCFMT_CENTER, wX-105, 0 );
m_soelist.SetExtendedStyle(LVS_EX_FULLROWSELECT);
m_soelist.InsertColumn( 0, L"时间", LVCFMT_CENTER, 100, 0 );
m_soelist.InsertColumn( 1, L"SOE类别", LVCFMT_CENTER, wX-105, 0 );
return TRUE;
}
void CRddDbgDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if(m_tab.GetSafeHwnd())
{
m_tab.SetWindowPos(0,0,0,cx,cy,SWP_NOZORDER);
m_cmdlist.SetWindowPos(0,2,0,cx,cy-21,SWP_NOZORDER);
m_soelist.SetWindowPos(0,2,0,cx,cy-21,SWP_NOZORDER);
m_yclist.SetWindowPos(0,2,0,cx,cy-21,SWP_NOZORDER);
m_yxlist.SetWindowPos(0,2,0,cx,cy-21,SWP_NOZORDER);
}
// TODO: Add your message handler code here
}
void CRddDbgDlg::OnSelchangeTab(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
int sel = m_tab.GetCurSel();
switch(sel)
{
case 0:
m_cmdlist.ShowWindow(SW_SHOW);
m_yclist.ShowWindow(SW_HIDE);
m_yxlist.ShowWindow(SW_HIDE);
m_soelist.ShowWindow(SW_HIDE);
break;
case 1:
m_yclist.ShowWindow(SW_SHOW);
m_cmdlist.ShowWindow(SW_HIDE);
m_yxlist.ShowWindow(SW_HIDE);
m_soelist.ShowWindow(SW_HIDE);
break;
case 2:
m_yxlist.ShowWindow(SW_SHOW);
m_cmdlist.ShowWindow(SW_HIDE);
m_yclist.ShowWindow(SW_HIDE);
m_soelist.ShowWindow(SW_HIDE);
break;
case 3:
m_soelist.ShowWindow(SW_SHOW);
m_cmdlist.ShowWindow(SW_HIDE);
m_yclist.ShowWindow(SW_HIDE);
m_yxlist.ShowWindow(SW_HIDE);
break;
}
*pResult = 0;
}
void CRddDbgDlg::InitCmdList()
{
int iRootItem = 0;
m_cmdlist.InsertItem( iRootItem, _T("11") );
m_cmdlist.SetItemText(iRootItem, 1, _T("读装置ID"));
m_cmdlist.SetItemText(iRootItem, 2, _T("双击执行"));
iRootItem++;
m_cmdlist.InsertItem( iRootItem, _T("12") );
m_cmdlist.SetItemText(iRootItem, 1, _T("进入调试"));
m_cmdlist.SetItemText(iRootItem, 2, _T("双击执行"));
iRootItem++;
m_cmdlist.InsertItem( iRootItem, _T("13") );
m_cmdlist.SetItemText(iRootItem, 1, _T("进入正常"));
m_cmdlist.SetItemText(iRootItem, 2, _T("双击执行"));
iRootItem++;
m_cmdlist.InsertItem( iRootItem, _T("14") );
m_cmdlist.SetItemText(iRootItem, 1, _T("设置CT/PT"));
m_cmdlist.SetItemText(iRootItem, 2, _T("双击执行"));
iRootItem++;
m_cmdlist.InsertItem( iRootItem, _T("103") );
m_cmdlist.SetItemText(iRootItem, 1, _T("时间同步"));
m_cmdlist.SetItemText(iRootItem, 2, _T("双击执行"));
iRootItem++;
m_cmdlist.InsertItem( iRootItem, _T("196") );
m_cmdlist.SetItemText(iRootItem, 1, _T("时间查询"));
m_cmdlist.SetItemText(iRootItem, 2, _T("双击执行"));
iRootItem++;
m_cmdlist.InsertItem( iRootItem, _T("160") );
m_cmdlist.SetItemText(iRootItem, 1, _T("设时间表"));
m_cmdlist.SetItemText(iRootItem, 2, _T("双击执行"));
iRootItem++;
m_cmdlist.InsertItem( iRootItem, _T("162") );
m_cmdlist.SetItemText(iRootItem, 1, _T("召时间表"));
m_cmdlist.SetItemText(iRootItem, 2, _T("双击执行"));
iRootItem++;
m_cmdlist.InsertItem( iRootItem, _T("149") );
m_cmdlist.SetItemText(iRootItem, 1, _T("手开关灯"));
m_cmdlist.SetItemText(iRootItem, 2, _T("双击执行"));
iRootItem++;
m_cmdlist.InsertItem( iRootItem, _T("100") );
m_cmdlist.SetItemText(iRootItem, 1, _T("总召唤"));
m_cmdlist.SetItemText(iRootItem, 2, _T("双击执行"));
iRootItem++;
m_cmdlist.InsertItem( iRootItem, _T("259") );
m_cmdlist.SetItemText(iRootItem, 1, _T("一级数据"));
m_cmdlist.SetItemText(iRootItem, 2, _T("双击执行"));
iRootItem++;
m_cmdlist.InsertItem( iRootItem, _T("258") );
m_cmdlist.SetItemText(iRootItem, 1, _T("二级数据"));
m_cmdlist.SetItemText(iRootItem, 2, _T("双击执行"));
iRootItem++;
m_cmdlist.InsertItem( iRootItem, _T("165") );
m_cmdlist.SetItemText(iRootItem, 1, _T("通信参数"));
m_cmdlist.SetItemText(iRootItem, 2, _T("双击执行"));
iRootItem++;
m_cmdlist.InsertItem( iRootItem, _T("110") );
m_cmdlist.SetItemText(iRootItem, 1, _T("越限参数"));
m_cmdlist.SetItemText(iRootItem, 2, _T("双击执行"));
iRootItem++;
m_cmdlist.InsertItem( iRootItem, _T("207") );
m_cmdlist.SetItemText(iRootItem, 1, _T("上传标志"));
m_cmdlist.SetItemText(iRootItem, 2, _T("双击执行"));
iRootItem++;
m_cmdlist.InsertItem( iRootItem, _T("170") );
m_cmdlist.SetItemText(iRootItem, 1, _T("屏蔽字"));
m_cmdlist.SetItemText(iRootItem, 2, _T("双击执行"));
iRootItem++;
m_cmdlist.InsertItem( iRootItem, _T("182") );
m_cmdlist.SetItemText(iRootItem, 1, _T("程序版本"));
m_cmdlist.SetItemText(iRootItem, 2, _T("双击执行"));
iRootItem++;
}
void CRddDbgDlg::InitYCList()
{
for(int i=0; i<18; i++)
{
CString strNum;
strNum.Format(_T("%d"), i+1);
m_yclist.InsertItem(i, strNum);
for(int iSub=1; iSub<=7; iSub++)
{
m_yclist.SetItemText(i, iSub, _T("0.00"));
}
m_yclist.SetItemText(i, 8, _T(""));
}
}
void CRddDbgDlg::OnDblclkCmdlist(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
if(CCommManager::m_bIsRun)
{
return ;
}
NMLISTVIEW *pd = (NMLISTVIEW*)pNMHDR;
int iItem = pd->iItem;
m_cmdlist.SetItemText(iItem, 2, L"正在执行...");
CString strCmd;
strCmd = m_cmdlist.GetItemText(iItem, 0);
TCHAR *strD;
//得到命令标识
int iCmd = (int)wcstod(strCmd, &strD);
CCmdManager::DataFunc pFun = ((CRddDbgApp*)AfxGetApp())->m_CmdManager.GetDataFunc(iCmd);
if(pFun != NULL)
{
CCommManager::m_bIsRun = TRUE;
if(!CCommManager::InitManager()) return ;
((CRddDbgApp*)AfxGetApp())->m_CmdManager.m_iItem = iItem;
(((CRddDbgApp*)AfxGetApp())->m_CmdManager.*pFun)(iItem);
}
else //没有对应的命令处理函数
{
TRACE(_T("%.2X命令字没有对应的处理函数"), iCmd);
}
CCommManager::m_bIsRun = FALSE;
*pResult = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -