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

📄 monicontroldlg.cpp

📁 云台及镜头控制系统 云台及镜头控制系统
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// MoniControlDlg.cpp : implementation file
//

#include "stdafx.h"
#include "MoniControl.h"
#include "MoniControlDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMoniControlDlg dialog

CMoniControlDlg::CMoniControlDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CMoniControlDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CMoniControlDlg)
	m_Address = 0;
	m_BaudRate = 0;
	m_Com = 0;
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CMoniControlDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMoniControlDlg)
	DDX_Control(pDX, IDC_UPMICRO, m_UpMicro);
	DDX_Control(pDX, IDC_UP, m_Up);
	DDX_Control(pDX, IDC_SMALLMICRO, m_SmallMicro);
	DDX_Control(pDX, IDC_SMALL, m_Small);
	DDX_Control(pDX, IDC_SHORTMICRO, m_ShortMicro);
	DDX_Control(pDX, IDC_SHORT, m_Short);
	DDX_Control(pDX, IDC_RIGHTUP, m_RightUp);
	DDX_Control(pDX, IDC_RIGHTMICRO, m_RightMicro);
	DDX_Control(pDX, IDC_RIGHTDOWN, m_RightDown);
	DDX_Control(pDX, IDC_RIGHT, m_Right);
	DDX_Control(pDX, IDC_OPENLIGHT, m_OpenLight);
	DDX_Control(pDX, IDC_OPENCOM, m_OpenCom);
	DDX_Control(pDX, IDC_OPENBRUSH, m_OpenBrush);
	DDX_Control(pDX, IDC_NEARMICRO, m_NearMicro);
	DDX_Control(pDX, IDC_NEAR, m_Near);
	DDX_Control(pDX, IDC_LONGMICRO, m_LongMicro);
	DDX_Control(pDX, IDC_LONG, m_Long);
	DDX_Control(pDX, IDC_LEFTUP, m_LeftUp);
	DDX_Control(pDX, IDC_LEFTMICRO, m_LeftMicro);
	DDX_Control(pDX, IDC_LEFTDOWN, m_LeftDown);
	DDX_Control(pDX, IDC_LEFT, m_Left);
	DDX_Control(pDX, IDC_FARMICRO, m_FarMicro);
	DDX_Control(pDX, IDC_FAR, m_Far);
	DDX_Control(pDX, IDC_DOWNMICRO, m_DownMicro);
	DDX_Control(pDX, IDC_DOWN, m_Down);
	DDX_Control(pDX, IDC_CLOSELIGHT, m_CloseLight);
	DDX_Control(pDX, IDC_CLOSECOM, m_CloseCom);
	DDX_Control(pDX, IDC_CLOSEBRUSH, m_CloseBrush);
	DDX_Control(pDX, IDC_BIGMICRO, m_BigMicro);
	DDX_Control(pDX, IDC_BIG, m_Big);
	DDX_Control(pDX, IDC_ACTSTATUS, m_ActStatus);
	DDX_CBIndex(pDX, IDC_COMBO_ADDRESS, m_Address);
	DDX_CBIndex(pDX, IDC_COMBO_BAUDRATE, m_BaudRate);
	DDX_CBIndex(pDX, IDC_COMBO_COM, m_Com);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CMoniControlDlg, CDialog)
	//{{AFX_MSG_MAP(CMoniControlDlg)
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_WM_LBUTTONDOWN()
	ON_BN_CLICKED(IDC_OPENCOM, OnOpencom)
	ON_BN_CLICKED(IDC_CLOSECOM, OnClosecom)
	ON_CBN_CLOSEUP(IDC_COMBO_ADDRESS, OnCloseupComboAddress)
	ON_WM_MOVE()
	ON_WM_MOUSEMOVE()
	ON_WM_CLOSE()
	ON_WM_CREATE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMoniControlDlg message handlers

