|
@@ -163,6 +163,14 @@ int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
|
|
|
|
SetTimer(0,100,NULL);
|
|
SetTimer(0,100,NULL);
|
|
|
|
|
|
|
|
+ RegisterDeviceChange();
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
|
+ ASSERT_VALID(pRibbon);
|
|
|
|
+ CMFCRibbonComboBox* pCameraCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_CAMERA_COMBOBOX));
|
|
|
|
+ m_cap.EnumDevices(pCameraCombo);
|
|
|
|
+
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -772,6 +780,33 @@ void CMainFrame::OnUpdateSwitcherCheckboxB(CCmdUI* pCmdUI)
|
|
pCmdUI->SetCheck(m_bSwitcherCheckB);
|
|
pCmdUI->SetCheck(m_bSwitcherCheckB);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+bool CMainFrame::RegisterDeviceChange()
|
|
|
|
+{
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ const GUID GUID_DEVINTERFACE_LIST[] = {
|
|
|
|
+ { 0xA5DCBF10, 0x6530, 0x11D2,{ 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED } },
|
|
|
|
+ { 0x53f56307, 0xb6bf, 0x11d0,{ 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b } },
|
|
|
|
+ { 0x4D1E55B2, 0xF16F, 0x11CF,{ 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30 } },
|
|
|
|
+ { 0x745A17A0, 0x74D3, 0x11D0,{ 0xB6, 0xFE, 0x00, 0xA0, 0xC9, 0x0F, 0x57, 0xDA } },
|
|
|
|
+ { 0xad498944, 0x762f, 0x11d0,{ 0x8d, 0xcb, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c } },
|
|
|
|
+ { 0x4d36e96c, 0xe325, 0x11ce,{ 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 } }
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ DEV_BROADCAST_DEVICEINTERFACE DevBroadcastDeviceInterface;
|
|
|
|
+
|
|
|
|
+ memset(&DevBroadcastDeviceInterface, 0, sizeof(DEV_BROADCAST_DEVICEINTERFACE));
|
|
|
|
+ DevBroadcastDeviceInterface.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
|
|
|
|
+ DevBroadcastDeviceInterface.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
|
|
|
|
+
|
|
|
|
+ DevBroadcastDeviceInterface.dbcc_classguid = GUID_DEVINTERFACE_LIST[5];
|
|
|
|
+ HDEVNOTIFY hDevNotify = RegisterDeviceNotification(this->GetSafeHwnd(), &DevBroadcastDeviceInterface, DEVICE_NOTIFY_WINDOW_HANDLE);
|
|
|
|
+
|
|
|
|
+ return hDevNotify ? true : false;
|
|
|
|
+}
|
|
|
|
+
|
|
BOOL CMainFrame::OnDeviceChange(UINT nEventType, DWORD_PTR dwData)
|
|
BOOL CMainFrame::OnDeviceChange(UINT nEventType, DWORD_PTR dwData)
|
|
{
|
|
{
|
|
CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
@@ -781,8 +816,12 @@ BOOL CMainFrame::OnDeviceChange(UINT nEventType, DWORD_PTR dwData)
|
|
CMFCRibbonComboBox* pSwitcherCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_COMBOBOX));
|
|
CMFCRibbonComboBox* pSwitcherCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_COMBOBOX));
|
|
ASSERT_VALID(pInfradeCombo);
|
|
ASSERT_VALID(pInfradeCombo);
|
|
ASSERT_VALID(pSwitcherCombo);
|
|
ASSERT_VALID(pSwitcherCombo);
|
|
|
|
+#ifdef _DEBUG
|
|
|
|
+ if ( dwData != 0 )
|
|
|
|
+ TRACE("dwData 不为空\r\n");
|
|
|
|
+#endif
|
|
|
|
|
|
-
|
|
+ DEV_BROADCAST_DEVICEINTERFACE* pdbd = (DEV_BROADCAST_DEVICEINTERFACE*)dwData;
|
|
DEV_BROADCAST_PORT *pbdp = (DEV_BROADCAST_PORT*)dwData;
|
|
DEV_BROADCAST_PORT *pbdp = (DEV_BROADCAST_PORT*)dwData;
|
|
if ( pbdp && _tcsstr(pbdp->dbcp_name, _T("COM")) )
|
|
if ( pbdp && _tcsstr(pbdp->dbcp_name, _T("COM")) )
|
|
{
|
|
{
|
|
@@ -860,6 +899,15 @@ BOOL CMainFrame::OnDeviceChange(UINT nEventType, DWORD_PTR dwData)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
|
+ ASSERT_VALID(pRibbon);
|
|
|
|
+ CMFCRibbonComboBox* pCameraCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_CAMERA_COMBOBOX));
|
|
|
|
+ m_cap.EnumDevices(pCameraCombo);
|
|
|
|
+ }
|
|
|
|
|
|
TRACE(_T("OnDeviceChange\n"));
|
|
TRACE(_T("OnDeviceChange\n"));
|
|
|
|
|
|
@@ -1006,30 +1054,7 @@ bool CMainFrame::IsUSBSwitchPort(CString strCOMPort)
|
|
|
|
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
-
|
|
|
|
-void CMainFrame::SwitchUSB(BOOL bCheckA)
|
|
|
|
-{
|
|
|
|
- if ( m_SerialUSB.IsOpen() )
|
|
|
|
- {
|
|
|
|
- m_SerialUSB.SetTimeouts(0,2,50,1,150);
|
|
|
|
-
|
|
|
|
- byte szSendData[MAX_SWITCH_LEN] = {0};
|
|
|
|
- _stprintf_s((TCHAR*)szSendData, MAX_SWITCH_LEN, _T("*SET PORT %c\r"), bCheckA ? 'A':'B');
|
|
|
|
|
|
|
|
-
|
|
|
|
- if ( m_SerialUSB.WriteSync(szSendData, _tcslen((TCHAR*)szSendData)) )
|
|
|
|
- {
|
|
|
|
- memset(szSendData, 0, MAX_SWITCH_LEN);
|
|
|
|
- m_SerialUSB.ReadSync(szSendData, MAX_SWITCH_LEN);
|
|
|
|
- TRACE("切换U盘成功\n");
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
- {
|
|
|
|
- TRACE("切换U盘失败\n");
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-*/
|
|
|
|
void CMainFrame::OnTimer(UINT_PTR nIDEvent)
|
|
void CMainFrame::OnTimer(UINT_PTR nIDEvent)
|
|
{
|
|
{
|
|
|
|
|
|
@@ -1076,3 +1101,33 @@ void CMainFrame::OnTimer(UINT_PTR nIDEvent)
|
|
|
|
|
|
CMDIFrameWndEx::OnTimer(nIDEvent);
|
|
CMDIFrameWndEx::OnTimer(nIDEvent);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
|
|
|
|
+{
|
|
|
|
+
|
|
|
|
+ if (pMsg->message == WM_KEYDOWN)
|
|
|
|
+ {
|
|
|
|
+ if (pMsg->wParam == VK_F3)
|
|
|
|
+ {
|
|
|
|
+ static BOOL bTopWnd = FALSE;
|
|
|
|
+ if (bTopWnd == FALSE)
|
|
|
|
+ {
|
|
|
|
+ SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
|
|
|
|
+ CString strVersionInfo = _T("视频采集卡 - 前置窗口(请按F3取消或开启前置)");
|
|
|
|
+ SetWindowText(strVersionInfo);
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ SetWindowPos(&wndNoTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
|
|
|
|
+ CString strVersionInfo = _T("视频采集卡 - 取消前置(请按F3取消或开启前置)");
|
|
|
|
+ SetWindowText(strVersionInfo);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ bTopWnd = !bTopWnd;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ return TRUE;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return CMDIFrameWndEx::PreTranslateMessage(pMsg);
|
|
|
|
+}
|