📄 cetoolsview.cpp
字号:
// CeToolsView.cpp : implementation of the CCeToolsView class
//
#include "stdafx.h"
#include "CeTools.h"
#include "CeToolsDoc.h"
#include "CeToolsView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CCeToolsView
IMPLEMENT_DYNCREATE(CCeToolsView, CFormView)
BEGIN_MESSAGE_MAP(CCeToolsView, CFormView)
//{{AFX_MSG_MAP(CCeToolsView)
ON_WM_SIZE()
ON_WM_CREATE()
ON_WM_TIMER()
ON_CBN_SELCHANGE(IDC_COMBO_BAUD, OnSelchangeComboBaud)
ON_CBN_SELCHANGE(IDC_COMBO_PORTNO, OnSelchangeComboPortno)
ON_WM_MOUSEMOVE()
ON_BN_CLICKED(IDC_RADIO1, OnRadio1)
ON_BN_CLICKED(IDC_RADIO3, OnRadio3)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CFormView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview)
ON_MESSAGE(OUTBAR_NOTIFY, OnOutbarNotify)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCeToolsView construction/destruction
CCeToolsView::CCeToolsView()
: CFormView(CCeToolsView::IDD)
{
//{{AFX_DATA_INIT(CCeToolsView)
//}}AFX_DATA_INIT
// TODO: add construction code here
}
CCeToolsView::~CCeToolsView()
{
// if(m_bitmap.m_hObject!=NULL)
// m_bitmap.DeleteObject();
}
void CCeToolsView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCeToolsView)
DDX_Control(pDX, IDC_PROGRESS8, m_Progress8_Ctrl);
DDX_Control(pDX, IDC_PROGRESS7, m_Progress7_Ctrl);
DDX_Control(pDX, IDC_COMBO_PORTNO, m_Combo_PortNo_Ctrl);
DDX_Control(pDX, IDC_COMBO_BAUD, m_Combo_Baud_Ctrl);
DDX_Control(pDX, IDC_PROGRESS3, m_Progress3_Ctrl);
DDX_Control(pDX, IDC_PROGRESS2, m_Progress2_Ctrl);
//}}AFX_DATA_MAP
}
BOOL CCeToolsView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CFormView::PreCreateWindow(cs);
}
void CCeToolsView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
app = (CCeToolsApp *)AfxGetApp();
InitSet();
SetTimer(1,100,NULL);
InitRv();
ShowRev(SW_SHOW);
ShowSet(SW_HIDE);
}
/////////////////////////////////////////////////////////////////////////////
// CCeToolsView printing
BOOL CCeToolsView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CCeToolsView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CCeToolsView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
void CCeToolsView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)
{
// TODO: add customized printing code here
}
/////////////////////////////////////////////////////////////////////////////
// CCeToolsView diagnostics
/*
#ifdef _DEBUG
void CCeToolsView::AssertValid() const
{
CFormView::AssertValid();
}
void CCeToolsView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
CCeToolsDoc* CCeToolsView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CCeToolsDoc)));
return (CCeToolsDoc*)m_pDocument;
}
#endif //_DEBUG
*/
/////////////////////////////////////////////////////////////////////////////
// CCeToolsView message handlers
void CCeToolsView::OnSize(UINT nType, int cx, int cy)
{
CFormView::OnSize(nType, cx, cy);
}
int CCeToolsView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFormView::OnCreate(lpCreateStruct) == -1)
return -1;
return 0;
}
long CCeToolsView::OnOutbarNotify(WPARAM wParam, LPARAM lParam)
{
switch(wParam)
{
case 1:
UseTool.CurUseSubTool=lParam;
if(UseTool.CurUseTool==0)
{
app->CurRevType=UseTool.CurUseSubTool;
switch(UseTool.CurUseSubTool)
{
case 0://无编码
app->BmState=0;
break;
case 1://有编码
app->BmState=1;
break;
case 2://解码
break;
case 3://停止
break;
}
}
else
SaveSetData();
break;
case 5:
UseTool.CurUseTool=lParam;
switch(lParam)
{
case 0:
ShowRev(SW_SHOW);
ShowSet(SW_HIDE);
break;
case 1:
ShowRev(SW_HIDE);
ShowSet(SW_SHOW);
ShowSetData();
break;
}
UseTool.PreUseTool=UseTool.CurUseTool;
break;
}
return 0;
}
void CCeToolsView::ShowRev(int show)
{
if(m_Progress2_Ctrl.m_hWnd==NULL)
return;
if(m_Progress3_Ctrl.m_hWnd==NULL)
return;
if(m_Progress7_Ctrl.m_hWnd==NULL)
return;
if(m_Progress8_Ctrl.m_hWnd==NULL)
return;
if(m_Static5_Ctrl.m_hWnd==NULL)
return;
if(m_Static6_Ctrl.m_hWnd==NULL)
return;
if(m_Static7_Ctrl.m_hWnd==NULL)
return;
if(m_Static9_Ctrl.m_hWnd==NULL)
return;
if(m_Static28_Ctrl.m_hWnd==NULL)
return;
if(m_Static11_Ctrl.m_hWnd==NULL)
return;
m_Static5_Ctrl.ShowWindow(show);
m_Static6_Ctrl.ShowWindow(show);
m_Static7_Ctrl.ShowWindow(show);
m_Static9_Ctrl.ShowWindow(show);
m_Static28_Ctrl.ShowWindow(show);
m_Static11_Ctrl.ShowWindow(show);
m_Progress2_Ctrl.ShowWindow(show);
m_Progress3_Ctrl.ShowWindow(show);
m_Progress7_Ctrl.ShowWindow(show);
m_Progress8_Ctrl.ShowWindow(show);
ViewPause=0;
}
void CCeToolsView::OnTimer(UINT nIDEvent)
{
ViewData();//接收数据
CFormView::OnTimer(nIDEvent);
}
void CCeToolsView::ShowSet(int show)
{
if(m_Static24_Ctrl.m_hWnd==NULL)
return;
if(m_Static25_Ctrl.m_hWnd==NULL)
return;
if(m_Combo_PortNo_Ctrl.m_hWnd==NULL)
return;
if(m_Combo_Baud_Ctrl.m_hWnd==NULL)
return;
m_Static24_Ctrl.ShowWindow(show);
m_Static25_Ctrl.ShowWindow(show);
m_Combo_PortNo_Ctrl.ShowWindow(show);
m_Combo_Baud_Ctrl.ShowWindow(show);
if(RadioButton1.m_hWnd!=NULL)
RadioButton1.ShowWindow(show);
if(RadioButton3.m_hWnd!=NULL)
RadioButton3.ShowWindow(show);
}
void CCeToolsView::InitSet()
{
m_Static24_Ctrl.SubclassDlgItem(IDC_STATIC24, this);
m_Static24_Ctrl.SetTextColor(::GetSysColor(COLOR_INFOTEXT));
m_Static24_Ctrl.SetBkColor(RGB(255,255,255));
m_Static25_Ctrl.SubclassDlgItem(IDC_STATIC25, this);
m_Static25_Ctrl.SetTextColor(::GetSysColor(COLOR_INFOTEXT));
m_Static25_Ctrl.SetBkColor(RGB(255,255,255));
RadioButton1.SubclassDlgItem(IDC_RADIO1,this);
RadioButton1.SetTextColor(::GetSysColor(COLOR_INFOTEXT));
RadioButton1.SetBkColor(RGB(255,255,255));
RadioButton3.SubclassDlgItem(IDC_RADIO3,this);
RadioButton3.SetTextColor(::GetSysColor(COLOR_INFOTEXT));
RadioButton3.SetBkColor(RGB(255,255,255));
SetBkImage(MAKEINTRESOURCE(IDB_BITMAP1));
//读配置
app->SetParam.PortNo=AfxGetApp()->GetProfileInt(_T("SetRParam"),_T("PortNo"),0);
app->SetParam.Baud=AfxGetApp()->GetProfileInt(_T("SetRParam"),_T("PortBaud"),6);
app->RunNT=AfxGetApp()->GetProfileInt(_T("SetRParam"),_T("RunNT"),0);
app->SetParam.Modified=0;
}
void CCeToolsView::OnDraw(CDC* pDC)
{
CRect rcClient;
GetClientRect(&rcClient);
EraseBkgnd(pDC,&rcClient);
}
BOOL CCeToolsView::EraseBkgnd(CDC *pDC,CRect *rect)
{
CDC dc;
dc.CreateCompatibleDC(pDC);
dc.SelectObject(m_bitmap);
BITMAP bm;
int bmwidth,bmheight;
m_bitmap.GetBitmap(&bm);
bmwidth=bm.bmWidth;
bmheight=bm.bmHeight;
int i,j,x,y;
x=(rect->right-rect->left+bmwidth)/bmwidth;
y=(rect->bottom-rect->top+bmheight)/bmheight;
for(i=0;i<x;i++)
for(j=0;j<y;j++)
pDC->BitBlt(i*bmwidth,j*bmheight,bmwidth,bmheight,&dc,0,0,SRCCOPY);
return TRUE;
}
BOOL CCeToolsView::SetBkImage(LPCTSTR lpszResourceName)
{
if(m_bitmap.m_hObject!=NULL)
m_bitmap.DeleteObject();
HBITMAP hBmp=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),
lpszResourceName,IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION);
if(hBmp==NULL)
return FALSE;
m_bitmap.Attach(hBmp);
return TRUE;
}
void CCeToolsView::SaveSetData()
{
CString str;
if(app->SetParam.Modified!=1)
return;
app->SetParam.PortNo=m_Combo_PortNo_Ctrl.GetCurSel();
app->SetParam.Baud=m_Combo_Baud_Ctrl.GetCurSel();
AfxGetApp()->WriteProfileInt(_T("SetRParam"),_T("PortNo"),app->SetParam.PortNo);
AfxGetApp()->WriteProfileInt(_T("SetRParam"),_T("PortBaud"),app->SetParam.Baud);
app->SetParam.Modified=0;
}
void CCeToolsView::ShowSetData()
{
m_Combo_PortNo_Ctrl.SetCurSel(app->SetParam.PortNo);
m_Combo_Baud_Ctrl.SetCurSel(app->SetParam.Baud);
if(RadioButton1.m_hWnd!=NULL)
if(app->RunNT!=1)
RadioButton1.SetCheck(TRUE);
if(RadioButton3.m_hWnd!=NULL)
if(app->RunNT)
RadioButton3.SetCheck(TRUE);
app->SetParam.Modified=0;
}
void CCeToolsView::OnSelchangeComboBaud()
{
app->SetParam.Modified=1;
}
void CCeToolsView::OnSelchangeComboPortno()
{
app->SetParam.Modified=1;
}
int CCeToolsView::StringToByte(CString *str, BYTE *buf, int MaxLen,int flag)
{
CString str1,str2;
int i,m,k;
//flag 0:16进制 1:10进制
m=str->GetLength();
str2.Empty();
k=0;
for(i=0;i<m;i++)
{
str1=str->Mid(i,1);
if(str1!=" ")
str2+=str1;
else
{
if(!str2.IsEmpty())
{
if(flag)
sscanf(str2,"%02d",&buf[k]);
else
sscanf(str2,"%02x",&buf[k]);
str2.Empty();
k++;
if(k>=MaxLen)
break;
}
}
}
if(k<MaxLen)
{
if(!str2.IsEmpty())
{
if(flag)
sscanf(str2,"%02d",&buf[k]);
else
sscanf(str2,"%02x",&buf[k]);
str2.Empty();
k++;
}
}
return k;
}
int CCeToolsView::ViewData()
{
CString str,str1;
m_Progress2_Ctrl.SetPos((int)app->ErrCodeRate.ErrCodeRate);
str.Format("误码率A:%2.2f",app->ErrCodeRate.ErrCodeRate);
str+="%";
m_Static5_Ctrl.SetWindowText(str);
m_Progress3_Ctrl.SetPos((int)app->ErrCodeRate2.ErrCodeRate);
str.Format("误码率B:%2.2f",app->ErrCodeRate2.ErrCodeRate);
str+="%";
m_Static6_Ctrl.SetWindowText(str);
app->ErrCodeRate_t.ErrCodeRate=app->ExpErrRate(app->ErrCodeRate_t.ErrLen,app->ErrCodeRate_t.TotalLen);
m_Progress7_Ctrl.SetPos((int)app->ErrCodeRate_t.ErrCodeRate);
str.Format("总误码率A:%2.2f",app->ErrCodeRate_t.ErrCodeRate);
str+="%";
m_Static7_Ctrl.SetWindowText(str);
str.Format("%d/%d 运行%d 秒",app->ErrCodeRate_t.ErrLen,app->ErrCodeRate_t.TotalLen,app->TotalRunTime);
m_Static28_Ctrl.SetWindowText(str);
app->ErrCodeRate2_t.ErrCodeRate=app->ExpErrRate(app->ErrCodeRate2_t.ErrLen,app->ErrCodeRate2_t.TotalLen);
m_Progress8_Ctrl.SetPos((int)app->ErrCodeRate2_t.ErrCodeRate);
str.Format("总误码率B:%2.2f",app->ErrCodeRate2_t.ErrCodeRate);
str+="%";
m_Static9_Ctrl.SetWindowText(str);
str.Format("%d/%d 运行%d 秒",app->ErrCodeRate2_t.ErrLen,app->ErrCodeRate2_t.TotalLen,app->TotalRunTime);
m_Static11_Ctrl.SetWindowText(str);
return 1;
}
void CCeToolsView::InitRv()
{
ListViewCount=1000;
m_Static5_Ctrl.SubclassDlgItem(IDC_STATIC5, this);
m_Static5_Ctrl.SetTextColor(::GetSysColor(COLOR_INFOTEXT));
m_Static5_Ctrl.SetBkColor(RGB(255,255,255));
m_Static6_Ctrl.SubclassDlgItem(IDC_STATIC6, this);
m_Static6_Ctrl.SetTextColor(::GetSysColor(COLOR_INFOTEXT));
m_Static6_Ctrl.SetBkColor(RGB(255,255,255));
m_Static7_Ctrl.SubclassDlgItem(IDC_STATIC7, this);
m_Static7_Ctrl.SetTextColor(::GetSysColor(COLOR_INFOTEXT));
m_Static7_Ctrl.SetBkColor(RGB(255,255,255));
m_Static9_Ctrl.SubclassDlgItem(IDC_STATIC9, this);
m_Static9_Ctrl.SetTextColor(::GetSysColor(COLOR_INFOTEXT));
m_Static9_Ctrl.SetBkColor(RGB(255,255,255));
m_Static28_Ctrl.SubclassDlgItem(IDC_STATIC28, this);
m_Static28_Ctrl.SetTextColor(::GetSysColor(COLOR_INFOTEXT));
m_Static28_Ctrl.SetBkColor(RGB(255,255,255));
m_Static11_Ctrl.SubclassDlgItem(IDC_STATIC11, this);
m_Static11_Ctrl.SetTextColor(::GetSysColor(COLOR_INFOTEXT));
m_Static11_Ctrl.SetBkColor(RGB(255,255,255));
m_Static5_Ctrl.SetWindowText("误码率A:0%");
m_Progress2_Ctrl.SetRange32(0,100);
m_Static6_Ctrl.SetWindowText("误码率B:0%");
m_Progress3_Ctrl.SetRange32(0,100);
m_Static7_Ctrl.SetWindowText("总误码率A:");
m_Progress7_Ctrl.SetRange32(0,100);
m_Static9_Ctrl.SetWindowText("总误码率B:");
m_Progress8_Ctrl.SetRange32(0,100);
}
void CCeToolsView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(app->ShowMouseFlag==0)
{
ShowCursor(TRUE);
app->ShowMouseFlag=1;
}
CFormView::OnMouseMove(nFlags, point);
}
void CCeToolsView::OnRadio1()
{
app->RunNT=FALSE;
AfxGetApp()->WriteProfileInt(_T("SetRParam"),_T("RunNT"),app->RunNT);
}
void CCeToolsView::OnRadio3()
{
app->RunNT=TRUE;
AfxGetApp()->WriteProfileInt(_T("SetRParam"),_T("RunNT"),app->RunNT);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -