|
@@ -116,21 +116,72 @@ END_MESSAGE_MAP()
|
|
|
|
|
|
void CIRControlWnd::AdjustLayout()
|
|
|
{
|
|
|
- if (GetSafeHwnd() == nullptr || (AfxGetMainWnd() != nullptr && AfxGetMainWnd()->IsIconic()))
|
|
|
+ if (GetSafeHwnd() == nullptr ||
|
|
|
+ (AfxGetMainWnd() != nullptr && AfxGetMainWnd()->IsIconic()))
|
|
|
{
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ int dr = 3; // 行间距
|
|
|
+ int dc = 5; // 列间距;
|
|
|
+ CRect rcCtrl;
|
|
|
CRect rectClient;
|
|
|
GetClientRect(rectClient);
|
|
|
+ TRACE2(_T("更新后的大小:%d,%d"), rectClient.Width(), rectClient.Height());
|
|
|
+ m_btnRestart.SetWindowPos(nullptr, rectClient.left + dr, rectClient.top + dr, (rectClient.Width() - dr * 3) / 2, m_nComboHeight, SWP_NOACTIVATE | SWP_NOZORDER);
|
|
|
+
|
|
|
+ m_btnRestart.GetWindowRect(rcCtrl);
|
|
|
+ ScreenToClient(rcCtrl);
|
|
|
+ m_wndSignalCheck.SetWindowPos(nullptr, rcCtrl.right + dr, rectClient.top + dr, rcCtrl.Width(), m_nComboHeight, SWP_NOACTIVATE | SWP_NOZORDER);
|
|
|
+
|
|
|
+ m_wndSignalCheck.GetWindowRect(rcCtrl);
|
|
|
+ ScreenToClient(rcCtrl);
|
|
|
+ // 注意:此combobox高度并是包含了下拉项的高度;
|
|
|
+ m_wndSignalCombo.SetWindowPos(nullptr, rectClient.left + dr, rcCtrl.bottom + dr, rectClient.Width() - dc * 2, m_nComboHeight + 233, SWP_NOACTIVATE | SWP_NOZORDER);
|
|
|
+ //::MoveWindow(m_wndSignalCombo.m_hWnd, rectClient.left + 5, rcCtrl.bottom + 5, rectClient.Width() - 10, m_nComboHeight + 233, TRUE);
|
|
|
+ //m_wndSignalCombo.SendMessage(CB_SETITEMHEIGHT, (WPARAM)-1, (LPARAM)19); //改变控件本身的高度
|
|
|
+
|
|
|
+ m_wndSignalCombo.GetWindowRect(rcCtrl);
|
|
|
+ ScreenToClient(rcCtrl);
|
|
|
+ // 注意:此combobox高度并是包含了下拉项的高度;
|
|
|
+ m_cbTree1.SetWindowPos(nullptr, rectClient.left + dr, rcCtrl.bottom + dr, (rectClient.Width() - dr*4) / 3, m_nComboHeight + 233, SWP_NOACTIVATE | SWP_NOZORDER);
|
|
|
+
|
|
|
+ m_cbTree1.GetWindowRect(rcCtrl);
|
|
|
+ ScreenToClient(rcCtrl);
|
|
|
+ // 注意:此combobox高度并是包含了下拉项的高度;
|
|
|
+ m_cbTree2.SetWindowPos(nullptr, rcCtrl.right + 2, rcCtrl.top, rcCtrl.Width(), m_nComboHeight + 233, SWP_NOACTIVATE | SWP_NOZORDER);
|
|
|
+
|
|
|
+
|
|
|
+ m_cbTree2.GetWindowRect(rcCtrl);
|
|
|
+ ScreenToClient(rcCtrl);
|
|
|
+ // 注意:此combobox高度并是包含了下拉项的高度;
|
|
|
+ m_cbTree3.SetWindowPos(nullptr, rcCtrl.right + 2, rcCtrl.top, rcCtrl.Width(), m_nComboHeight + 233, SWP_NOACTIVATE | SWP_NOZORDER);
|
|
|
|
|
|
- m_btnRestart.SetWindowPos(nullptr, rectClient.left + 5, rectClient.top + 5, 120, m_nComboHeight, SWP_NOACTIVATE | SWP_NOZORDER);
|
|
|
- m_wndSignalCheck.SetWindowPos(nullptr, rectClient.left + 130, rectClient.top + 5, 120, m_nComboHeight, SWP_NOACTIVATE | SWP_NOZORDER);
|
|
|
|
|
|
- m_wndSignalCombo.SetWindowPos(nullptr, rectClient.left + 5, rectClient.top + m_nComboHeight + 10, 245, m_nComboHeight + 210, SWP_NOACTIVATE | SWP_NOZORDER);
|
|
|
#if __PANE_DLG__
|
|
|
m_dlgIRControl.SetWindowPos(nullptr, rectClient.left, rectClient.top + m_nComboHeight + 50, rectClient.Width(), rectClient.Height(), SWP_NOACTIVATE);
|
|
|
#endif
|
|
|
+
|
|
|
+ m_cbTree3.GetWindowRect(rcCtrl);
|
|
|
+ ScreenToClient(rcCtrl);
|
|
|
+
|
|
|
+ int sx = 0, sy = rcCtrl.bottom + dr;
|
|
|
+ int i = 0, id = 10000;
|
|
|
+ int nWidth = (rectClient.Width() - 25) / 4;
|
|
|
+ DWORD dwStyle = WS_CHILD | WS_VISIBLE;
|
|
|
+ for (std::vector<BtnInfo>::iterator it = m_vtBtnInfo.begin(); it != m_vtBtnInfo.end(); it++)
|
|
|
+ {
|
|
|
+ if (it->pBTN == nullptr)
|
|
|
+ continue;
|
|
|
+ if (i != 0 && i % 4 == 0)
|
|
|
+ {//换行;
|
|
|
+ sy += it->height + 5;
|
|
|
+ }
|
|
|
+
|
|
|
+ sx = (i % 4) * nWidth + (i % 4 + 1) * 5;
|
|
|
+ it->pBTN->SetWindowPos(nullptr, sx, sy, nWidth, it->height, SWP_NOACTIVATE | SWP_NOZORDER);
|
|
|
+ i++;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
int CIRControlWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
@@ -165,13 +216,32 @@ int CIRControlWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
|
m_wndSignalCheck.m_nFlatStyle = CMFCButton::BUTTONSTYLE_FLAT;
|
|
|
m_wndSignalCheck.SizeToContent();
|
|
|
|
|
|
- if (!m_wndSignalCombo.Create(dwViewStyle| WS_VSCROLL| WS_HSCROLL, rectDummy, this, ID_COMBOBOX_SIGNAL_FILE))
|
|
|
+ if (!m_wndSignalCombo.Create(dwViewStyle | WS_VSCROLL | WS_HSCROLL, CRect(0, 0, 100, 20), this, ID_COMBOBOX_SIGNAL_FILE))
|
|
|
+ {
|
|
|
+ TRACE0("未能创建信号集下拉框 \n");
|
|
|
+ return -1; // 未能创建
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!m_cbTree1.Create(dwViewStyle | WS_VSCROLL | WS_HSCROLL, rectDummy, this, ID_COMBOBOX_SIGNAL_FILE + 1))
|
|
|
+ {
|
|
|
+ TRACE0("未能创建信号集下拉框 \n");
|
|
|
+ return -1; // 未能创建
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!m_cbTree2.Create(dwViewStyle | WS_VSCROLL | WS_HSCROLL, rectDummy, this, ID_COMBOBOX_SIGNAL_FILE + 2))
|
|
|
+ {
|
|
|
+ TRACE0("未能创建信号集下拉框 \n");
|
|
|
+ return -1; // 未能创建
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!m_cbTree3.Create(dwViewStyle | WS_VSCROLL | WS_HSCROLL, rectDummy, this, ID_COMBOBOX_SIGNAL_FILE + 3))
|
|
|
{
|
|
|
TRACE0("未能创建信号集下拉框 \n");
|
|
|
return -1; // 未能创建
|
|
|
}
|
|
|
|
|
|
LoadSignals();
|
|
|
+ SetPropListFont();
|
|
|
|
|
|
CRect rectCombo;
|
|
|
m_wndSignalCombo.GetClientRect(&rectCombo);
|
|
@@ -211,9 +281,9 @@ int CIRControlWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
|
TW::LoadXml(signalpath.c_str());
|
|
|
}
|
|
|
|
|
|
- std::thread t([](CIRControlWnd *pWnd) {
|
|
|
+ std::thread t([](CIRControlWnd* pWnd) {
|
|
|
//while (true)
|
|
|
- while( IsWindow(pWnd->m_hWnd) )
|
|
|
+ while (IsWindow(pWnd->m_hWnd))
|
|
|
{
|
|
|
if (g_pMainFrame->m_bShotIR && pWnd->m_bSendKey)
|
|
|
{
|
|
@@ -227,7 +297,7 @@ int CIRControlWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
|
}
|
|
|
Sleep(20);
|
|
|
}
|
|
|
- },this);
|
|
|
+ }, this);
|
|
|
t.detach();
|
|
|
|
|
|
return 0;
|
|
@@ -289,7 +359,7 @@ void CIRControlWnd::OnSetFocus(CWnd* pOldWnd)
|
|
|
void CIRControlWnd::OnSettingChange(UINT uFlags, LPCTSTR lpszSection)
|
|
|
{
|
|
|
CDockablePane::OnSettingChange(uFlags, lpszSection);
|
|
|
- //SetPropListFont();
|
|
|
+ SetPropListFont();
|
|
|
}
|
|
|
|
|
|
void CIRControlWnd::OnCbnSelchangeSignal()
|
|
@@ -335,7 +405,10 @@ void CIRControlWnd::SetPropListFont()
|
|
|
|
|
|
m_fntPropList.CreateFontIndirect(&lf);
|
|
|
|
|
|
- //m_wndObjectCombo.SetFont(&m_fntPropList);
|
|
|
+ m_wndSignalCombo.SetFont(&m_fntPropList);
|
|
|
+ m_cbTree1.SetFont(&m_fntPropList);
|
|
|
+ m_cbTree2.SetFont(&m_fntPropList);
|
|
|
+ m_cbTree3.SetFont(&m_fntPropList);
|
|
|
}
|
|
|
|
|
|
void CIRControlWnd::StartIRDevice(BOOL bReStart)
|
|
@@ -358,7 +431,7 @@ void CIRControlWnd::StartIRDevice(BOOL bReStart)
|
|
|
m_wndSignalCombo.SelectString(0, Global::g_Config.use_signal.c_str());
|
|
|
}
|
|
|
|
|
|
- if ( !RedRat::g_IsAppRunning(Global::g_Config.redratpath.c_str()) )
|
|
|
+ if (!RedRat::g_IsAppRunning(Global::g_Config.redratpath.c_str()))
|
|
|
{
|
|
|
if (RedRat::g_StartIRApp(Global::g_Config.redratpath.c_str(), signale.c_str(), 40000))
|
|
|
{
|
|
@@ -394,7 +467,7 @@ void CIRControlWnd::StartIRDevice(BOOL bReStart)
|
|
|
}
|
|
|
|
|
|
return 1;
|
|
|
- }, bReStart);
|
|
|
+ }, bReStart);
|
|
|
t.detach();
|
|
|
}
|
|
|
|
|
@@ -586,7 +659,7 @@ void CIRControlWnd::Loadlayout(std::vector<BtnInfo>& vt)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- int sx = 0, sy = m_nComboHeight*2+15;
|
|
|
+ int sx = 0, sy = m_nComboHeight * 2 + 15;
|
|
|
int i = 0, id = 10000;
|
|
|
DWORD dwStyle = WS_CHILD | WS_VISIBLE;
|
|
|
for (std::vector<BtnInfo>::iterator it = vt.begin(); it != vt.end(); it++)
|
|
@@ -612,7 +685,7 @@ void CIRControlWnd::Loadlayout(std::vector<BtnInfo>& vt)
|
|
|
it->pBTN->SetMouseCursorHand();
|
|
|
|
|
|
// 存入map中;
|
|
|
- m_map_btn.insert(std::pair<UINT, BtnInfo&>(BTNID+i, *it));
|
|
|
+ m_map_btn.insert(std::pair<UINT, BtnInfo&>(BTNID + i, *it));
|
|
|
|
|
|
i++;
|
|
|
}
|
|
@@ -725,9 +798,9 @@ void CIRControlWnd::UpdateSignalBtnStatus()
|
|
|
if (TW::GetSignalsName)
|
|
|
data = TW::GetSignalsName();
|
|
|
}
|
|
|
- else{
|
|
|
+ else {
|
|
|
// 获取信号集;
|
|
|
- if (RedRat::g_getSignalsName){
|
|
|
+ if (RedRat::g_getSignalsName) {
|
|
|
// 获取信号数据集,以\n分隔;
|
|
|
data = RedRat::g_getSignalsName();
|
|
|
}
|
|
@@ -817,7 +890,7 @@ void CIRControlWnd::AddHScroll()
|
|
|
|
|
|
LRESULT CIRControlWnd::OnIRShotImg(WPARAM wparam, LPARAM lparam)
|
|
|
{
|
|
|
-
|
|
|
+
|
|
|
return LRESULT();
|
|
|
}
|
|
|
|