// TopToolbar.cpp : ʵÏÖÎļþ
|
//
|
|
#include "stdafx.h"
|
#include "Servo.h"
|
#include "TopToolbar.h"
|
#include "afxdialogex.h"
|
#include "Common.h"
|
|
|
#define SHOW_BATCH 1
|
#define SHOW_CT 1
|
|
// CTopToolbar ¶Ô»°¿ò
|
|
IMPLEMENT_DYNAMIC(CTopToolbar, CDialogEx)
|
|
CTopToolbar::CTopToolbar(CWnd* pParent /*=NULL*/)
|
: CDialogEx(IDD_TOP_TOOLBAR, pParent)
|
{
|
m_crBkgnd = TOP_TOOLBAR_BACKGROUND;
|
m_hbrBkgnd = nullptr;
|
}
|
|
CTopToolbar::~CTopToolbar()
|
{
|
}
|
|
void CTopToolbar::DoDataExchange(CDataExchange* pDX)
|
{
|
CDialogEx::DoDataExchange(pDX);
|
DDX_Control(pDX, IDC_BUTTON_RUN, m_btnRun);
|
DDX_Control(pDX, IDC_BUTTON_RUN_BATCH, m_btnRunBatch);
|
DDX_Control(pDX, IDC_BUTTON_RUN_CT, m_btnRunCt);
|
DDX_Control(pDX, IDC_BUTTON_STOP, m_btnStop);
|
DDX_Control(pDX, IDC_BUTTON_JOBS, m_btnCJobs);
|
DDX_Control(pDX, IDC_BUTTON_ALARM, m_btnAlarm);
|
DDX_Control(pDX, IDC_BUTTON_SETTINGS, m_btnSettings);
|
DDX_Control(pDX, IDC_BUTTON_PORT_CONFIG, m_btnPortConfig);
|
DDX_Control(pDX, IDC_BUTTON_ROBOT, m_btnRobot);
|
DDX_Control(pDX, IDC_BUTTON_OPERATOR, m_btnOperator);
|
}
|
|
|
BEGIN_MESSAGE_MAP(CTopToolbar, CDialogEx)
|
ON_WM_CTLCOLOR()
|
ON_WM_DESTROY()
|
ON_WM_SIZE()
|
ON_NOTIFY(BLBUTTON_MENU_ITEM_CLICKED, IDC_BUTTON_OPERATOR, &CTopToolbar::OnButtonOperatorMenuClicked)
|
END_MESSAGE_MAP()
|
|
|
// CTopToolbar ÏûÏ¢´¦Àí³ÌÐò
|
|
|
BOOL CTopToolbar::OnInitDialog()
|
{
|
CDialogEx::OnInitDialog();
|
|
InitBtn(m_btnRun, "Run_High_32.ico", "Run_Gray_32.ico");
|
InitBtn(m_btnRunBatch, "Run_High_32.ico", "Run_Gray_32.ico");
|
InitBtn(m_btnRunCt, "RunCt_High_32.ico", "RunCt_Gray_32.ico");
|
InitBtn(m_btnStop, "Stop_High_32.ico", "Stop_Gray_32.ico");
|
InitBtn(m_btnAlarm, "Alarm_o_32.ico", "Alarm_gray_32.ico");
|
InitBtn(m_btnCJobs, "ControlJob_High_32.ico", "ControlJob_Gray_32.ico");
|
InitBtn(m_btnSettings, "Settings_High_32.ico", "Settings_Gray_32.ico");
|
InitBtn(m_btnRobot, "Robot_High_32.ico", "Robot_Gray_32.ico");
|
InitBtn(m_btnPortConfig, "PortConfig_High_32.ico", "PortConfig_Gray_32.ico");
|
InitBtn(m_btnOperator, "Operator_High_32.ico", "Operator_Gray_32.ico");
|
HMENU hMenu = LoadMenu(AfxGetInstanceHandle(), MAKEINTRESOURCEA(IDR_MENU_OPEATOR));
|
m_btnOperator.SetMenu(hMenu);
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
// Òì³£: OCX ÊôÐÔÒ³Ó¦·µ»Ø FALSE
|
}
|
|
|
HBRUSH CTopToolbar::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
|
{
|
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
|
|
if (nCtlColor == CTLCOLOR_STATIC) {
|
pDC->SetBkColor(m_crBkgnd);
|
}
|
|
if (m_hbrBkgnd == nullptr) {
|
m_hbrBkgnd = CreateSolidBrush(m_crBkgnd);
|
}
|
|
return m_hbrBkgnd;
|
}
|
|
|
void CTopToolbar::OnDestroy()
|
{
|
CDialogEx::OnDestroy();
|
|
if (m_hbrBkgnd != nullptr) {
|
::DeleteObject(m_hbrBkgnd);
|
m_hbrBkgnd = nullptr;
|
}
|
}
|
|
|
void CTopToolbar::OnSize(UINT nType, int cx, int cy)
|
{
|
CDialogEx::OnSize(nType, cx, cy);
|
if (GetDlgItem(IDC_BUTTON_RUN) == nullptr) return;
|
Resize();
|
}
|
|
#define BTN_WIDTH 60
|
#define BTN_HEIGHT 30
|
void CTopToolbar::Resize()
|
{
|
CWnd* pItem;
|
CRect rcClient, rcItem;
|
GetClientRect(&rcClient);
|
int nBthHeight = (rcClient.Height() - 10);
|
int x = 2, y = 3;
|
|
pItem = GetDlgItem(IDC_BUTTON_RUN);
|
pItem->MoveWindow(x, y, BTN_WIDTH, nBthHeight);
|
x += BTN_WIDTH;
|
x += 2;
|
|
#ifdef SHOW_BATCH
|
pItem = GetDlgItem(IDC_BUTTON_RUN_BATCH);
|
pItem->MoveWindow(x, y, BTN_WIDTH, nBthHeight);
|
x += BTN_WIDTH;
|
x += 2;
|
#endif
|
|
#ifdef SHOW_CT
|
pItem = GetDlgItem(IDC_BUTTON_RUN_CT);
|
pItem->MoveWindow(x, y, BTN_WIDTH, nBthHeight);
|
x += BTN_WIDTH;
|
x += 2;
|
#endif
|
|
pItem = GetDlgItem(IDC_BUTTON_STOP);
|
pItem->MoveWindow(x, y, BTN_WIDTH, nBthHeight);
|
x += BTN_WIDTH;
|
x += 2;
|
|
pItem = GetDlgItem(IDC_BUTTON_JOBS);
|
pItem->MoveWindow(x, y, BTN_WIDTH, nBthHeight);
|
x += BTN_WIDTH;
|
x += 2;
|
|
pItem = GetDlgItem(IDC_BUTTON_ALARM);
|
pItem->MoveWindow(x, y, BTN_WIDTH, nBthHeight);
|
x += BTN_WIDTH;
|
x += 2;
|
|
pItem = GetDlgItem(IDC_TOOLBAR_LINE1);
|
pItem->MoveWindow(x, y + 6, 2, nBthHeight - 12);
|
x += 4;
|
|
pItem = GetDlgItem(IDC_BUTTON_SETTINGS);
|
pItem->MoveWindow(x, y, BTN_WIDTH, nBthHeight);
|
x += BTN_WIDTH;
|
x += 2;
|
|
pItem = GetDlgItem(IDC_BUTTON_PORT_CONFIG);
|
pItem->MoveWindow(x, y, BTN_WIDTH, nBthHeight);
|
x += BTN_WIDTH;
|
x += 2;
|
|
pItem = GetDlgItem(IDC_BUTTON_ROBOT);
|
pItem->MoveWindow(x, y, BTN_WIDTH, nBthHeight);
|
x += BTN_WIDTH;
|
x += 2;
|
|
x = rcClient.right - 5 - BTN_WIDTH - 20;
|
pItem = GetDlgItem(IDC_BUTTON_OPERATOR);
|
pItem->MoveWindow(x, y, BTN_WIDTH + 20, nBthHeight);
|
|
|
CWnd* pLine = GetDlgItem(IDC_LINE1);
|
pLine->MoveWindow(0, rcClient.bottom - 2, rcClient.Width(), 2);
|
}
|
|
void CTopToolbar::InitBtn(CBlButton& btn, const char* pszIcon1, const char* pszIcon2)
|
{
|
CString strIcon1, strIcon2;
|
HICON hIcon1, hIcon2;
|
strIcon1.Format(_T("%s\\Res\\%s"), theApp.m_strAppDir, pszIcon1);
|
strIcon2.Format(_T("%s\\Res\\%s"), theApp.m_strAppDir, pszIcon2);
|
hIcon1 = (HICON)::LoadImage(AfxGetInstanceHandle(),
|
strIcon1, IMAGE_ICON, 32, 32,
|
LR_LOADFROMFILE | LR_DEFAULTCOLOR | LR_CREATEDIBSECTION | LR_DEFAULTSIZE);
|
hIcon2 = (HICON)::LoadImage(AfxGetInstanceHandle(),
|
strIcon2, IMAGE_ICON, 32, 32,
|
LR_LOADFROMFILE | LR_DEFAULTCOLOR | LR_CREATEDIBSECTION | LR_DEFAULTSIZE);
|
btn.SetBkgndColor(BS_NORMAL, TOP_TOOLBAR_BACKGROUND);
|
btn.SetBkgndColor(BS_PRESS, RGB(185, 209, 234));
|
btn.SetBkgndColor(BS_DISABLE, TOP_TOOLBAR_BACKGROUND);
|
btn.SetFrameColor(BS_NORMAL, TOP_TOOLBAR_BACKGROUND);
|
btn.SetFrameColor(BS_PRESS, RGB(185, 209, 234));
|
btn.SetFrameColor(BS_HOVER, RGB(185, 209, 234));
|
btn.SetFrameColor(BS_DISABLE, TOP_TOOLBAR_BACKGROUND);
|
btn.SetIcon(hIcon1, hIcon2, 32);
|
}
|
|
CWnd* CTopToolbar::GetBtn(UINT nId)
|
{
|
return GetDlgItem(nId);
|
}
|
|
void CTopToolbar::SetOperatorBtnText(const char* pszText)
|
{
|
m_btnOperator.SetWindowText(pszText);
|
}
|
|
BOOL CTopToolbar::OnCommand(WPARAM wParam, LPARAM lParam)
|
{
|
switch (LOWORD(wParam)) {
|
case IDC_BUTTON_RUN:
|
case IDC_BUTTON_RUN_BATCH:
|
case IDC_BUTTON_RUN_CT:
|
case IDC_BUTTON_STOP:
|
case IDC_BUTTON_JOBS:
|
case IDC_BUTTON_ALARM:
|
case IDC_BUTTON_SETTINGS:
|
case IDC_BUTTON_PORT_CONFIG:
|
case IDC_BUTTON_ROBOT:
|
GetParent()->SendMessage(ID_MSG_TOOLBAR_BTN_CLICKED, 0, LOWORD(wParam));
|
break;
|
}
|
|
return CDialogEx::OnCommand(wParam, lParam);
|
}
|
|
void CTopToolbar::OnButtonOperatorMenuClicked(NMHDR* pNMHDR, LRESULT* pResult)
|
{
|
BLBUTTON_NMHDR* pblbNmhdr = reinterpret_cast<BLBUTTON_NMHDR*>(pNMHDR);
|
GetParent()->SendMessage(ID_MSG_TOOLBAR_BTN_CLICKED, (int)pblbNmhdr->dwData, IDC_BUTTON_OPERATOR);
|
|
|
*pResult = 0;
|
}
|
|
HMENU CTopToolbar::GetOperatorMenu()
|
{
|
return m_btnOperator.GetMenu();
|
}
|
|
BOOL CTopToolbar::PreTranslateMessage(MSG* pMsg)
|
{
|
if (pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE) {
|
return TRUE;
|
}
|
|
return CDialogEx::PreTranslateMessage(pMsg);
|
}
|