📄 ncapdlg.cpp
字号:
// NcapDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Ncap.h"
#include "NcapDlg.h"
#include <math.h>
#include <FLOAT.h>
#include "DLG_PARA.h"
#include "DLG_QUERY.h"
#include "ADOConn.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
typedef struct {
COLORREF crColour; // color
TCHAR *szName; // color name
} v_sColour_stru;
// colors
static v_sColour_stru v_sColours[] =
{
{ RGB(0x4B, 0x00, 0x82), _T("靛蓝") },
{ RGB(0xFF, 0x00, 0x00), _T("红色") },
{ RGB(0x00, 0x00, 0x8B), _T("深蓝") },
{ RGB(0x00, 0x00, 0x00), _T("黑色") },
{ RGB(0x00, 0x93, 0x00), _T("绿色") },
{ RGB(0x8B, 0x8B, 0x00), _T("深黄") },
{ RGB(0x80, 0x00, 0x80), _T("紫色") },
{ RGB(0xFF, 0x68, 0x20), _T("桔黄") },
{ RGB(0x00, 0x40, 0x40), _T("橄榄绿") },
{ RGB(0xA5, 0x2A, 0x00), _T("褐色") },
{ RGB(0x38, 0x8E, 0x8E), _T("青色") },
{ RGB(0x00, 0xFF, 0x00), _T("鲜绿") },
{ RGB(0xFF, 0xD7, 0x00), _T("金色") },
{ RGB(0xD2, 0xB4, 0x8C), _T("棕黄") },
{ RGB(0x40, 0xE0, 0xD0), _T("青绿") },
{ RGB(0xD2, 0xB4, 0x8C), _T("棕黄") },
{ RGB(0x68, 0x83, 0x8B), _T("淡蓝") },
// { RGB(0x00, 0x00, 0x5E), _T("深灰蓝") },
// { RGB(0x00, 0x00, 0xFF), _T("蓝色") },
// { RGB(0x48, 0x00, 0x48), _T("梅红") },
// { RGB(0x00, 0x55, 0x00), _T("深绿") },
// { RGB(0x7B, 0x7B, 0xC0), _T("蓝-灰") },
// { RGB(0x66, 0x66, 0x66), _T("灰-40%") },
// { RGB(0x7D, 0x9E, 0xC0), _T("浅蓝") },
// { RGB(0x32, 0xCD, 0x32), _T("酸橙色") },
// { RGB(0xFF, 0xAD, 0x5B), _T("浅桔黄") },
// { RGB(0x7F, 0x7F, 0x7F), _T("灰-50%") },
// { RGB(0x28, 0x28, 0x28), _T("灰-80%") },
// { RGB(0xFF, 0xC0, 0xCB), _T("粉红") },
// { RGB(0x8B, 0x00, 0x00), _T("深红") },
// { RGB(0x00, 0x00, 0x00), _T("黑色") },
// { RGB(0x7F, 0xFF, 0xD4), _T("宝石蓝") },
// { RGB(0x3C, 0xB3, 0x71), _T("海绿") },
// { RGB(0xFF, 0xFF, 0x00), _T("黄色") },
// { RGB(0xC0, 0xFF, 0xFF), _T("天蓝") },
// { RGB(0xC0, 0xC0, 0xC0), _T("灰-25%") },
// { RGB(0xFF, 0xFF, 0xE0), _T("浅黄") },
// { RGB(0xAF, 0xEE, 0xEE), _T("浅青绿") },
// { RGB(0xE6, 0xE6, 0xFA), _T("淡紫") },
// { RGB(0xFF, 0xE4, 0xE1), _T("玫瑰红") },
// { RGB(0x98, 0xFB, 0x98), _T("浅绿") },
// { RGB(0xFF, 0xFF, 0xFF), _T("白色") }
};
const int v_iColourCount = sizeof(v_sColours) / sizeof(v_sColour_stru);
extern CNcapApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CNcapDlg dialog
CNcapDlg::CNcapDlg(CWnd* pParent /*=NULL*/)
: CDialog(CNcapDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CNcapDlg)
m_iInput = 0;
m_iInput_number = 0;
m_iPage = 0;
m_sNumber = _T("");
m_iMove = -1;
m_sName = _T("");
m_sUnit = _T("");
m_fData = 0.0f;
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
v_pCurveCtrl = NULL; //绘制图形指针
v_iCurveCount = 0; //绘制图形序号
}
CNcapDlg::~CNcapDlg()
{
delete v_pCurveCtrl;
}
void CNcapDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CNcapDlg)
DDX_Control(pDX, IDC_QUERY, m_cQuery);
DDX_Control(pDX, IDC_PARA, m_cPara);
DDX_Control(pDX, IDC_CLEAR, m_cClear);
DDX_Control(pDX, IDC_SAVE_MAN, m_cSave_man);
DDX_Control(pDX, IDC_SAVE, m_cSave);
DDX_Control(pDX, IDC_MOVE, m_cMove);
DDX_Control(pDX, IDC_STOP, m_cStop);
DDX_Control(pDX, IDC_START, m_cStart);
DDX_Control(pDX, IDC_INPUT_NUMBER, m_cInput_number);
DDX_Control(pDX, IDC_INPUT, m_cInput);
DDX_Control(pDX, IDC_STATUS, m_cStatus);
DDX_Control(pDX, IDC_CURVE, m_cCurve);
DDX_Text(pDX, IDC_INPUT, m_iInput);
DDX_Text(pDX, IDC_INPUT_NUMBER, m_iInput_number);
DDX_Text(pDX, IDC_INPUT_PAGE, m_iPage);
DDX_Text(pDX, IDC_NUMBER, m_sNumber);
DDX_Radio(pDX, IDC_MOVE, m_iMove);
DDX_Text(pDX, IDC_TEST_NAME, m_sName);
DDV_MaxChars(pDX, m_sName, 20);
DDX_Text(pDX, IDC_UNIT, m_sUnit);
DDV_MaxChars(pDX, m_sUnit, 6);
DDX_Control(pDX, IDC_MSCOMM, m_cComm);
DDX_Text(pDX, IDC_DATA, m_fData);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CNcapDlg, CDialog)
//{{AFX_MSG_MAP(CNcapDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_SIZE()
ON_BN_CLICKED(IDC_QUERY, OnQuery)
ON_BN_CLICKED(IDC_PARA, OnPara)
ON_BN_CLICKED(IDC_SAVE, OnSave)
ON_EN_CHANGE(IDC_INPUT, OnChangeInput)
ON_WM_TIMER()
ON_EN_CHANGE(IDC_INPUT_NUMBER, OnChangeInputNumber)
ON_BN_CLICKED(IDC_CLEAR, OnClear)
ON_BN_CLICKED(IDC_START, OnStart)
ON_BN_CLICKED(IDC_SAVE_MAN, OnSaveMan)
ON_BN_CLICKED(IDC_STOP, OnStop)
ON_WM_MOUSEWHEEL()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BEGIN_EVENTSINK_MAP(CNcapDlg, CDialog)
//{{AFX_EVENTSINK_MAP(CNcapDlg)
ON_EVENT(CNcapDlg, IDC_MSCOMM, 1 /* OnComm */, OnMscomm, VTS_NONE)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
//-------------------------------------------------------------------------------------------------
// 消息预处理(主要针对按键处理)
//-------------------------------------------------------------------------------------------------
BOOL CNcapDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if (pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN)
{
CDialog* Pwnd=(CDialog*)GetActiveWindow(); //取得对话框指针
Pwnd->NextDlgCtrl(); //切换到下一个输入焦点
return true;
}
return CDialog::PreTranslateMessage(pMsg);
}
//-------------------------------------------------------------------------------------------------
// 对话窗初始化处理
// 参数:无
//-------------------------------------------------------------------------------------------------
BOOL CNcapDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 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
// TODO: Add extra initialization here
//---------------------------------------------------------------------------------------------
CString v_sTemp,v_sSql; //临时变量
CTime v_tTime; //临时变量
//读取初始化参数(数据库)
We_init();
v_tTime=CTime::GetCurrentTime();
v_sTemp=v_tTime.Format("%Y%m%d");
if(v_sTemp!=theApp.a_sDate)
{
theApp.a_sDate=v_sTemp;
v_sSql="UPDATE state set zdate='"+v_sTemp+"',znum=1";
We_save(v_sSql);
theApp.a_iNum=1;
}
//变量初始化
v_iInput=theApp.a_iDs_time; //默认采样时间
v_iInput_number=theApp.a_iNumber; //默认采集点数
v_bStart=false; //开始数据采集标志
v_bStart_new=false; //新的数据采集标志
v_iX_number=-1; //数据采集x计数复位
//显示位置坐标初始化
CRect v_cRect; //定义矩形变量:显示位置
m_cCurve.GetWindowRect(v_cRect); //获得显示区域的位置数据
ScreenToClient(v_cRect); //将点坐标转换为相对于客户区的坐标
if (NULL == v_pCurveCtrl)
{
v_pCurveCtrl = new CCurveCtrl; //生成新的显示实例
v_pCurveCtrl->Create(v_cRect, this, ID_CURVE_CONTROL); //设置控件栅格线当前的风格
v_pCurveCtrl->SetGridLineStyle(PS_DOT); //线型:点线笔
v_pCurveCtrl->SetMargin(CRect(70, 60, 50, 60)); //设置显示区域边框的空白
}
//屏幕显示处理
m_sNumber.Format("%04d",theApp.a_iNum);
m_sNumber=theApp.a_sDate+"_"+m_sNumber; //实验编号
We_status(); //实验状态显示
ShowWindow(SW_SHOWMAXIMIZED); //屏幕最大化
UpdateData(false); //显示信息
return TRUE; // return TRUE unless you set the focus to a control
}
//-------------------------------------------------------------------------------------------------
// 系统命令处理
// 参数:无
//-------------------------------------------------------------------------------------------------
void CNcapDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
//-------------------------------------------------------------------------------------------------
// 自动窗体绘制处理
// 参数:无
//-------------------------------------------------------------------------------------------------
void CNcapDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
//-------------------------------------------------------------------------------------------------
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
//-------------------------------------------------------------------------------------------------
HCURSOR CNcapDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
//-------------------------------------------------------------------------------------------------
// 窗体缩放处理
// 参数:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -