📄 engmodeexview.cpp
字号:
// EngModeExView.cpp : CEngModeExView 类的实现
//
#include "stdafx.h"
#include "EngModeEx.h"
#include "EngModeExDoc.h"
#include "EngModeExView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
extern TCHAR strReturnData[256];
myFunType curFunType = SYSTEMINFO;
FunControl engFunControl[] =
{
{_T("=========================================="),NULL},
{_T("版本号"),getRadioVer},
{_T("切换频段"),switchRange},
{NULL,NULL }
};
FunControl systemFunControl[] =
{
{_T("=========================================="),NULL},
{_T("内存信息"),getMemoryInfo},
{NULL,NULL }
};
FunControl debugFunControl[] =
{
{_T("=========================================="),NULL},
{_T("GPIO信息"),GPIOControl},
{_T("睡眠唤醒信息"),WakeSleepInfo},
{_T("开关无线模块"),OpenCloseWireless},
{_T("电池信息"),DispBattery},
{NULL,NULL }
};
// CEngModeExView
IMPLEMENT_DYNCREATE(CEngModeExView, CListView)
BEGIN_MESSAGE_MAP(CEngModeExView, CListView)
ON_COMMAND(IDM_SELECT, &CEngModeExView::executeSelFun)
ON_COMMAND(ID_SYSTEMINFO, &CEngModeExView::OnSysteminfo)
ON_COMMAND(ID_ENGMODE, &CEngModeExView::OnEngmode)
ON_COMMAND(ID_DEBUG, &CEngModeExView::OnDebug)
ON_NOTIFY_REFLECT(NM_CLICK, &CEngModeExView::OnNMClick)
ON_WM_DESTROY()
END_MESSAGE_MAP()
// CEngModeExView 构造/析构
CEngModeExView::CEngModeExView()
{
// TODO: 在此处添加构造代码
curFunType = SYSTEMINFO;
}
CEngModeExView::~CEngModeExView()
{
}
BOOL CEngModeExView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: 在此处通过修改
// CREATESTRUCT cs 来修改窗口类或样式
return CListView::PreCreateWindow(cs);
}
void CEngModeExView::OnInitialUpdate()
{
CListView::OnInitialUpdate();
// TODO: 调用 GetListCtrl() 直接访问 ListView 的列表控件,
// 从而可以用项填充 ListView。
//RECT rect;
//GetWindowRect(&rect);
ModifyStyle(LVS_TYPEMASK, LVS_LIST);
CListCtrl& listCtrl = GetListCtrl();
static BOOL imgInsert = FALSE;
if(!imgInsert)
{
ImageList.Create(16,16,TRUE,2,2);
ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
listCtrl.SetImageList(&ImageList,LVSIL_SMALL);
imgInsert = TRUE;
}
#if 0
HWND listWnd = listCtrl.GetSafeHwnd();
DWORD style = ListView_GetExtendedListViewStyle(listWnd);
ListView_SetExtendedListViewStyle(listWnd,LVS_LIST /*| LVS_NOCOLUMNHEADER |LVS_EX_GRIDLINES*/);
style = ListView_GetExtendedListViewStyle(listWnd);
LV_COLUMN lvCol;
lvCol.mask = LVCF_TEXT | LVCF_WIDTH;
lvCol.fmt = LVCFMT_LEFT;
lvCol.iSubItem = 0;
//添加表头
lvCol.cx = 100;
lvCol.pszText = _T("文件名称");
ListView_InsertColumn(listWnd,0,&lvCol);
lvCol.cx = 100;
lvCol.pszText = _T("文件名称");
ListView_InsertColumn(listWnd,1,&lvCol);
#endif
DWORD funNum = 0;
FunControl *tmpFunCtl = NULL;
switch(curFunType)
{
case ENGINEERINGMODE:
funNum = sizeof(engFunControl) / sizeof(FunControl);
tmpFunCtl = engFunControl;
break;
case SYSTEMINFO:
tmpFunCtl = systemFunControl;
funNum = sizeof(systemFunControl) / sizeof(FunControl);
break;
case DEBUGINFO:
funNum = sizeof(debugFunControl)/sizeof(FunControl);
tmpFunCtl = debugFunControl;
break;
default:
break;
}
listCtrl.DeleteAllItems();
listCtrl.InsertItem(0,_T("请选择: "));
for(DWORD i=0;i<funNum;i++)
{
if (tmpFunCtl[i].Name != NULL && wcslen(tmpFunCtl[i].Name) > 0)
{
listCtrl.InsertItem(i+1,tmpFunCtl[i].Name);
}
}
listCtrl.DeleteItem(0);
SetCursor(LoadCursor(NULL,IDC_NO));
}
void CEngModeExView::executeSelFun()
{
SetCursor(LoadCursor(NULL, IDC_WAIT));
CListCtrl& m_FunList = GetListCtrl();
DWORD selCount = m_FunList.GetSelectedCount();
if(selCount < 1)
{
goto Exit;
}
DWORD selItem = 0;
POSITION pos = m_FunList.GetFirstSelectedItemPosition();
if (pos == NULL)
{
goto Exit;
}
else
{
while (pos)
{
selItem = m_FunList.GetNextSelectedItem(pos);
}
}
FunControl *tmpFunCtl = NULL;
switch(curFunType)
{
case ENGINEERINGMODE:
tmpFunCtl = engFunControl;
break;
case SYSTEMINFO:
tmpFunCtl = systemFunControl;
break;
case DEBUGINFO:
tmpFunCtl = debugFunControl;
break;
default:
tmpFunCtl = engFunControl;
break;
}
//TCHAR *strReturn = NULL;
if (tmpFunCtl != NULL && (tmpFunCtl[selItem].funName != NULL))
{
if(TRUE == (tmpFunCtl[selItem].funName)())
{
if (wcslen(strReturnData) >1)
{
TCHAR tmpName[256];
StringCchCopy(tmpName,sizeof(tmpName),tmpFunCtl[selItem].Name);
StringCchCat(tmpName,sizeof(tmpName),_T(":"));
StringCchCat(tmpName,sizeof(tmpName),strReturnData);
m_FunList.SetItemText(selItem,0,tmpName);
//SysFreeString(strReturn);
//strReturn = NULL;
}
}
}
else
{
SetCursor(LoadCursor(NULL,IDC_NO));
}
Exit:
SetCursor(LoadCursor(NULL,IDC_NO));
return;
}
// CEngModeExView 诊断
#ifdef _DEBUG
void CEngModeExView::AssertValid() const
{
CListView::AssertValid();
}
CEngModeExDoc* CEngModeExView::GetDocument() const // 非调试版本是内联的
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CEngModeExDoc)));
return (CEngModeExDoc*)m_pDocument;
}
#endif //_DEBUG
// CEngModeExView 消息处理程序
void CEngModeExView::OnSysteminfo()
{
curFunType = SYSTEMINFO;
OnInitialUpdate();
}
void CEngModeExView::OnEngmode()
{
curFunType = ENGINEERINGMODE;
LoadRILLib();
OnInitialUpdate();
}
void CEngModeExView::OnDebug()
{
curFunType = DEBUGINFO;
OnInitialUpdate();
}
void CEngModeExView::OnNMClick(NMHDR *pNMHDR, LRESULT *pResult)
{
executeSelFun();
// TODO: Add your control notification handler code here
*pResult = 0;
}
void CEngModeExView::OnDestroy()
{
CListView::OnDestroy();
unLoadRILLib();
// TODO: Add your message handler code here
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -