⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 demodlg.cpp

📁 该示例代码演示了WinCE下
💻 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 + -