BOOL CMoniControlDlg::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
	int	i=0;
	//加载各个按钮的图标
	hIconU_N=AfxGetApp()->LoadIcon(IDI_ICON_UP_N);
	hIconU_O=AfxGetApp()->LoadIcon(IDI_ICON_UP_O);
	hIconU_P=AfxGetApp()->LoadIcon(IDI_ICON_UP_P);

	hIconD_N=AfxGetApp()->LoadIcon(IDI_ICON_DOWN_N);
	hIconD_O=AfxGetApp()->LoadIcon(IDI_ICON_DOWN_O);
	hIconD_P=AfxGetApp()->LoadIcon(IDI_ICON_DOWN_P);

	hIconL_N=AfxGetApp()->LoadIcon(IDI_ICON_LEFT_N);
	hIconL_O=AfxGetApp()->LoadIcon(IDI_ICON_LEFT_O);
	hIconL_P=AfxGetApp()->LoadIcon(IDI_ICON_LEFT_P);

	hIconR_N=AfxGetApp()->LoadIcon(IDI_ICON_RIGHT_N);
	hIconR_O=AfxGetApp()->LoadIcon(IDI_ICON_RIGHT_O);
	hIconR_P=AfxGetApp()->LoadIcon(IDI_ICON_RIGHT_P);

	hIconLU_N=AfxGetApp()->LoadIcon(IDI_ICON_LEFTUP_N);
	hIconLU_O=AfxGetApp()->LoadIcon(IDI_ICON_LEFTUP_O);
	hIconLU_P=AfxGetApp()->LoadIcon(IDI_ICON_LEFTUP_P);

	hIconLD_N=AfxGetApp()->LoadIcon(IDI_ICON_LEFTDOWN_N);
	hIconLD_O=AfxGetApp()->LoadIcon(IDI_ICON_LEFTDOWN_O);
	hIconLD_P=AfxGetApp()->LoadIcon(IDI_ICON_LEFTDOWN_P);

	hIconRU_N=AfxGetApp()->LoadIcon(IDI_ICON_RIGHTUP_N);
	hIconRU_O=AfxGetApp()->LoadIcon(IDI_ICON_RIGHTUP_O);
	hIconRU_P=AfxGetApp()->LoadIcon(IDI_ICON_RIGHTUP_P);

	hIconRD_N=AfxGetApp()->LoadIcon(IDI_ICON_RIGHTDOWN_N);
	hIconRD_O=AfxGetApp()->LoadIcon(IDI_ICON_RIGHTDOWN_O);
	hIconRD_P=AfxGetApp()->LoadIcon(IDI_ICON_RIGHTDOWN_P);

	hIconB_N=AfxGetApp()->LoadIcon(IDI_ICON_BIG_N);
	hIconB_O=AfxGetApp()->LoadIcon(IDI_ICON_BIG_O);
	hIconB_P=AfxGetApp()->LoadIcon(IDI_ICON_BIG_P);

	hIconS_N=AfxGetApp()->LoadIcon(IDI_ICON_SMALL_N);
	hIconS_O=AfxGetApp()->LoadIcon(IDI_ICON_SMALL_O);
	hIconS_P=AfxGetApp()->LoadIcon(IDI_ICON_SMALL_P);

	hIconF_N=AfxGetApp()->LoadIcon(IDI_ICON_FAR_N);
	hIconF_O=AfxGetApp()->LoadIcon(IDI_ICON_FAR_O);
	hIconF_P=AfxGetApp()->LoadIcon(IDI_ICON_FAR_P);

	hIconN_N=AfxGetApp()->LoadIcon(IDI_ICON_NEAR_N);
	hIconN_O=AfxGetApp()->LoadIcon(IDI_ICON_NEAR_O);
	hIconN_P=AfxGetApp()->LoadIcon(IDI_ICON_NEAR_P);

	hIconLG_N=AfxGetApp()->LoadIcon(IDI_ICON_LONG_N);
	hIconLG_O=AfxGetApp()->LoadIcon(IDI_ICON_LONG_O);
	hIconLG_P=AfxGetApp()->LoadIcon(IDI_ICON_LONG_P);

	hIconSH_N=AfxGetApp()->LoadIcon(IDI_ICON_SHORT_N);
	hIconSH_O=AfxGetApp()->LoadIcon(IDI_ICON_SHORT_O);
	hIconSH_P=AfxGetApp()->LoadIcon(IDI_ICON_SHORT_P);

	hIconO_N=AfxGetApp()->LoadIcon(IDI_ICON_OPEN_N);
	hIconO_O=AfxGetApp()->LoadIcon(IDI_ICON_OPEN_O);
	hIconO_P=AfxGetApp()->LoadIcon(IDI_ICON_OPEN_P);

	hIconC_N=AfxGetApp()->LoadIcon(IDI_ICON_CLOSE_N);
	hIconC_O=AfxGetApp()->LoadIcon(IDI_ICON_CLOSE_O);
	hIconC_P=AfxGetApp()->LoadIcon(IDI_ICON_CLOSE_P);

	//初始化发送命令数据sendArray
	sendArray.RemoveAll();
	sendArray.SetSize(16);
	for(i=0;i<=3;i++)
	{
		sendArray.SetAt(i,0xFF);
	}
	for(i=4;i<=10;i++)
	{
		sendArray.SetAt(i,0);
	}
	sendArray.SetAt(13,0xFF);
	sendArray.SetAt(14,0xEE);
	sendArray.SetAt(15,0xEE);

	m_CloseCom.EnableWindow(false);       //使关闭串口按钮无效
	return TRUE;  // return TRUE  unless you set the focus to a control
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CMoniControlDlg::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 CMoniControlDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}




void CMoniControlDlg::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	POINT	myPoint;
	myPoint.x=point.x;
	myPoint.y=point.y;
	ClientToScreen(&myPoint);
	//按下【上】按钮
	if(m_CRect_U.PtInRect(myPoint))
	{
		m_Up.SetIcon(hIconU_P);         //设置图标为按下时的式样
		SendCommand(10100);             //发送上操作命令
		MSG	myMsg;
		this->SetCapture();             //锁定鼠标消息接收窗口
		while(1)
		{
			//监视是否有WM_LBUTTONUP消息
			if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP))
			{
				Sleep(20);             //命令间的间隔时间
				m_Up.SetIcon(hIconU_O);//设置图标为经过时的式样
				SendCommand(10101);    //发送停止上操作命令
				Sleep(20);             //命令间的间隔时间
				::ReleaseCapture();    //取消对鼠标消息的锁定
				break;
			}
		}
	}
	//按下【下】按钮
	if(m_CRect_D.PtInRect(myPoint))
	{
		m_Down.SetIcon(hIconD_P);
		SendCommand(10200);
		MSG	myMsg;
		this->SetCapture();
		while(1)
		{
			if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP))
			{
				Sleep(20);
				m_Down.SetIcon(hIconD_O);
				SendCommand(10201);
				Sleep(20);
				::ReleaseCapture();
				break;
			}
		}
	}

	//按下【左】按钮
	if(m_CRect_L.PtInRect(myPoint))
	{
		m_Left.SetIcon(hIconL_P);
		SendCommand(10300);
		MSG	myMsg;
		this->SetCapture();
		while(1)
		{
			if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP))
			{
				Sleep(20);
				m_Left.SetIcon(hIconL_O);
				SendCommand(10301);
				Sleep(20);
				::ReleaseCapture();
				break;
			}
		}
	}
	//按下【右】按钮
	if(m_CRect_R.PtInRect(myPoint))
	{
		m_Right.SetIcon(hIconR_P);
		SendCommand(10400);
		MSG	myMsg;
		this->SetCapture();
		while(1)
		{
			if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP))
			{
				Sleep(20);
				m_Right.SetIcon(hIconR_O);
				SendCommand(10401);
				Sleep(20);
				::ReleaseCapture();
				break;
			}
		}
	}
	//按下【左上】按钮
	if(m_CRect_LU.PtInRect(myPoint))
	{
		m_LeftUp.SetIcon(hIconLU_P);
		SendCommand(13100);
		MSG	myMsg;
		this->SetCapture();
		while(1)
		{
			if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP))
			{
				Sleep(20);
				m_LeftUp.SetIcon(hIconLU_O);
				SendCommand(13101);
				Sleep(20);
				::ReleaseCapture();
				break;
			}
		}
	}
	//按下【左下】按钮
	if(m_CRect_LD.PtInRect(myPoint))
	{
		m_LeftDown.SetIcon(hIconLD_P);
		SendCommand(13200);
		MSG	myMsg;
		this->SetCapture();
		while(1)
		{
			if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP))
			{
				Sleep(20);
				m_LeftDown.SetIcon(hIconLD_O);
				SendCommand(13201);
				Sleep(20);
				::ReleaseCapture();
				break;
			}
		}
	}
	//按下【右上】按钮
	if(m_CRect_RU.PtInRect(myPoint))
	{
		m_RightUp.SetIcon(hIconRU_P);
		SendCommand(14100);
		MSG	myMsg;
		this->SetCapture();
		while(1)
		{
			if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP))
			{
				Sleep(20);
				m_RightUp.SetIcon(hIconRU_O);
				SendCommand(14101);
				Sleep(20);
				::ReleaseCapture();
				break;
			}
		}
	}
	//按下【右下】按钮
	if(m_CRect_RD.PtInRect(myPoint))
	{
		m_RightDown.SetIcon(hIconRD_P);
		SendCommand(14200);
		MSG	myMsg;
		this->SetCapture();
		while(1)
		{
			if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP))
			{
				Sleep(20);
				m_RightDown.SetIcon(hIconRD_O);
				SendCommand(14201);
				Sleep(20);
				::ReleaseCapture();
				break;
			}
		}
	}
	//按下【上】微调按钮
	if(m_CRect_UM.PtInRect(myPoint))
	{
		m_UpMicro.SetIcon(hIconU_P);
		SendCommand(10110);
		MSG	myMsg;
		this->SetCapture();
		while(1)
		{
			if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP))
			{
				Sleep(20);
				m_UpMicro.SetIcon(hIconU_O);
				m_ActStatus.SetWindowText("无操作!");
				//SendCommand('U');
				//Sleep(20);
				::ReleaseCapture();
				break;
			}
		}
	}
	//按下【下】微调按钮
	if(m_CRect_DM.PtInRect(myPoint))
	{
		m_DownMicro.SetIcon(hIconD_P);
		SendCommand(10210);
		MSG	myMsg;
		this->SetCapture();
		while(1)
		{
			if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP))
			{
				Sleep(20);
				m_DownMicro.SetIcon(hIconD_O);
				m_ActStatus.SetWindowText("无操作!");
				//SendCommand('D');
				//Sleep(20);
				::ReleaseCapture();
				break;
			}
		}
	}
	//按下【左】微调按钮
	if(m_CRect_LM.PtInRect(myPoint))
	{
		m_LeftMicro.SetIcon(hIconL_P);
		SendCommand(10310);
		MSG	myMsg;
		this->SetCapture();
		while(1)
		{
			if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP))
			{
				Sleep(20);
				m_LeftMicro.SetIcon(hIconL_O);
				m_ActStatus.SetWindowText("无操作!");
				//SendCommand('L');
				//Sleep(20);
				::ReleaseCapture();
				break;
			}
		}
	}
	//按下【右】微调按钮
	if(m_CRect_RM.PtInRect(myPoint))
	{
		m_RightMicro.SetIcon(hIconR_P);
		SendCommand(10410);
		MSG	myMsg;
		this->SetCapture();
		while(1)
		{
			if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP))
			{
				Sleep(20);
				m_RightMicro.SetIcon(hIconR_O);
				m_ActStatus.SetWindowText("无操作!");
				//SendCommand('R');
				//Sleep(20);
				::ReleaseCapture();
				break;
			}
		}
	}
	//按下【大】按钮
	if(m_CRect_B.PtInRect(myPoint))
	{
		m_Big.SetIcon(hIconB_P);
		SendCommand(20100);
		MSG	myMsg;
		this->SetCapture();
		while(1)
		{
			if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP))
			{
				Sleep(20);
				m_Big.SetIcon(hIconB_O);
				SendCommand(20101);
				Sleep(20);
				::ReleaseCapture();
				break;
			}
		}
	}
	//按下【小】按钮
	if(m_CRect_S.PtInRect(myPoint))
	{
		m_Small.SetIcon(hIconS_P);
		SendCommand(20200);
		MSG	myMsg;
		this->SetCapture();
		while(1)
		{
			if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP))
			{
				Sleep(20);
				m_Small.SetIcon(hIconS_O);
				SendCommand(20201);
				Sleep(20);
				::ReleaseCapture();
				break;
			}
		}
	}
	//按下【远】按钮
	if(m_CRect_F.PtInRect(myPoint))
	{
		m_Far.SetIcon(hIconF_P);
		SendCommand(20300);
		MSG	myMsg;
		this->SetCapture();
		while(1)
		{
			if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP))
			{
				Sleep(20);
				m_Far.SetIcon(hIconF_O);
				SendCommand(20301);
				Sleep(20);
				::ReleaseCapture();
				break;
			}
		}
	}
	//按下【近】按钮

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -