?? monicontroldlg.cpp
字號:
// 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 + -