📄 demodlg.cpp
字号:
//济南海硕科技有限公司目前拥有一套具有自主知识产权的,既可以面向终端用户,也可以面向二次开发用户的嵌入式应用平台。
//对于终端用户,海硕公司可以根据用户的需求,为其量身定做WinCE下的应用软件。
//对于二次开发用户,海硕公司可以提供最大程度上的技术支持。
//另外海硕公司还对外承接项目工程。
//联系电话:15106930064 15866616892
//传 真:(0531)86300038
//网 址:www.handshow.net
//技术论坛:www.handshow.net/bbs
#include "stdafx.h"
#include "demo.h"
#include "demoDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CdemoDlg dialog
CdemoDlg::CdemoDlg(CWnd* pParent /*=NULL*/):
m_bCtrlFlag(FALSE),
m_bBtnDown(FALSE),
CDialog(CdemoDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_bkBMP.LoadBitmap(IDB_BITMAP_BACK);
m_activeBMP.LoadBitmap(IDB_BITMAP_BACKACTION);
HWND hWnd = ::FindWindow(TEXT("HHTaskBar"), NULL);
::ShowWindow(hWnd, SW_HIDE);
}
CdemoDlg::~CdemoDlg()
{
m_bkBMP.DeleteObject();
m_activeBMP.DeleteObject();
HWND hWnd = ::FindWindow(TEXT("HHTaskBar"), NULL);
::ShowWindow(hWnd, SW_SHOW);
}
void CdemoDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_BTN_TURN, m_btnCtrl);
DDX_Control(pDX, IDC_STATIC_BTNDOWN, m_tipBtnDown);
DDX_Control(pDX, IDC_STATIC_LCD, m_tipTurnOn);
}
BEGIN_MESSAGE_MAP(CdemoDlg, CDialog)
#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
ON_WM_SIZE()
#endif
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_BTN_TURN, &CdemoDlg::OnBnClickedBtnTurn)
ON_WM_TIMER()
ON_WM_PAINT()
ON_WM_CLOSE()
ON_WM_LBUTTONUP()
ON_STN_CLICKED(IDC_STATIC_LCD, &CdemoDlg::OnStnClickedStaticLcd)
ON_BN_CLICKED(IDC_BTN_RECIVE, &CdemoDlg::OnBnClickedBtnRecive)
END_MESSAGE_MAP()
// CdemoDlg message handlers
BOOL CdemoDlg::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
// TODO: Add extra initialization here
//SetTimer(100, 50, NULL);
return TRUE; // return TRUE unless you set the focus to a control
}
void CdemoDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if(GetSafeHwnd())
{
int nFullWidth = GetSystemMetrics(SM_CXSCREEN);
int nFullHeight = GetSystemMetrics(SM_CYSCREEN);
CRect rtFull(0, 0, nFullWidth, nFullHeight);
MoveWindow(&rtFull);
}
}
#define NUMOFRANDOM 8
void CdemoDlg::OnBnClickedBtnTurn()
{
UCHAR Random[NUMOFRANDOM];
srand(GetTickCount());
for(BYTE i=0; i<NUMOFRANDOM; i++)
{
Random[i] = rand() % 256;
TRACE(TEXT("第%d个随机数为:%d\n"), i, Random[i]);
}
if(!m_SerialObj.WriteCommand(Random))
{
MessageBeep(MB_ICONASTERISK);
MessageBox(TEXT("写命令错误"), TEXT("错误"), MB_OK);
}
}
void CdemoDlg::OnTimer(UINT_PTR nIDEvent)
{
static BOOL bSendCmd = TRUE;
if(bSendCmd)
{
if(m_SerialObj.WriteCommand(m_bCtrlFlag))
{
bSendCmd = FALSE;
}
}
else
{
if(m_SerialObj.ReadDataFromSerial())
{
BOOL bTurnOn;
BOOL bBtnDown;
m_SerialObj.AnalyzeReturnData(bTurnOn, bBtnDown);
m_bBtnDown = bBtnDown;
CDC* pDC = NULL;
pDC = GetDC();
DrawGraphInMem(pDC, NULL);
ReleaseDC(pDC);
}
bSendCmd = TRUE;
}
CDialog::OnTimer(nIDEvent);
}
void CdemoDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
DrawGraphInMem(&dc, NULL);
}
void CdemoDlg::DrawGraphInMem(CDC* pDC, LPCRECT lpRect)
{
CDC memDC;
BITMAP bmpInfo;
CBitmap* poldBmp = NULL;
try
{
memDC.CreateCompatibleDC(pDC);
poldBmp = memDC.SelectObject(&m_bkBMP);
m_bkBMP.GetBitmap(&bmpInfo);
int nFullWidth = GetSystemMetrics(SM_CXSCREEN);
int nFullHeight = GetSystemMetrics(SM_CYSCREEN);
pDC->StretchBlt(0, 0, nFullWidth, nFullHeight, &memDC, 0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, SRCCOPY);
memDC.SelectObject(&m_activeBMP);
if(m_bCtrlFlag)
{
pDC->StretchBlt(56, 144, 40, 54, &memDC, 56, 144, 40, 54, SRCCOPY);
}
if(m_bBtnDown)
{
pDC->StretchBlt(140, 144, 35, 54, &memDC, 140, 144, 35, 54, SRCCOPY);
}
memDC.SelectObject(poldBmp);
memDC.DeleteDC();
}
catch (CException* e)
{
e->ReportError();
e->Delete();
}
}
void CdemoDlg::OnClose()
{
KillTimer(100);
CDialog::OnClose();
}
void CdemoDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
if((point.x>56) && (point.x<96) && (point.y>144) && (point.y<198))
{
if(FALSE == m_bCtrlFlag)
{
m_bCtrlFlag = TRUE;
}
else
{
m_bCtrlFlag = FALSE;
}
}
if((point.x>140) && (point.x<175) && (point.y>144) && (point.y<198))
{
if(FALSE == m_bBtnDown)
{
m_bBtnDown = TRUE;
}
else
{
m_bBtnDown = FALSE;
}
}
CDialog::OnLButtonUp(nFlags, point);
}
void CdemoDlg::OnStnClickedStaticLcd()
{
// TODO: Add your control notification handler code here
}
void CdemoDlg::OnBnClickedBtnRecive()
{
m_SerialObj.ReadDataFromSerial();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -