|
@@ -35,60 +35,60 @@ const UINT uiFirstUserToolBarId = AFX_IDW_CONTROLBAR_FIRST + 40;
|
|
|
const UINT uiLastUserToolBarId = uiFirstUserToolBarId + iMaxUserToolbars - 1;
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWndEx)
|
|
|
- ON_WM_CREATE()
|
|
|
- ON_WM_DEVICECHANGE()
|
|
|
- ON_COMMAND(ID_WINDOW_MANAGER, &CMainFrame::OnWindowManager)
|
|
|
- ON_COMMAND_RANGE(ID_VIEW_APPLOOK_WIN_2000, ID_VIEW_APPLOOK_OFF_2007_AQUA, &CMainFrame::OnApplicationLook)
|
|
|
- ON_UPDATE_COMMAND_UI_RANGE(ID_VIEW_APPLOOK_WIN_2000, ID_VIEW_APPLOOK_OFF_2007_AQUA, &CMainFrame::OnUpdateApplicationLook)
|
|
|
+ ON_WM_CREATE()
|
|
|
+ ON_WM_DEVICECHANGE()
|
|
|
+ ON_COMMAND(ID_WINDOW_MANAGER, &CMainFrame::OnWindowManager)
|
|
|
+ ON_COMMAND_RANGE(ID_VIEW_APPLOOK_WIN_2000, ID_VIEW_APPLOOK_OFF_2007_AQUA, &CMainFrame::OnApplicationLook)
|
|
|
+ ON_UPDATE_COMMAND_UI_RANGE(ID_VIEW_APPLOOK_WIN_2000, ID_VIEW_APPLOOK_OFF_2007_AQUA, &CMainFrame::OnUpdateApplicationLook)
|
|
|
#ifndef DISABLE_CAPTIONBAR
|
|
|
- ON_COMMAND(ID_VIEW_CAPTION_BAR, &CMainFrame::OnViewCaptionBar)
|
|
|
- ON_UPDATE_COMMAND_UI(ID_VIEW_CAPTION_BAR, &CMainFrame::OnUpdateViewCaptionBar)
|
|
|
+ ON_COMMAND(ID_VIEW_CAPTION_BAR, &CMainFrame::OnViewCaptionBar)
|
|
|
+ ON_UPDATE_COMMAND_UI(ID_VIEW_CAPTION_BAR, &CMainFrame::OnUpdateViewCaptionBar)
|
|
|
#endif
|
|
|
- // 摄像头;
|
|
|
- ON_COMMAND(ID_RIBBON_CAMERA_COMBOBOX, &CMainFrame::OnCameraCombobox)
|
|
|
- ON_UPDATE_COMMAND_UI(ID_RIBBON_CAMERA_COMBOBOX, &CMainFrame::OnUpdateCameraCombobox)
|
|
|
- // 摄像头刷新;
|
|
|
- ON_COMMAND(ID_RIBBON_CAMERA_FLUSH, &CMainFrame::OnCameraFlush)
|
|
|
- ON_UPDATE_COMMAND_UI(ID_RIBBON_CAMERA_FLUSH, &CMainFrame::OnUpdateCameraFlush)
|
|
|
- // 红外:测试精灵;
|
|
|
- ON_COMMAND(ID_RIBBON_INFRAED_COMBOBOX, &CMainFrame::OnInfraedCombobox)
|
|
|
- ON_UPDATE_COMMAND_UI(ID_RIBBON_INFRAED_COMBOBOX, &CMainFrame::OnUpdateInfraedCombobox)
|
|
|
- ON_COMMAND(ID_RIBBON_INFRAED_CHECKBOX, &CMainFrame::OnInfraedCheckbox)
|
|
|
- ON_UPDATE_COMMAND_UI(ID_RIBBON_INFRAED_CHECKBOX, &CMainFrame::OnUpdateInfraedCheckbox)
|
|
|
- // 红外版本选择;
|
|
|
- ON_COMMAND(ID_RIBBON_INFRAED_VERSION_COMBOBOX, &CMainFrame::OnInfraedVersionCombobox)
|
|
|
- ON_UPDATE_COMMAND_UI(ID_RIBBON_INFRAED_VERSION_COMBOBOX, &CMainFrame::OnUpdateInfraedVersionCombobox)
|
|
|
- // USB切换器;
|
|
|
- ON_COMMAND(ID_RIBBON_SWITCHER_COMBOBOX, &CMainFrame::OnSwitcherCombobox)
|
|
|
- ON_UPDATE_COMMAND_UI(ID_RIBBON_SWITCHER_COMBOBOX, &CMainFrame::OnUpdateSwitcherCombobox)
|
|
|
- // 打开USB切换器;
|
|
|
- ON_COMMAND(ID_RIBBON_SWITCHER_CHECKBOX, &CMainFrame::OnSwitcherCheckbox)
|
|
|
- ON_UPDATE_COMMAND_UI(ID_RIBBON_SWITCHER_CHECKBOX, &CMainFrame::OnUpdateSwitcherCheckbox)
|
|
|
- // Switch A;
|
|
|
- ON_COMMAND(ID_RIBBON_SWITCHER_CHECKBOXA, &CMainFrame::OnSwitcherCheckboxA)
|
|
|
- ON_UPDATE_COMMAND_UI(ID_RIBBON_SWITCHER_CHECKBOXA, &CMainFrame::OnUpdateSwitcherCheckboxA)
|
|
|
- // Switch B;
|
|
|
- ON_COMMAND(ID_RIBBON_SWITCHER_CHECKBOXB, &CMainFrame::OnSwitcherCheckboxB)
|
|
|
- ON_UPDATE_COMMAND_UI(ID_RIBBON_SWITCHER_CHECKBOXB, &CMainFrame::OnUpdateSwitcherCheckboxB)
|
|
|
- // 计时器;
|
|
|
- ON_WM_TIMER()
|
|
|
- ON_WM_CLOSE()
|
|
|
+ // 摄像头;
|
|
|
+ ON_COMMAND(ID_RIBBON_CAMERA_COMBOBOX, &CMainFrame::OnCameraCombobox)
|
|
|
+ ON_UPDATE_COMMAND_UI(ID_RIBBON_CAMERA_COMBOBOX, &CMainFrame::OnUpdateCameraCombobox)
|
|
|
+ // 摄像头刷新;
|
|
|
+ ON_COMMAND(ID_RIBBON_CAMERA_FLUSH, &CMainFrame::OnCameraFlush)
|
|
|
+ ON_UPDATE_COMMAND_UI(ID_RIBBON_CAMERA_FLUSH, &CMainFrame::OnUpdateCameraFlush)
|
|
|
+ // 红外:测试精灵;
|
|
|
+ ON_COMMAND(ID_RIBBON_INFRAED_COMBOBOX, &CMainFrame::OnInfraedCombobox)
|
|
|
+ ON_UPDATE_COMMAND_UI(ID_RIBBON_INFRAED_COMBOBOX, &CMainFrame::OnUpdateInfraedCombobox)
|
|
|
+ ON_COMMAND(ID_RIBBON_INFRAED_CHECKBOX, &CMainFrame::OnInfraedCheckbox)
|
|
|
+ ON_UPDATE_COMMAND_UI(ID_RIBBON_INFRAED_CHECKBOX, &CMainFrame::OnUpdateInfraedCheckbox)
|
|
|
+ // 红外版本选择;
|
|
|
+ ON_COMMAND(ID_RIBBON_INFRAED_VERSION_COMBOBOX, &CMainFrame::OnInfraedVersionCombobox)
|
|
|
+ ON_UPDATE_COMMAND_UI(ID_RIBBON_INFRAED_VERSION_COMBOBOX, &CMainFrame::OnUpdateInfraedVersionCombobox)
|
|
|
+ // USB切换器;
|
|
|
+ ON_COMMAND(ID_RIBBON_SWITCHER_COMBOBOX, &CMainFrame::OnSwitcherCombobox)
|
|
|
+ ON_UPDATE_COMMAND_UI(ID_RIBBON_SWITCHER_COMBOBOX, &CMainFrame::OnUpdateSwitcherCombobox)
|
|
|
+ // 打开USB切换器;
|
|
|
+ ON_COMMAND(ID_RIBBON_SWITCHER_CHECKBOX, &CMainFrame::OnSwitcherCheckbox)
|
|
|
+ ON_UPDATE_COMMAND_UI(ID_RIBBON_SWITCHER_CHECKBOX, &CMainFrame::OnUpdateSwitcherCheckbox)
|
|
|
+ // Switch A;
|
|
|
+ ON_COMMAND(ID_RIBBON_SWITCHER_CHECKBOXA, &CMainFrame::OnSwitcherCheckboxA)
|
|
|
+ ON_UPDATE_COMMAND_UI(ID_RIBBON_SWITCHER_CHECKBOXA, &CMainFrame::OnUpdateSwitcherCheckboxA)
|
|
|
+ // Switch B;
|
|
|
+ ON_COMMAND(ID_RIBBON_SWITCHER_CHECKBOXB, &CMainFrame::OnSwitcherCheckboxB)
|
|
|
+ ON_UPDATE_COMMAND_UI(ID_RIBBON_SWITCHER_CHECKBOXB, &CMainFrame::OnUpdateSwitcherCheckboxB)
|
|
|
+ // 计时器;
|
|
|
+ ON_WM_TIMER()
|
|
|
+ ON_WM_CLOSE()
|
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
// CMainFrame 构造/析构
|
|
|
|
|
|
CMainFrame::CMainFrame()
|
|
|
{
|
|
|
- // TODO: 在此添加成员初始化代码
|
|
|
- m_pDoc = NULL;
|
|
|
- m_pDocTemplate = NULL;
|
|
|
- m_bFindTestWizardPort = false;
|
|
|
- m_bFindSwitcherPort = false;
|
|
|
- m_bSwitcherCheckA = false;
|
|
|
- m_bSwitcherCheckB = false;
|
|
|
- m_pActiveView = NULL;
|
|
|
- m_pChildFrame = NULL;
|
|
|
- theApp.m_nAppLook = theApp.GetInt(_T("ApplicationLook"), ID_VIEW_APPLOOK_OFF_2007_BLUE);
|
|
|
+ // TODO: 在此添加成员初始化代码
|
|
|
+ m_pDoc = NULL;
|
|
|
+ m_pDocTemplate = NULL;
|
|
|
+ m_bFindTestWizardPort = false;
|
|
|
+ m_bFindSwitcherPort = false;
|
|
|
+ m_bSwitcherCheckA = false;
|
|
|
+ m_bSwitcherCheckB = false;
|
|
|
+ m_pActiveView = NULL;
|
|
|
+ m_pChildFrame = NULL;
|
|
|
+ theApp.m_nAppLook = theApp.GetInt(_T("ApplicationLook"), ID_VIEW_APPLOOK_OFF_2007_BLUE);
|
|
|
}
|
|
|
|
|
|
CMainFrame::~CMainFrame()
|
|
@@ -98,448 +98,448 @@ CMainFrame::~CMainFrame()
|
|
|
|
|
|
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
|
{
|
|
|
- if (CMDIFrameWndEx::OnCreate(lpCreateStruct) == -1)
|
|
|
- return -1;
|
|
|
-
|
|
|
- BOOL bNameValid;
|
|
|
- // 基于持久值设置视觉管理器和样式
|
|
|
- OnApplicationLook(theApp.m_nAppLook);
|
|
|
-
|
|
|
- CMDITabInfo mdiTabParams;
|
|
|
- mdiTabParams.m_style = CMFCTabCtrl::STYLE_3D_ONENOTE; // 其他可用样式...
|
|
|
- mdiTabParams.m_bActiveTabCloseButton = TRUE; // 设置为 FALSE 会将关闭按钮放置在选项卡区域的右侧
|
|
|
- mdiTabParams.m_bTabIcons = FALSE; // 设置为 TRUE 将在 MDI 选项卡上启用文档图标
|
|
|
- mdiTabParams.m_bAutoColor = TRUE; // 设置为 FALSE 将禁用 MDI 选项卡的自动着色
|
|
|
- mdiTabParams.m_bDocumentMenu = TRUE; // 在选项卡区域的右边缘启用文档菜单
|
|
|
- EnableMDITabbedGroups(TRUE, mdiTabParams);
|
|
|
-
|
|
|
- m_wndRibbonBar.Create(this);
|
|
|
- InitializeRibbon();
|
|
|
-
|
|
|
- if (!m_wndStatusBar.Create(this))
|
|
|
- {
|
|
|
- TRACE0("未能创建状态栏\n");
|
|
|
- return -1; // 未能创建
|
|
|
- }
|
|
|
-
|
|
|
- CString strTitlePane1;
|
|
|
- CString strTitlePane2;
|
|
|
- bNameValid = strTitlePane1.LoadString(IDS_STATUS_PANE1);
|
|
|
- ASSERT(bNameValid);
|
|
|
- bNameValid = strTitlePane2.LoadString(IDS_STATUS_PANE2);
|
|
|
- ASSERT(bNameValid);
|
|
|
- m_wndStatusBar.AddElement(new CMFCRibbonStatusBarPane(ID_STATUSBAR_PANE1, strTitlePane1, TRUE), strTitlePane1);
|
|
|
- m_wndStatusBar.AddExtendedElement(new CMFCRibbonStatusBarPane(ID_STATUSBAR_PANE2, strTitlePane2, TRUE), strTitlePane2);
|
|
|
-
|
|
|
- // 启用 Visual Studio 2005 样式停靠窗口行为
|
|
|
- CDockingManager::SetDockingMode(DT_SMART);
|
|
|
- // 启用 Visual Studio 2005 样式停靠窗口自动隐藏行为
|
|
|
- EnableAutoHidePanes(CBRS_ALIGN_ANY);
|
|
|
-
|
|
|
- // 导航窗格将创建在左侧,因此将暂时禁用左侧的停靠:
|
|
|
- EnableDocking(CBRS_ALIGN_TOP | CBRS_ALIGN_BOTTOM | CBRS_ALIGN_RIGHT);
|
|
|
+ if (CMDIFrameWndEx::OnCreate(lpCreateStruct) == -1)
|
|
|
+ return -1;
|
|
|
+
|
|
|
+ BOOL bNameValid;
|
|
|
+ // 基于持久值设置视觉管理器和样式
|
|
|
+ OnApplicationLook(theApp.m_nAppLook);
|
|
|
+
|
|
|
+ CMDITabInfo mdiTabParams;
|
|
|
+ mdiTabParams.m_style = CMFCTabCtrl::STYLE_3D_ONENOTE; // 其他可用样式...
|
|
|
+ mdiTabParams.m_bActiveTabCloseButton = TRUE; // 设置为 FALSE 会将关闭按钮放置在选项卡区域的右侧
|
|
|
+ mdiTabParams.m_bTabIcons = FALSE; // 设置为 TRUE 将在 MDI 选项卡上启用文档图标
|
|
|
+ mdiTabParams.m_bAutoColor = TRUE; // 设置为 FALSE 将禁用 MDI 选项卡的自动着色
|
|
|
+ mdiTabParams.m_bDocumentMenu = TRUE; // 在选项卡区域的右边缘启用文档菜单
|
|
|
+ EnableMDITabbedGroups(TRUE, mdiTabParams);
|
|
|
+
|
|
|
+ m_wndRibbonBar.Create(this);
|
|
|
+ InitializeRibbon();
|
|
|
+
|
|
|
+ if (!m_wndStatusBar.Create(this))
|
|
|
+ {
|
|
|
+ TRACE0("未能创建状态栏\n");
|
|
|
+ return -1; // 未能创建
|
|
|
+ }
|
|
|
+
|
|
|
+ CString strTitlePane1;
|
|
|
+ CString strTitlePane2;
|
|
|
+ bNameValid = strTitlePane1.LoadString(IDS_STATUS_PANE1);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ bNameValid = strTitlePane2.LoadString(IDS_STATUS_PANE2);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ m_wndStatusBar.AddElement(new CMFCRibbonStatusBarPane(ID_STATUSBAR_PANE1, strTitlePane1, TRUE), strTitlePane1);
|
|
|
+ m_wndStatusBar.AddExtendedElement(new CMFCRibbonStatusBarPane(ID_STATUSBAR_PANE2, strTitlePane2, TRUE), strTitlePane2);
|
|
|
+
|
|
|
+ // 启用 Visual Studio 2005 样式停靠窗口行为
|
|
|
+ CDockingManager::SetDockingMode(DT_SMART);
|
|
|
+ // 启用 Visual Studio 2005 样式停靠窗口自动隐藏行为
|
|
|
+ EnableAutoHidePanes(CBRS_ALIGN_ANY);
|
|
|
+
|
|
|
+ // 导航窗格将创建在左侧,因此将暂时禁用左侧的停靠:
|
|
|
+ EnableDocking(CBRS_ALIGN_TOP | CBRS_ALIGN_BOTTOM | CBRS_ALIGN_RIGHT);
|
|
|
|
|
|
#ifndef DISABLE_OUTLOOKBAR
|
|
|
- // 创建并设置“Outlook”导航栏:
|
|
|
- if (!CreateOutlookBar(m_wndNavigationBar, ID_VIEW_NAVIGATION, m_wndTree, m_wndCalendar, 250))
|
|
|
- {
|
|
|
- TRACE0("未能创建导航窗格\n");
|
|
|
- return -1; // 未能创建
|
|
|
- }
|
|
|
+ // 创建并设置“Outlook”导航栏:
|
|
|
+ if (!CreateOutlookBar(m_wndNavigationBar, ID_VIEW_NAVIGATION, m_wndTree, m_wndCalendar, 250))
|
|
|
+ {
|
|
|
+ TRACE0("未能创建导航窗格\n");
|
|
|
+ return -1; // 未能创建
|
|
|
+ }
|
|
|
#endif
|
|
|
|
|
|
#ifndef DISABLE_CAPTIONBAR
|
|
|
- // 创建标题栏:
|
|
|
- if (!CreateCaptionBar())
|
|
|
- {
|
|
|
- TRACE0("未能创建标题栏\n");
|
|
|
- return -1; // 未能创建
|
|
|
- }
|
|
|
+ // 创建标题栏:
|
|
|
+ if (!CreateCaptionBar())
|
|
|
+ {
|
|
|
+ TRACE0("未能创建标题栏\n");
|
|
|
+ return -1; // 未能创建
|
|
|
+ }
|
|
|
#endif
|
|
|
|
|
|
- // 已创建 Outlook 栏,应允许在左侧停靠。
|
|
|
- EnableDocking(CBRS_ALIGN_LEFT);
|
|
|
- EnableAutoHidePanes(CBRS_ALIGN_RIGHT);
|
|
|
+ // 已创建 Outlook 栏,应允许在左侧停靠。
|
|
|
+ EnableDocking(CBRS_ALIGN_LEFT);
|
|
|
+ EnableAutoHidePanes(CBRS_ALIGN_RIGHT);
|
|
|
|
|
|
- // 加载菜单项图像(不在任何标准工具栏上):
|
|
|
- //CMFCToolBar::AddToolBarForImageCollection(IDR_MENU_IMAGES, theApp.m_bHiColorIcons ? IDB_MENU_IMAGES_24 : 0);
|
|
|
+ // 加载菜单项图像(不在任何标准工具栏上):
|
|
|
+ //CMFCToolBar::AddToolBarForImageCollection(IDR_MENU_IMAGES, theApp.m_bHiColorIcons ? IDB_MENU_IMAGES_24 : 0);
|
|
|
|
|
|
- // 创建停靠窗口
|
|
|
- if (!CreateDockingWindows())
|
|
|
- {
|
|
|
- TRACE0("未能创建停靠窗口\n");
|
|
|
- return -1;
|
|
|
- }
|
|
|
+ // 创建停靠窗口
|
|
|
+ if (!CreateDockingWindows())
|
|
|
+ {
|
|
|
+ TRACE0("未能创建停靠窗口\n");
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
|
|
|
- m_wndProperties.EnableDocking(CBRS_ALIGN_ANY);
|
|
|
- DockPane(&m_wndProperties);
|
|
|
+ m_wndProperties.EnableDocking(CBRS_ALIGN_ANY);
|
|
|
+ DockPane(&m_wndProperties);
|
|
|
|
|
|
- // 启用增强的窗口管理对话框
|
|
|
- EnableWindowsDialog(ID_WINDOW_MANAGER, IDS_WINDOWS_MANAGER, TRUE);
|
|
|
+ // 启用增强的窗口管理对话框
|
|
|
+ EnableWindowsDialog(ID_WINDOW_MANAGER, IDS_WINDOWS_MANAGER, TRUE);
|
|
|
|
|
|
- SetTimer(0,100,NULL);
|
|
|
+ SetTimer(0, 100, NULL);
|
|
|
|
|
|
- RegisterDeviceChange();
|
|
|
+ RegisterDeviceChange();
|
|
|
|
|
|
- // 初始化摄像头下拉框;
|
|
|
- CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
- ASSERT_VALID(pRibbon);
|
|
|
- CMFCRibbonComboBox* pCameraCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_CAMERA_COMBOBOX));
|
|
|
- m_cap.EnumDevices(pCameraCombo);
|
|
|
+ // 初始化摄像头下拉框;
|
|
|
+ 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;
|
|
|
}
|
|
|
|
|
|
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
|
|
|
{
|
|
|
- if( !CMDIFrameWndEx::PreCreateWindow(cs) )
|
|
|
- return FALSE;
|
|
|
- // TODO: 在此处通过修改
|
|
|
- // CREATESTRUCT cs 来修改窗口类或样式
|
|
|
+ if (!CMDIFrameWndEx::PreCreateWindow(cs))
|
|
|
+ return FALSE;
|
|
|
+ // TODO: 在此处通过修改
|
|
|
+ // CREATESTRUCT cs 来修改窗口类或样式
|
|
|
|
|
|
- return TRUE;
|
|
|
+ return TRUE;
|
|
|
}
|
|
|
|
|
|
void CMainFrame::InitializeRibbon()
|
|
|
{
|
|
|
- BOOL bNameValid;
|
|
|
+ BOOL bNameValid;
|
|
|
|
|
|
- CString strTemp;
|
|
|
- bNameValid = strTemp.LoadString(IDS_RIBBON_FILE);
|
|
|
- ASSERT(bNameValid);
|
|
|
+ CString strTemp;
|
|
|
+ bNameValid = strTemp.LoadString(IDS_RIBBON_FILE);
|
|
|
+ ASSERT(bNameValid);
|
|
|
|
|
|
- // 加载面板图像:
|
|
|
- m_PanelImages.SetImageSize(CSize(16, 16));
|
|
|
- m_PanelImages.Load(IDB_BUTTONS);
|
|
|
+ // 加载面板图像:
|
|
|
+ m_PanelImages.SetImageSize(CSize(16, 16));
|
|
|
+ m_PanelImages.Load(IDB_BUTTONS);
|
|
|
|
|
|
- // 初始主按钮:
|
|
|
- m_MainButton.SetImage(IDB_MAIN);
|
|
|
- m_MainButton.SetText(_T("\nf"));
|
|
|
- m_MainButton.SetToolTipText(strTemp);
|
|
|
+ // 初始主按钮:
|
|
|
+ m_MainButton.SetImage(IDB_MAIN);
|
|
|
+ m_MainButton.SetText(_T("\nf"));
|
|
|
+ m_MainButton.SetToolTipText(strTemp);
|
|
|
|
|
|
- m_wndRibbonBar.SetApplicationButton(&m_MainButton, CSize (45, 45));
|
|
|
- CMFCRibbonMainPanel* pMainPanel = m_wndRibbonBar.AddMainCategory(strTemp, IDB_FILESMALL, IDB_FILELARGE);
|
|
|
+ m_wndRibbonBar.SetApplicationButton(&m_MainButton, CSize(45, 45));
|
|
|
+ CMFCRibbonMainPanel* pMainPanel = m_wndRibbonBar.AddMainCategory(strTemp, IDB_FILESMALL, IDB_FILELARGE);
|
|
|
|
|
|
#if 0 // 禁用文档相关菜单;
|
|
|
- bNameValid = strTemp.LoadString(IDS_RIBBON_NEW);
|
|
|
- ASSERT(bNameValid);
|
|
|
- pMainPanel->Add(new CMFCRibbonButton(ID_FILE_NEW, strTemp, 0, 0));
|
|
|
- bNameValid = strTemp.LoadString(IDS_RIBBON_OPEN);
|
|
|
- ASSERT(bNameValid);
|
|
|
- pMainPanel->Add(new CMFCRibbonButton(ID_FILE_OPEN, strTemp, 1, 1));
|
|
|
- bNameValid = strTemp.LoadString(IDS_RIBBON_SAVE);
|
|
|
- ASSERT(bNameValid);
|
|
|
- pMainPanel->Add(new CMFCRibbonButton(ID_FILE_SAVE, strTemp, 2, 2));
|
|
|
- bNameValid = strTemp.LoadString(IDS_RIBBON_SAVEAS);
|
|
|
- ASSERT(bNameValid);
|
|
|
- pMainPanel->Add(new CMFCRibbonButton(ID_FILE_SAVE_AS, strTemp, 3, 3));
|
|
|
+ bNameValid = strTemp.LoadString(IDS_RIBBON_NEW);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ pMainPanel->Add(new CMFCRibbonButton(ID_FILE_NEW, strTemp, 0, 0));
|
|
|
+ bNameValid = strTemp.LoadString(IDS_RIBBON_OPEN);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ pMainPanel->Add(new CMFCRibbonButton(ID_FILE_OPEN, strTemp, 1, 1));
|
|
|
+ bNameValid = strTemp.LoadString(IDS_RIBBON_SAVE);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ pMainPanel->Add(new CMFCRibbonButton(ID_FILE_SAVE, strTemp, 2, 2));
|
|
|
+ bNameValid = strTemp.LoadString(IDS_RIBBON_SAVEAS);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ pMainPanel->Add(new CMFCRibbonButton(ID_FILE_SAVE_AS, strTemp, 3, 3));
|
|
|
#endif
|
|
|
|
|
|
#if 0 // 禁用打印相关的菜单;
|
|
|
- bNameValid = strTemp.LoadString(IDS_RIBBON_PRINT);
|
|
|
- ASSERT(bNameValid);
|
|
|
- CMFCRibbonButton* pBtnPrint = new CMFCRibbonButton(ID_FILE_PRINT, strTemp, 6, 6);
|
|
|
- pBtnPrint->SetKeys(_T("p"), _T("w"));
|
|
|
- bNameValid = strTemp.LoadString(IDS_RIBBON_PRINT_LABEL);
|
|
|
- ASSERT(bNameValid);
|
|
|
- pBtnPrint->AddSubItem(new CMFCRibbonLabel(strTemp));
|
|
|
- bNameValid = strTemp.LoadString(IDS_RIBBON_PRINT_QUICK);
|
|
|
- ASSERT(bNameValid);
|
|
|
- pBtnPrint->AddSubItem(new CMFCRibbonButton(ID_FILE_PRINT_DIRECT, strTemp, 7, 7, TRUE));
|
|
|
- bNameValid = strTemp.LoadString(IDS_RIBBON_PRINT_PREVIEW);
|
|
|
- ASSERT(bNameValid);
|
|
|
- pBtnPrint->AddSubItem(new CMFCRibbonButton(ID_FILE_PRINT_PREVIEW, strTemp, 8, 8, TRUE));
|
|
|
- bNameValid = strTemp.LoadString(IDS_RIBBON_PRINT_SETUP);
|
|
|
- ASSERT(bNameValid);
|
|
|
- pBtnPrint->AddSubItem(new CMFCRibbonButton(ID_FILE_PRINT_SETUP, strTemp, 11, 11, TRUE));
|
|
|
- pMainPanel->Add(pBtnPrint);
|
|
|
- pMainPanel->Add(new CMFCRibbonSeparator(TRUE));
|
|
|
+ bNameValid = strTemp.LoadString(IDS_RIBBON_PRINT);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ CMFCRibbonButton* pBtnPrint = new CMFCRibbonButton(ID_FILE_PRINT, strTemp, 6, 6);
|
|
|
+ pBtnPrint->SetKeys(_T("p"), _T("w"));
|
|
|
+ bNameValid = strTemp.LoadString(IDS_RIBBON_PRINT_LABEL);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ pBtnPrint->AddSubItem(new CMFCRibbonLabel(strTemp));
|
|
|
+ bNameValid = strTemp.LoadString(IDS_RIBBON_PRINT_QUICK);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ pBtnPrint->AddSubItem(new CMFCRibbonButton(ID_FILE_PRINT_DIRECT, strTemp, 7, 7, TRUE));
|
|
|
+ bNameValid = strTemp.LoadString(IDS_RIBBON_PRINT_PREVIEW);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ pBtnPrint->AddSubItem(new CMFCRibbonButton(ID_FILE_PRINT_PREVIEW, strTemp, 8, 8, TRUE));
|
|
|
+ bNameValid = strTemp.LoadString(IDS_RIBBON_PRINT_SETUP);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ pBtnPrint->AddSubItem(new CMFCRibbonButton(ID_FILE_PRINT_SETUP, strTemp, 11, 11, TRUE));
|
|
|
+ pMainPanel->Add(pBtnPrint);
|
|
|
+ pMainPanel->Add(new CMFCRibbonSeparator(TRUE));
|
|
|
#endif
|
|
|
|
|
|
- bNameValid = strTemp.LoadString(IDS_RIBBON_CLOSE);
|
|
|
- ASSERT(bNameValid);
|
|
|
- pMainPanel->Add(new CMFCRibbonButton(ID_FILE_CLOSE, strTemp, 9, 9));
|
|
|
+ bNameValid = strTemp.LoadString(IDS_RIBBON_CLOSE);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ pMainPanel->Add(new CMFCRibbonButton(ID_FILE_CLOSE, strTemp, 9, 9));
|
|
|
|
|
|
#if 0 // 去掉最近打开的文档;
|
|
|
- bNameValid = strTemp.LoadString(IDS_RIBBON_RECENT_DOCS);
|
|
|
- ASSERT(bNameValid);
|
|
|
- pMainPanel->AddRecentFilesList(strTemp);
|
|
|
+ bNameValid = strTemp.LoadString(IDS_RIBBON_RECENT_DOCS);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ pMainPanel->AddRecentFilesList(strTemp);
|
|
|
#endif
|
|
|
|
|
|
- bNameValid = strTemp.LoadString(IDS_RIBBON_EXIT);
|
|
|
- ASSERT(bNameValid);
|
|
|
- pMainPanel->AddToBottom(new CMFCRibbonMainPanelButton(ID_APP_EXIT, strTemp, 15));
|
|
|
-
|
|
|
- // 为“剪贴板”面板添加“主”类别:
|
|
|
- bNameValid = strTemp.LoadString(IDS_RIBBON_HOME);
|
|
|
- ASSERT(bNameValid);
|
|
|
- CMFCRibbonCategory* pCategoryHome = m_wndRibbonBar.AddCategory(strTemp, IDB_WRITESMALL, IDB_WRITELARGE);
|
|
|
-
|
|
|
- //////////////////////////////////////////////////////////////////////////
|
|
|
- // 创建“摄像头”面板:
|
|
|
- {
|
|
|
- bNameValid = strTemp.LoadString(IDS_RIBBON_CAMERA);
|
|
|
- ASSERT(bNameValid);
|
|
|
- CMFCRibbonPanel* pPanelCamera = pCategoryHome->AddPanel(strTemp, m_PanelImages.ExtractIcon(27));
|
|
|
- // 排序面板按列垂直对齐元素;
|
|
|
- pPanelCamera->SetCenterColumnVert(TRUE);
|
|
|
- // 启用或禁用功能区元素的宽度调整在同一列的
|
|
|
- pPanelCamera->SetJustifyColumns(TRUE);
|
|
|
-
|
|
|
- // 只有组的元素,才能水平对齐;
|
|
|
- CMFCRibbonButtonsGroup *pGroup = new CMFCRibbonButtonsGroup();
|
|
|
- pPanelCamera->Add(pGroup);
|
|
|
-
|
|
|
- bNameValid = strTemp.LoadString(IDS_RIBBON_CAMERA_LABEL);
|
|
|
- ASSERT(bNameValid);
|
|
|
- CMFCRibbonLabel* pCameraLable = new CMFCRibbonLabel(strTemp);
|
|
|
- pGroup->AddButton(pCameraLable);
|
|
|
- pCameraLable->SetRect(CRect(0,0,150,20));
|
|
|
-
|
|
|
- CMFCRibbonComboBox *pCameraCombobx = new CMFCRibbonComboBox(ID_RIBBON_CAMERA_COMBOBOX, FALSE);
|
|
|
- pGroup->AddButton(pCameraCombobx);
|
|
|
- pCameraCombobx->SetWidth(80);
|
|
|
- pCameraCombobx->SetCompactMode(FALSE);
|
|
|
-
|
|
|
- bNameValid = strTemp.LoadString(IDS_RIBBON_CAMERA_FLUSH);
|
|
|
- ASSERT(bNameValid);
|
|
|
- CMFCRibbonButton *pCameraFlush = new CMFCRibbonButton(ID_RIBBON_CAMERA_FLUSH, strTemp);
|
|
|
- pGroup->AddButton(pCameraFlush);
|
|
|
- pGroup->SetCompactMode(FALSE);
|
|
|
- }
|
|
|
-
|
|
|
- //////////////////////////////////////////////////////////////////////////
|
|
|
- // 创建“测试精灵”面板:
|
|
|
- {
|
|
|
- bNameValid = strTemp.LoadString(IDS_RIBBON_INFRAED);
|
|
|
- ASSERT(bNameValid);
|
|
|
- CMFCRibbonPanel* pPanelInfraed = pCategoryHome->AddPanel(strTemp, m_PanelImages.ExtractIcon (7));
|
|
|
- // 排序面板按列垂直对齐元素;
|
|
|
- pPanelInfraed->SetCenterColumnVert(TRUE);
|
|
|
- // 启用或禁用功能区元素的宽度调整在同一列的
|
|
|
- pPanelInfraed->SetJustifyColumns(TRUE);
|
|
|
-
|
|
|
- // 只有组的元素,才能水平对齐;
|
|
|
- CMFCRibbonButtonsGroup *pGroup = new CMFCRibbonButtonsGroup();
|
|
|
- pPanelInfraed->Add(pGroup);
|
|
|
-
|
|
|
- CMFCRibbonComboBox* pInfraedCombobox = new CMFCRibbonComboBox(ID_RIBBON_INFRAED_COMBOBOX, FALSE);
|
|
|
- pGroup->AddButton(pInfraedCombobox);
|
|
|
- pInfraedCombobox->SetWidth(110);
|
|
|
-
|
|
|
- bNameValid = strTemp.LoadString(IDS_RIBBON_INFRAED_CHECKBOX);
|
|
|
- ASSERT(bNameValid);
|
|
|
- CMFCRibbonCheckBox *pInfraedCheckbox = new CMFCRibbonCheckBox(ID_RIBBON_INFRAED_CHECKBOX, strTemp);
|
|
|
- pGroup->AddButton(pInfraedCheckbox);
|
|
|
-
|
|
|
- // 红外遥控版本选择
|
|
|
- CMFCRibbonButtonsGroup *pGroup2 = new CMFCRibbonButtonsGroup();
|
|
|
- pPanelInfraed->Add(pGroup2);
|
|
|
-
|
|
|
- bNameValid = strTemp.LoadString(IDS_RIBBON_INFRAED_VERSION);
|
|
|
- ASSERT(bNameValid);
|
|
|
- CMFCRibbonLabel* pCameraLable = new CMFCRibbonLabel(strTemp);
|
|
|
- pGroup2->AddButton(pCameraLable);
|
|
|
- pCameraLable->SetRect(CRect(0,0,150,20));
|
|
|
-
|
|
|
- bNameValid = strTemp.LoadString(IDS_RIBBON_INFRAED_VERSION);
|
|
|
- ASSERT(bNameValid);
|
|
|
- CMFCRibbonComboBox *pVersion = new CMFCRibbonComboBox(ID_RIBBON_INFRAED_VERSION_COMBOBOX, FALSE);
|
|
|
- pGroup2->AddButton(pVersion);
|
|
|
- pVersion->SetWidth(80);
|
|
|
- pVersion->AddItem(_T("1st-version"));
|
|
|
- pVersion->AddItem(_T("2nd-version"));
|
|
|
- //pVersion->AddItem(_T("3rd-version"));
|
|
|
- //pVersion->AddItem(_T("4th-version"));
|
|
|
-
|
|
|
- pVersion->SelectItem(Global::g_nVersion-1);
|
|
|
- }
|
|
|
-
|
|
|
- // 创建“U盘切换器”面板:
|
|
|
- {
|
|
|
- bNameValid = strTemp.LoadString(IDS_RIBBON_SWITCHER);
|
|
|
- ASSERT(bNameValid);
|
|
|
- CMFCRibbonPanel* pPanelSwitcher = pCategoryHome->AddPanel(strTemp, m_PanelImages.ExtractIcon (7));
|
|
|
- // 排序面板按列垂直对齐元素;
|
|
|
- pPanelSwitcher->SetCenterColumnVert(TRUE);
|
|
|
- // 启用或禁用功能区元素的宽度调整在同一列的
|
|
|
- pPanelSwitcher->SetJustifyColumns(TRUE);
|
|
|
-
|
|
|
- // 只有组的元素,才能水平对齐;
|
|
|
- CMFCRibbonButtonsGroup *pGroup = new CMFCRibbonButtonsGroup();
|
|
|
- pPanelSwitcher->Add(pGroup);
|
|
|
-
|
|
|
- CMFCRibbonComboBox* pSwitcherCombobox = new CMFCRibbonComboBox(ID_RIBBON_SWITCHER_COMBOBOX, FALSE);
|
|
|
- pGroup->AddButton(pSwitcherCombobox);
|
|
|
- pSwitcherCombobox->SetWidth(60);
|
|
|
-
|
|
|
- bNameValid = strTemp.LoadString(IDS_RIBBON_SWITCHER_CHECKBOX);
|
|
|
- ASSERT(bNameValid);
|
|
|
- CMFCRibbonCheckBox *pSwitcherCheckbox = new CMFCRibbonCheckBox(ID_RIBBON_SWITCHER_CHECKBOX, strTemp);
|
|
|
- pGroup->AddButton(pSwitcherCheckbox);
|
|
|
-
|
|
|
- // 只有组的元素,才能水平对齐;
|
|
|
- CMFCRibbonButtonsGroup *pGroupCheckBox = new CMFCRibbonButtonsGroup();
|
|
|
- pPanelSwitcher->Add(pGroupCheckBox);
|
|
|
-
|
|
|
- bNameValid = strTemp.LoadString(IDS_RIBBON_SWITCHER_CHECKBOXA);
|
|
|
- ASSERT(bNameValid);
|
|
|
- CMFCRibbonCheckBox *pSwitcherCheckboxA = new CMFCRibbonCheckBox(ID_RIBBON_SWITCHER_CHECKBOXA, strTemp);
|
|
|
- pGroupCheckBox->AddButton(pSwitcherCheckboxA);
|
|
|
-
|
|
|
- bNameValid = strTemp.LoadString(IDS_RIBBON_SWITCHER_CHECKBOXB);
|
|
|
- ASSERT(bNameValid);
|
|
|
- CMFCRibbonCheckBox *pSwitcherCheckboxB = new CMFCRibbonCheckBox(ID_RIBBON_SWITCHER_CHECKBOXB, strTemp);
|
|
|
- pGroupCheckBox->AddButton(pSwitcherCheckboxB);
|
|
|
- }
|
|
|
-
|
|
|
- // 将元素添加到选项卡右侧:
|
|
|
- bNameValid = strTemp.LoadString(IDS_RIBBON_STYLE);
|
|
|
- ASSERT(bNameValid);
|
|
|
- CMFCRibbonButton* pVisualStyleButton = new CMFCRibbonButton(-1, strTemp, -1, -1);
|
|
|
-
|
|
|
- pVisualStyleButton->SetMenu(IDR_THEME_MENU, FALSE /* 无默认命令*/, TRUE /* 右对齐*/);
|
|
|
-
|
|
|
- bNameValid = strTemp.LoadString(IDS_RIBBON_STYLE_TIP);
|
|
|
- ASSERT(bNameValid);
|
|
|
- pVisualStyleButton->SetToolTipText(strTemp);
|
|
|
- bNameValid = strTemp.LoadString(IDS_RIBBON_STYLE_DESC);
|
|
|
- ASSERT(bNameValid);
|
|
|
- pVisualStyleButton->SetDescription(strTemp);
|
|
|
- m_wndRibbonBar.AddToTabs(pVisualStyleButton);
|
|
|
+ bNameValid = strTemp.LoadString(IDS_RIBBON_EXIT);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ pMainPanel->AddToBottom(new CMFCRibbonMainPanelButton(ID_APP_EXIT, strTemp, 15));
|
|
|
+
|
|
|
+ // 为“剪贴板”面板添加“主”类别:
|
|
|
+ bNameValid = strTemp.LoadString(IDS_RIBBON_HOME);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ CMFCRibbonCategory* pCategoryHome = m_wndRibbonBar.AddCategory(strTemp, IDB_WRITESMALL, IDB_WRITELARGE);
|
|
|
+
|
|
|
+ //////////////////////////////////////////////////////////////////////////
|
|
|
+ // 创建“摄像头”面板:
|
|
|
+ {
|
|
|
+ bNameValid = strTemp.LoadString(IDS_RIBBON_CAMERA);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ CMFCRibbonPanel* pPanelCamera = pCategoryHome->AddPanel(strTemp, m_PanelImages.ExtractIcon(27));
|
|
|
+ // 排序面板按列垂直对齐元素;
|
|
|
+ pPanelCamera->SetCenterColumnVert(TRUE);
|
|
|
+ // 启用或禁用功能区元素的宽度调整在同一列的
|
|
|
+ pPanelCamera->SetJustifyColumns(TRUE);
|
|
|
+
|
|
|
+ // 只有组的元素,才能水平对齐;
|
|
|
+ CMFCRibbonButtonsGroup* pGroup = new CMFCRibbonButtonsGroup();
|
|
|
+ pPanelCamera->Add(pGroup);
|
|
|
+
|
|
|
+ bNameValid = strTemp.LoadString(IDS_RIBBON_CAMERA_LABEL);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ CMFCRibbonLabel* pCameraLable = new CMFCRibbonLabel(strTemp);
|
|
|
+ pGroup->AddButton(pCameraLable);
|
|
|
+ pCameraLable->SetRect(CRect(0, 0, 150, 20));
|
|
|
+
|
|
|
+ CMFCRibbonComboBox* pCameraCombobx = new CMFCRibbonComboBox(ID_RIBBON_CAMERA_COMBOBOX, FALSE);
|
|
|
+ pGroup->AddButton(pCameraCombobx);
|
|
|
+ pCameraCombobx->SetWidth(80);
|
|
|
+ pCameraCombobx->SetCompactMode(FALSE);
|
|
|
+
|
|
|
+ bNameValid = strTemp.LoadString(IDS_RIBBON_CAMERA_FLUSH);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ CMFCRibbonButton* pCameraFlush = new CMFCRibbonButton(ID_RIBBON_CAMERA_FLUSH, strTemp);
|
|
|
+ pGroup->AddButton(pCameraFlush);
|
|
|
+ pGroup->SetCompactMode(FALSE);
|
|
|
+ }
|
|
|
+
|
|
|
+ //////////////////////////////////////////////////////////////////////////
|
|
|
+ // 创建“测试精灵”面板:
|
|
|
+ {
|
|
|
+ bNameValid = strTemp.LoadString(IDS_RIBBON_INFRAED);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ CMFCRibbonPanel* pPanelInfraed = pCategoryHome->AddPanel(strTemp, m_PanelImages.ExtractIcon(7));
|
|
|
+ // 排序面板按列垂直对齐元素;
|
|
|
+ pPanelInfraed->SetCenterColumnVert(TRUE);
|
|
|
+ // 启用或禁用功能区元素的宽度调整在同一列的
|
|
|
+ pPanelInfraed->SetJustifyColumns(TRUE);
|
|
|
+
|
|
|
+ // 只有组的元素,才能水平对齐;
|
|
|
+ CMFCRibbonButtonsGroup* pGroup = new CMFCRibbonButtonsGroup();
|
|
|
+ pPanelInfraed->Add(pGroup);
|
|
|
+
|
|
|
+ CMFCRibbonComboBox* pInfraedCombobox = new CMFCRibbonComboBox(ID_RIBBON_INFRAED_COMBOBOX, FALSE);
|
|
|
+ pGroup->AddButton(pInfraedCombobox);
|
|
|
+ pInfraedCombobox->SetWidth(110);
|
|
|
+
|
|
|
+ bNameValid = strTemp.LoadString(IDS_RIBBON_INFRAED_CHECKBOX);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ CMFCRibbonCheckBox* pInfraedCheckbox = new CMFCRibbonCheckBox(ID_RIBBON_INFRAED_CHECKBOX, strTemp);
|
|
|
+ pGroup->AddButton(pInfraedCheckbox);
|
|
|
+
|
|
|
+ // 红外遥控版本选择
|
|
|
+ CMFCRibbonButtonsGroup* pGroup2 = new CMFCRibbonButtonsGroup();
|
|
|
+ pPanelInfraed->Add(pGroup2);
|
|
|
+
|
|
|
+ bNameValid = strTemp.LoadString(IDS_RIBBON_INFRAED_VERSION);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ CMFCRibbonLabel* pCameraLable = new CMFCRibbonLabel(strTemp);
|
|
|
+ pGroup2->AddButton(pCameraLable);
|
|
|
+ pCameraLable->SetRect(CRect(0, 0, 150, 20));
|
|
|
+
|
|
|
+ bNameValid = strTemp.LoadString(IDS_RIBBON_INFRAED_VERSION);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ CMFCRibbonComboBox* pVersion = new CMFCRibbonComboBox(ID_RIBBON_INFRAED_VERSION_COMBOBOX, FALSE);
|
|
|
+ pGroup2->AddButton(pVersion);
|
|
|
+ pVersion->SetWidth(80);
|
|
|
+ pVersion->AddItem(_T("1st-version"));
|
|
|
+ pVersion->AddItem(_T("2nd-version"));
|
|
|
+ //pVersion->AddItem(_T("3rd-version"));
|
|
|
+ //pVersion->AddItem(_T("4th-version"));
|
|
|
+
|
|
|
+ pVersion->SelectItem(Global::g_nVersion - 1);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 创建“U盘切换器”面板:
|
|
|
+ {
|
|
|
+ bNameValid = strTemp.LoadString(IDS_RIBBON_SWITCHER);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ CMFCRibbonPanel* pPanelSwitcher = pCategoryHome->AddPanel(strTemp, m_PanelImages.ExtractIcon(7));
|
|
|
+ // 排序面板按列垂直对齐元素;
|
|
|
+ pPanelSwitcher->SetCenterColumnVert(TRUE);
|
|
|
+ // 启用或禁用功能区元素的宽度调整在同一列的
|
|
|
+ pPanelSwitcher->SetJustifyColumns(TRUE);
|
|
|
+
|
|
|
+ // 只有组的元素,才能水平对齐;
|
|
|
+ CMFCRibbonButtonsGroup* pGroup = new CMFCRibbonButtonsGroup();
|
|
|
+ pPanelSwitcher->Add(pGroup);
|
|
|
+
|
|
|
+ CMFCRibbonComboBox* pSwitcherCombobox = new CMFCRibbonComboBox(ID_RIBBON_SWITCHER_COMBOBOX, FALSE);
|
|
|
+ pGroup->AddButton(pSwitcherCombobox);
|
|
|
+ pSwitcherCombobox->SetWidth(60);
|
|
|
+
|
|
|
+ bNameValid = strTemp.LoadString(IDS_RIBBON_SWITCHER_CHECKBOX);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ CMFCRibbonCheckBox* pSwitcherCheckbox = new CMFCRibbonCheckBox(ID_RIBBON_SWITCHER_CHECKBOX, strTemp);
|
|
|
+ pGroup->AddButton(pSwitcherCheckbox);
|
|
|
+
|
|
|
+ // 只有组的元素,才能水平对齐;
|
|
|
+ CMFCRibbonButtonsGroup* pGroupCheckBox = new CMFCRibbonButtonsGroup();
|
|
|
+ pPanelSwitcher->Add(pGroupCheckBox);
|
|
|
+
|
|
|
+ bNameValid = strTemp.LoadString(IDS_RIBBON_SWITCHER_CHECKBOXA);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ CMFCRibbonCheckBox* pSwitcherCheckboxA = new CMFCRibbonCheckBox(ID_RIBBON_SWITCHER_CHECKBOXA, strTemp);
|
|
|
+ pGroupCheckBox->AddButton(pSwitcherCheckboxA);
|
|
|
+
|
|
|
+ bNameValid = strTemp.LoadString(IDS_RIBBON_SWITCHER_CHECKBOXB);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ CMFCRibbonCheckBox* pSwitcherCheckboxB = new CMFCRibbonCheckBox(ID_RIBBON_SWITCHER_CHECKBOXB, strTemp);
|
|
|
+ pGroupCheckBox->AddButton(pSwitcherCheckboxB);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 将元素添加到选项卡右侧:
|
|
|
+ bNameValid = strTemp.LoadString(IDS_RIBBON_STYLE);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ CMFCRibbonButton* pVisualStyleButton = new CMFCRibbonButton(-1, strTemp, -1, -1);
|
|
|
+
|
|
|
+ pVisualStyleButton->SetMenu(IDR_THEME_MENU, FALSE /* 无默认命令*/, TRUE /* 右对齐*/);
|
|
|
+
|
|
|
+ bNameValid = strTemp.LoadString(IDS_RIBBON_STYLE_TIP);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ pVisualStyleButton->SetToolTipText(strTemp);
|
|
|
+ bNameValid = strTemp.LoadString(IDS_RIBBON_STYLE_DESC);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ pVisualStyleButton->SetDescription(strTemp);
|
|
|
+ m_wndRibbonBar.AddToTabs(pVisualStyleButton);
|
|
|
|
|
|
#ifndef DISABLE_QUICKACCESS
|
|
|
- // 添加快速访问工具栏命令:
|
|
|
- CList<UINT, UINT> lstQATCmds;
|
|
|
-
|
|
|
- lstQATCmds.AddTail(ID_FILE_NEW);
|
|
|
- lstQATCmds.AddTail(ID_FILE_OPEN);
|
|
|
- lstQATCmds.AddTail(ID_FILE_SAVE);
|
|
|
- lstQATCmds.AddTail(ID_FILE_PRINT_DIRECT);
|
|
|
- m_wndRibbonBar.SetQuickAccessCommands(lstQATCmds);
|
|
|
+ // 添加快速访问工具栏命令:
|
|
|
+ CList<UINT, UINT> lstQATCmds;
|
|
|
+
|
|
|
+ lstQATCmds.AddTail(ID_FILE_NEW);
|
|
|
+ lstQATCmds.AddTail(ID_FILE_OPEN);
|
|
|
+ lstQATCmds.AddTail(ID_FILE_SAVE);
|
|
|
+ lstQATCmds.AddTail(ID_FILE_PRINT_DIRECT);
|
|
|
+ m_wndRibbonBar.SetQuickAccessCommands(lstQATCmds);
|
|
|
#endif
|
|
|
|
|
|
- m_wndRibbonBar.AddToTabs(new CMFCRibbonButton(ID_APP_ABOUT, _T("\na"), m_PanelImages.ExtractIcon (0)));
|
|
|
+ m_wndRibbonBar.AddToTabs(new CMFCRibbonButton(ID_APP_ABOUT, _T("\na"), m_PanelImages.ExtractIcon(0)));
|
|
|
}
|
|
|
|
|
|
BOOL CMainFrame::CreateDockingWindows()
|
|
|
{
|
|
|
- BOOL bNameValid;
|
|
|
-
|
|
|
- // 创建属性窗口
|
|
|
- CString strPropertiesWnd;
|
|
|
- bNameValid = strPropertiesWnd.LoadString(IDS_PROPERTIES_WND);
|
|
|
- ASSERT(bNameValid);
|
|
|
- if (!m_wndProperties.Create(strPropertiesWnd, this, CRect(0, 0, 200, 200), TRUE, ID_VIEW_PROPERTIESWND, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_RIGHT | CBRS_FLOAT_MULTI))
|
|
|
- {
|
|
|
- TRACE0("未能创建“属性”窗口\n");
|
|
|
- return FALSE; // 未能创建
|
|
|
- }
|
|
|
-
|
|
|
- SetDockingWindowIcons(theApp.m_bHiColorIcons);
|
|
|
- return TRUE;
|
|
|
+ BOOL bNameValid;
|
|
|
+
|
|
|
+ // 创建属性窗口
|
|
|
+ CString strPropertiesWnd;
|
|
|
+ bNameValid = strPropertiesWnd.LoadString(IDS_PROPERTIES_WND);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ if (!m_wndProperties.Create(strPropertiesWnd, this, CRect(0, 0, 200, 200), TRUE, ID_VIEW_PROPERTIESWND, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_RIGHT | CBRS_FLOAT_MULTI))
|
|
|
+ {
|
|
|
+ TRACE0("未能创建“属性”窗口\n");
|
|
|
+ return FALSE; // 未能创建
|
|
|
+ }
|
|
|
+
|
|
|
+ SetDockingWindowIcons(theApp.m_bHiColorIcons);
|
|
|
+ return TRUE;
|
|
|
}
|
|
|
|
|
|
void CMainFrame::SetDockingWindowIcons(BOOL bHiColorIcons)
|
|
|
{
|
|
|
- HICON hPropertiesBarIcon = (HICON) ::LoadImage(::AfxGetResourceHandle(), MAKEINTRESOURCE(bHiColorIcons ? IDI_PROPERTIES_WND_HC : IDI_PROPERTIES_WND), IMAGE_ICON, ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON), 0);
|
|
|
- m_wndProperties.SetIcon(hPropertiesBarIcon, FALSE);
|
|
|
+ HICON hPropertiesBarIcon = (HICON) ::LoadImage(::AfxGetResourceHandle(), MAKEINTRESOURCE(bHiColorIcons ? IDI_PROPERTIES_WND_HC : IDI_PROPERTIES_WND), IMAGE_ICON, ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON), 0);
|
|
|
+ m_wndProperties.SetIcon(hPropertiesBarIcon, FALSE);
|
|
|
|
|
|
- UpdateMDITabbedBarsIcons();
|
|
|
+ UpdateMDITabbedBarsIcons();
|
|
|
}
|
|
|
|
|
|
#ifndef DISABLE_OUTLOOKBAR
|
|
|
BOOL CMainFrame::CreateOutlookBar(CMFCOutlookBar& bar, UINT uiID, CMFCShellTreeCtrl& tree, CCalendarBar& calendar, int nInitialWidth)
|
|
|
{
|
|
|
- CWindowDC dc(NULL);
|
|
|
+ CWindowDC dc(NULL);
|
|
|
|
|
|
- bar.SetMode2003();
|
|
|
+ bar.SetMode2003();
|
|
|
|
|
|
- BOOL bNameValid;
|
|
|
- CString strTemp;
|
|
|
- bNameValid = strTemp.LoadString(IDS_SHORTCUTS);
|
|
|
- ASSERT(bNameValid);
|
|
|
- if (!bar.Create(strTemp, this, CRect(0, 0, nInitialWidth, 32000), uiID, WS_CHILD | WS_VISIBLE | CBRS_LEFT))
|
|
|
- {
|
|
|
- return FALSE; // 未能创建
|
|
|
- }
|
|
|
+ BOOL bNameValid;
|
|
|
+ CString strTemp;
|
|
|
+ bNameValid = strTemp.LoadString(IDS_SHORTCUTS);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ if (!bar.Create(strTemp, this, CRect(0, 0, nInitialWidth, 32000), uiID, WS_CHILD | WS_VISIBLE | CBRS_LEFT))
|
|
|
+ {
|
|
|
+ return FALSE; // 未能创建
|
|
|
+ }
|
|
|
|
|
|
- CMFCOutlookBarTabCtrl* pOutlookBar = (CMFCOutlookBarTabCtrl*)bar.GetUnderlyingWindow();
|
|
|
+ CMFCOutlookBarTabCtrl* pOutlookBar = (CMFCOutlookBarTabCtrl*)bar.GetUnderlyingWindow();
|
|
|
|
|
|
- if (pOutlookBar == NULL)
|
|
|
- {
|
|
|
- ASSERT(FALSE);
|
|
|
- return FALSE;
|
|
|
- }
|
|
|
+ if (pOutlookBar == NULL)
|
|
|
+ {
|
|
|
+ ASSERT(FALSE);
|
|
|
+ return FALSE;
|
|
|
+ }
|
|
|
|
|
|
- pOutlookBar->EnableInPlaceEdit(TRUE);
|
|
|
+ pOutlookBar->EnableInPlaceEdit(TRUE);
|
|
|
|
|
|
- static UINT uiPageID = 1;
|
|
|
+ static UINT uiPageID = 1;
|
|
|
|
|
|
- DWORD dwPaneStyle = AFX_DEFAULT_TOOLBAR_STYLE | CBRS_FLOAT_MULTI;
|
|
|
+ DWORD dwPaneStyle = AFX_DEFAULT_TOOLBAR_STYLE | CBRS_FLOAT_MULTI;
|
|
|
|
|
|
- // 可浮动,可自动隐藏,可调整大小,但不能关闭
|
|
|
- DWORD dwStyle = AFX_CBRS_FLOAT | AFX_CBRS_AUTOHIDE | AFX_CBRS_RESIZE;
|
|
|
+ // 可浮动,可自动隐藏,可调整大小,但不能关闭
|
|
|
+ DWORD dwStyle = AFX_CBRS_FLOAT | AFX_CBRS_AUTOHIDE | AFX_CBRS_RESIZE;
|
|
|
|
|
|
- CRect rectDummy(0, 0, 0, 0);
|
|
|
- const DWORD dwTreeStyle = WS_CHILD | WS_VISIBLE | TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS;
|
|
|
+ CRect rectDummy(0, 0, 0, 0);
|
|
|
+ const DWORD dwTreeStyle = WS_CHILD | WS_VISIBLE | TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS;
|
|
|
|
|
|
- tree.Create(dwTreeStyle, rectDummy, &bar, 1200);
|
|
|
- bNameValid = strTemp.LoadString(IDS_FOLDERS);
|
|
|
- ASSERT(bNameValid);
|
|
|
- pOutlookBar->AddControl(&tree, strTemp, 2, TRUE, dwStyle);
|
|
|
+ tree.Create(dwTreeStyle, rectDummy, &bar, 1200);
|
|
|
+ bNameValid = strTemp.LoadString(IDS_FOLDERS);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ pOutlookBar->AddControl(&tree, strTemp, 2, TRUE, dwStyle);
|
|
|
|
|
|
- calendar.Create(rectDummy, &bar, 1201);
|
|
|
- bNameValid = strTemp.LoadString(IDS_CALENDAR);
|
|
|
- ASSERT(bNameValid);
|
|
|
- pOutlookBar->AddControl(&calendar, strTemp, 3, TRUE, dwStyle);
|
|
|
+ calendar.Create(rectDummy, &bar, 1201);
|
|
|
+ bNameValid = strTemp.LoadString(IDS_CALENDAR);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ pOutlookBar->AddControl(&calendar, strTemp, 3, TRUE, dwStyle);
|
|
|
|
|
|
- bar.SetPaneStyle(bar.GetPaneStyle() | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
|
|
|
+ bar.SetPaneStyle(bar.GetPaneStyle() | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
|
|
|
|
|
|
- pOutlookBar->SetImageList(theApp.m_bHiColorIcons ? IDB_PAGES_HC : IDB_PAGES, 24);
|
|
|
- pOutlookBar->SetToolbarImageList(theApp.m_bHiColorIcons ? IDB_PAGES_SMALL_HC : IDB_PAGES_SMALL, 16);
|
|
|
- pOutlookBar->RecalcLayout();
|
|
|
+ pOutlookBar->SetImageList(theApp.m_bHiColorIcons ? IDB_PAGES_HC : IDB_PAGES, 24);
|
|
|
+ pOutlookBar->SetToolbarImageList(theApp.m_bHiColorIcons ? IDB_PAGES_SMALL_HC : IDB_PAGES_SMALL, 16);
|
|
|
+ pOutlookBar->RecalcLayout();
|
|
|
|
|
|
- BOOL bAnimation = theApp.GetInt(_T("OutlookAnimation"), TRUE);
|
|
|
- CMFCOutlookBarTabCtrl::EnableAnimation(bAnimation);
|
|
|
+ BOOL bAnimation = theApp.GetInt(_T("OutlookAnimation"), TRUE);
|
|
|
+ CMFCOutlookBarTabCtrl::EnableAnimation(bAnimation);
|
|
|
|
|
|
- bar.SetButtonsFont(&afxGlobalData.fontBold);
|
|
|
+ bar.SetButtonsFont(&afxGlobalData.fontBold);
|
|
|
|
|
|
- return TRUE;
|
|
|
+ return TRUE;
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
#ifndef DISABLE_CAPTIONBAR
|
|
|
BOOL CMainFrame::CreateCaptionBar()
|
|
|
{
|
|
|
- if (!m_wndCaptionBar.Create(WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS, this, ID_VIEW_CAPTION_BAR, -1, TRUE))
|
|
|
- {
|
|
|
- TRACE0("未能创建标题栏\n");
|
|
|
- return FALSE;
|
|
|
- }
|
|
|
-
|
|
|
- BOOL bNameValid;
|
|
|
-
|
|
|
- CString strTemp, strTemp2;
|
|
|
- bNameValid = strTemp.LoadString(IDS_CAPTION_BUTTON);
|
|
|
- ASSERT(bNameValid);
|
|
|
- m_wndCaptionBar.SetButton(strTemp, ID_TOOLS_OPTIONS, CMFCCaptionBar::ALIGN_LEFT, FALSE);
|
|
|
- bNameValid = strTemp.LoadString(IDS_CAPTION_BUTTON_TIP);
|
|
|
- ASSERT(bNameValid);
|
|
|
- m_wndCaptionBar.SetButtonToolTip(strTemp);
|
|
|
-
|
|
|
- bNameValid = strTemp.LoadString(IDS_CAPTION_TEXT);
|
|
|
- ASSERT(bNameValid);
|
|
|
- m_wndCaptionBar.SetText(strTemp, CMFCCaptionBar::ALIGN_LEFT);
|
|
|
-
|
|
|
- m_wndCaptionBar.SetBitmap(IDB_INFO, RGB(255, 255, 255), FALSE, CMFCCaptionBar::ALIGN_LEFT);
|
|
|
- bNameValid = strTemp.LoadString(IDS_CAPTION_IMAGE_TIP);
|
|
|
- ASSERT(bNameValid);
|
|
|
- bNameValid = strTemp2.LoadString(IDS_CAPTION_IMAGE_TEXT);
|
|
|
- ASSERT(bNameValid);
|
|
|
- m_wndCaptionBar.SetImageToolTip(strTemp, strTemp2);
|
|
|
-
|
|
|
- return TRUE;
|
|
|
+ if (!m_wndCaptionBar.Create(WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS, this, ID_VIEW_CAPTION_BAR, -1, TRUE))
|
|
|
+ {
|
|
|
+ TRACE0("未能创建标题栏\n");
|
|
|
+ return FALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ BOOL bNameValid;
|
|
|
+
|
|
|
+ CString strTemp, strTemp2;
|
|
|
+ bNameValid = strTemp.LoadString(IDS_CAPTION_BUTTON);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ m_wndCaptionBar.SetButton(strTemp, ID_TOOLS_OPTIONS, CMFCCaptionBar::ALIGN_LEFT, FALSE);
|
|
|
+ bNameValid = strTemp.LoadString(IDS_CAPTION_BUTTON_TIP);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ m_wndCaptionBar.SetButtonToolTip(strTemp);
|
|
|
+
|
|
|
+ bNameValid = strTemp.LoadString(IDS_CAPTION_TEXT);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ m_wndCaptionBar.SetText(strTemp, CMFCCaptionBar::ALIGN_LEFT);
|
|
|
+
|
|
|
+ m_wndCaptionBar.SetBitmap(IDB_INFO, RGB(255, 255, 255), FALSE, CMFCCaptionBar::ALIGN_LEFT);
|
|
|
+ bNameValid = strTemp.LoadString(IDS_CAPTION_IMAGE_TIP);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ bNameValid = strTemp2.LoadString(IDS_CAPTION_IMAGE_TEXT);
|
|
|
+ ASSERT(bNameValid);
|
|
|
+ m_wndCaptionBar.SetImageToolTip(strTemp, strTemp2);
|
|
|
+
|
|
|
+ return TRUE;
|
|
|
}
|
|
|
#endif
|
|
|
|
|
@@ -548,12 +548,12 @@ BOOL CMainFrame::CreateCaptionBar()
|
|
|
#ifdef _DEBUG
|
|
|
void CMainFrame::AssertValid() const
|
|
|
{
|
|
|
- CMDIFrameWndEx::AssertValid();
|
|
|
+ CMDIFrameWndEx::AssertValid();
|
|
|
}
|
|
|
|
|
|
void CMainFrame::Dump(CDumpContext& dc) const
|
|
|
{
|
|
|
- CMDIFrameWndEx::Dump(dc);
|
|
|
+ CMDIFrameWndEx::Dump(dc);
|
|
|
}
|
|
|
#endif //_DEBUG
|
|
|
|
|
@@ -562,843 +562,848 @@ void CMainFrame::Dump(CDumpContext& dc) const
|
|
|
|
|
|
void CMainFrame::OnWindowManager()
|
|
|
{
|
|
|
- ShowWindowsDialog();
|
|
|
+ ShowWindowsDialog();
|
|
|
}
|
|
|
|
|
|
void CMainFrame::OnApplicationLook(UINT id)
|
|
|
{
|
|
|
- CWaitCursor wait;
|
|
|
-
|
|
|
- theApp.m_nAppLook = id;
|
|
|
-
|
|
|
- switch (theApp.m_nAppLook)
|
|
|
- {
|
|
|
- case ID_VIEW_APPLOOK_WIN_2000:
|
|
|
- CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManager));
|
|
|
- break;
|
|
|
-
|
|
|
- case ID_VIEW_APPLOOK_OFF_XP:
|
|
|
- CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOfficeXP));
|
|
|
- break;
|
|
|
-
|
|
|
- case ID_VIEW_APPLOOK_WIN_XP:
|
|
|
- CMFCVisualManagerWindows::m_b3DTabsXPTheme = TRUE;
|
|
|
- CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));
|
|
|
- break;
|
|
|
-
|
|
|
- case ID_VIEW_APPLOOK_OFF_2003:
|
|
|
- CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2003));
|
|
|
- CDockingManager::SetDockingMode(DT_SMART);
|
|
|
- break;
|
|
|
-
|
|
|
- case ID_VIEW_APPLOOK_VS_2005:
|
|
|
- CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerVS2005));
|
|
|
- CDockingManager::SetDockingMode(DT_SMART);
|
|
|
- break;
|
|
|
-
|
|
|
- default:
|
|
|
- switch (theApp.m_nAppLook)
|
|
|
- {
|
|
|
- case ID_VIEW_APPLOOK_OFF_2007_BLUE:
|
|
|
- CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_LunaBlue);
|
|
|
- break;
|
|
|
-
|
|
|
- case ID_VIEW_APPLOOK_OFF_2007_BLACK:
|
|
|
- CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_ObsidianBlack);
|
|
|
- break;
|
|
|
-
|
|
|
- case ID_VIEW_APPLOOK_OFF_2007_SILVER:
|
|
|
- CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_Silver);
|
|
|
- break;
|
|
|
-
|
|
|
- case ID_VIEW_APPLOOK_OFF_2007_AQUA:
|
|
|
- CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_Aqua);
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2007));
|
|
|
- CDockingManager::SetDockingMode(DT_SMART);
|
|
|
- }
|
|
|
-
|
|
|
- RedrawWindow(NULL, NULL, RDW_ALLCHILDREN | RDW_INVALIDATE | RDW_UPDATENOW | RDW_FRAME | RDW_ERASE);
|
|
|
-
|
|
|
- theApp.WriteInt(_T("ApplicationLook"), theApp.m_nAppLook);
|
|
|
+ CWaitCursor wait;
|
|
|
+
|
|
|
+ theApp.m_nAppLook = id;
|
|
|
+
|
|
|
+ switch (theApp.m_nAppLook)
|
|
|
+ {
|
|
|
+ case ID_VIEW_APPLOOK_WIN_2000:
|
|
|
+ CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManager));
|
|
|
+ break;
|
|
|
+
|
|
|
+ case ID_VIEW_APPLOOK_OFF_XP:
|
|
|
+ CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOfficeXP));
|
|
|
+ break;
|
|
|
+
|
|
|
+ case ID_VIEW_APPLOOK_WIN_XP:
|
|
|
+ CMFCVisualManagerWindows::m_b3DTabsXPTheme = TRUE;
|
|
|
+ CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));
|
|
|
+ break;
|
|
|
+
|
|
|
+ case ID_VIEW_APPLOOK_OFF_2003:
|
|
|
+ CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2003));
|
|
|
+ CDockingManager::SetDockingMode(DT_SMART);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case ID_VIEW_APPLOOK_VS_2005:
|
|
|
+ CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerVS2005));
|
|
|
+ CDockingManager::SetDockingMode(DT_SMART);
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ switch (theApp.m_nAppLook)
|
|
|
+ {
|
|
|
+ case ID_VIEW_APPLOOK_OFF_2007_BLUE:
|
|
|
+ CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_LunaBlue);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case ID_VIEW_APPLOOK_OFF_2007_BLACK:
|
|
|
+ CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_ObsidianBlack);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case ID_VIEW_APPLOOK_OFF_2007_SILVER:
|
|
|
+ CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_Silver);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case ID_VIEW_APPLOOK_OFF_2007_AQUA:
|
|
|
+ CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_Aqua);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2007));
|
|
|
+ CDockingManager::SetDockingMode(DT_SMART);
|
|
|
+ }
|
|
|
+
|
|
|
+ RedrawWindow(NULL, NULL, RDW_ALLCHILDREN | RDW_INVALIDATE | RDW_UPDATENOW | RDW_FRAME | RDW_ERASE);
|
|
|
+
|
|
|
+ theApp.WriteInt(_T("ApplicationLook"), theApp.m_nAppLook);
|
|
|
}
|
|
|
|
|
|
void CMainFrame::OnUpdateApplicationLook(CCmdUI* pCmdUI)
|
|
|
{
|
|
|
- pCmdUI->SetRadio(theApp.m_nAppLook == pCmdUI->m_nID);
|
|
|
+ pCmdUI->SetRadio(theApp.m_nAppLook == pCmdUI->m_nID);
|
|
|
}
|
|
|
|
|
|
#ifndef DISABLE_CAPTIONBAR
|
|
|
void CMainFrame::OnViewCaptionBar()
|
|
|
{
|
|
|
- m_wndCaptionBar.ShowWindow(m_wndCaptionBar.IsVisible() ? SW_HIDE : SW_SHOW);
|
|
|
- RecalcLayout(FALSE);
|
|
|
+ m_wndCaptionBar.ShowWindow(m_wndCaptionBar.IsVisible() ? SW_HIDE : SW_SHOW);
|
|
|
+ RecalcLayout(FALSE);
|
|
|
}
|
|
|
|
|
|
void CMainFrame::OnUpdateViewCaptionBar(CCmdUI* pCmdUI)
|
|
|
{
|
|
|
- pCmdUI->SetCheck(m_wndCaptionBar.IsVisible());
|
|
|
+ pCmdUI->SetCheck(m_wndCaptionBar.IsVisible());
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
void CMainFrame::OnCameraCombobox()
|
|
|
{
|
|
|
- CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
- ASSERT_VALID(pRibbon);
|
|
|
- CMFCRibbonComboBox* pCameraCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_CAMERA_COMBOBOX));
|
|
|
- if ( pCameraCombo )
|
|
|
- {
|
|
|
- int nCurSel = pCameraCombo->GetCurSel();
|
|
|
- if ( nCurSel != -1 )
|
|
|
- {
|
|
|
- if ( m_pChildFrame )
|
|
|
- {
|
|
|
- CFieldTestToolView *pView = (CFieldTestToolView*)m_pChildFrame->GetActiveView();
|
|
|
- if ( pView->m_pCamera )
|
|
|
- delete pView->m_pCamera;
|
|
|
- pView->m_pCamera = NULL;
|
|
|
- pView->DestroyWindow(); //pView->SendMessage(WM_CLOSE, 0, 0);
|
|
|
- m_pChildFrame->DestroyWindow(); //m_pChildFrame->SendMessage(WM_CLOSE, 0, 0);
|
|
|
- m_pChildFrame = NULL;
|
|
|
- }
|
|
|
-
|
|
|
- CString strCamera = pCameraCombo->GetItem(nCurSel);
|
|
|
- OutputDebugString(strCamera + _T("\r\n"));
|
|
|
-
|
|
|
- CCreateContext context;
|
|
|
- m_pChildFrame = new CChildFrame();
|
|
|
- context.m_pLastView = NULL;
|
|
|
- context.m_pCurrentFrame = this;
|
|
|
- // 不要使用m_pDoc,这个是会在第一次随m_pChildFrame->DestroyWindow或m_pChildFrame->SendMessage(WM_CLOSE, 0, 0);销毁
|
|
|
- // 再次使用时m_pDoc是野指针,导致LoadFrame出错;
|
|
|
- context.m_pCurrentDoc = NULL;//m_pDocTemplate->CreateNewDocument();
|
|
|
- context.m_pNewViewClass = RUNTIME_CLASS(CFieldTestToolView);
|
|
|
- context.m_pNewDocTemplate = m_pDocTemplate;
|
|
|
-
|
|
|
- if (m_pChildFrame->LoadFrame(IDR_MAINFRAME, WS_MAXIMIZE | WS_CHILDWINDOW, this, &context))
|
|
|
- {
|
|
|
- m_pChildFrame->MDIActivate();
|
|
|
- m_pChildFrame->InitialUpdateFrame(m_pDoc, TRUE);
|
|
|
- m_pChildFrame->ShowWindow(SW_SHOWMAXIMIZED);
|
|
|
- CFieldTestToolView *pView = (CFieldTestToolView*)m_pChildFrame->GetActiveView();
|
|
|
-
|
|
|
- if ( pView )
|
|
|
- pView->m_pCamera = new CCaptureVideo();
|
|
|
- pView->m_pCamera->Init(nCurSel, m_pChildFrame->GetSafeHwnd());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
+ ASSERT_VALID(pRibbon);
|
|
|
+ CMFCRibbonComboBox* pCameraCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_CAMERA_COMBOBOX));
|
|
|
+ if (pCameraCombo)
|
|
|
+ {
|
|
|
+ int nCurSel = pCameraCombo->GetCurSel();
|
|
|
+ if (nCurSel != -1)
|
|
|
+ {
|
|
|
+ if (m_pChildFrame)
|
|
|
+ {
|
|
|
+ CFieldTestToolView* pView = (CFieldTestToolView*)m_pChildFrame->GetActiveView();
|
|
|
+ if (pView->m_pCamera)
|
|
|
+ delete pView->m_pCamera;
|
|
|
+ pView->m_pCamera = NULL;
|
|
|
+ pView->DestroyWindow(); //pView->SendMessage(WM_CLOSE, 0, 0);
|
|
|
+ m_pChildFrame->DestroyWindow(); //m_pChildFrame->SendMessage(WM_CLOSE, 0, 0);
|
|
|
+ m_pChildFrame = NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+ CString strCamera = pCameraCombo->GetItem(nCurSel);
|
|
|
+ OutputDebugString(strCamera + _T("\r\n"));
|
|
|
+
|
|
|
+ CCreateContext context;
|
|
|
+ m_pChildFrame = new CChildFrame();
|
|
|
+ context.m_pLastView = NULL;
|
|
|
+ context.m_pCurrentFrame = this;
|
|
|
+ // 不要使用m_pDoc,这个是会在第一次随m_pChildFrame->DestroyWindow或m_pChildFrame->SendMessage(WM_CLOSE, 0, 0);销毁
|
|
|
+ // 再次使用时m_pDoc是野指针,导致LoadFrame出错;
|
|
|
+ context.m_pCurrentDoc = NULL;//m_pDocTemplate->CreateNewDocument();
|
|
|
+ context.m_pNewViewClass = RUNTIME_CLASS(CFieldTestToolView);
|
|
|
+ context.m_pNewDocTemplate = m_pDocTemplate;
|
|
|
+
|
|
|
+ if (m_pChildFrame->LoadFrame(IDR_MAINFRAME, WS_MAXIMIZE | WS_CHILDWINDOW, this, &context))
|
|
|
+ {
|
|
|
+ m_pChildFrame->MDIActivate();
|
|
|
+ m_pChildFrame->InitialUpdateFrame(m_pDoc, TRUE);
|
|
|
+ m_pChildFrame->ShowWindow(SW_SHOWMAXIMIZED);
|
|
|
+ CFieldTestToolView* pView = (CFieldTestToolView*)m_pChildFrame->GetActiveView();
|
|
|
+
|
|
|
+ if (pView)
|
|
|
+ pView->m_pCamera = new CCaptureVideo();
|
|
|
+ pView->m_pCamera->Init(nCurSel, m_pChildFrame->GetSafeHwnd());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void CMainFrame::OnUpdateCameraCombobox(CCmdUI* pCmdUI)
|
|
|
{
|
|
|
- //pCmdUI->SetCheck(m_wndCaptionBar.IsVisible());
|
|
|
+ //pCmdUI->SetCheck(m_wndCaptionBar.IsVisible());
|
|
|
}
|
|
|
|
|
|
void CMainFrame::OnInfraedCombobox()
|
|
|
{
|
|
|
- CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
- ASSERT_VALID(pRibbon);
|
|
|
- CMFCRibbonComboBox* pCameraCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_CAMERA_COMBOBOX));
|
|
|
+ CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
+ ASSERT_VALID(pRibbon);
|
|
|
+ CMFCRibbonComboBox* pCameraCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_CAMERA_COMBOBOX));
|
|
|
}
|
|
|
|
|
|
void CMainFrame::OnUpdateInfraedCombobox(CCmdUI* pCmdUI)
|
|
|
{
|
|
|
- CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
- ASSERT_VALID(pRibbon);
|
|
|
- CMFCRibbonCheckBox* pInfraedCheckbox = DYNAMIC_DOWNCAST(CMFCRibbonCheckBox, pRibbon->FindByID(ID_RIBBON_INFRAED_CHECKBOX));
|
|
|
- pCmdUI->Enable(!pInfraedCheckbox->IsChecked());
|
|
|
+ CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
+ ASSERT_VALID(pRibbon);
|
|
|
+ CMFCRibbonCheckBox* pInfraedCheckbox = DYNAMIC_DOWNCAST(CMFCRibbonCheckBox, pRibbon->FindByID(ID_RIBBON_INFRAED_CHECKBOX));
|
|
|
+ pCmdUI->Enable(!pInfraedCheckbox->IsChecked());
|
|
|
}
|
|
|
|
|
|
void CMainFrame::OnInfraedCheckbox()
|
|
|
{
|
|
|
- CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
- ASSERT_VALID(pRibbon);
|
|
|
- CMFCRibbonCheckBox* pInfraedCheckbox = DYNAMIC_DOWNCAST(CMFCRibbonCheckBox, pRibbon->FindByID(ID_RIBBON_INFRAED_CHECKBOX));
|
|
|
- CMFCRibbonComboBox* pInfraedCombobox = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_INFRAED_COMBOBOX));
|
|
|
-
|
|
|
- if ( !pInfraedCheckbox->IsChecked() )
|
|
|
- {
|
|
|
- int nCurSel = pInfraedCombobox->GetCurSel();
|
|
|
- if ( nCurSel != CB_ERR )
|
|
|
- {
|
|
|
- m_SerialTW.SetIOMode();
|
|
|
- CString strText = pInfraedCombobox->GetItem(nCurSel);
|
|
|
- if ( m_SerialTW.Open(atol(strText.Mid(3).GetString()), 115200) )
|
|
|
- {
|
|
|
- // 由于芯片性能不一样,导致串口读写超时也不一样;
|
|
|
- if ( Global::g_nVersion == 1 )
|
|
|
- m_SerialTW.SetTimeouts();
|
|
|
- else if ( Global::g_nVersion == 2 )
|
|
|
- m_SerialTW.SetTimeouts();//未验证其超时值;
|
|
|
-
|
|
|
- m_SerialTW.SetBufferSize(1024,1024);
|
|
|
- WritePrivateProfileString("TestWizard", "Com", strText.GetString(), Global::g_szConfig);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if ( m_SerialTW.IsOpen() )
|
|
|
- m_SerialTW.Close();
|
|
|
- }
|
|
|
+ CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
+ ASSERT_VALID(pRibbon);
|
|
|
+ CMFCRibbonCheckBox* pInfraedCheckbox = DYNAMIC_DOWNCAST(CMFCRibbonCheckBox, pRibbon->FindByID(ID_RIBBON_INFRAED_CHECKBOX));
|
|
|
+ CMFCRibbonComboBox* pInfraedCombobox = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_INFRAED_COMBOBOX));
|
|
|
+
|
|
|
+ if (!pInfraedCheckbox->IsChecked())
|
|
|
+ {
|
|
|
+ int nCurSel = pInfraedCombobox->GetCurSel();
|
|
|
+ if (nCurSel != CB_ERR)
|
|
|
+ {
|
|
|
+ m_SerialTW.SetIOMode();
|
|
|
+ CString strText = pInfraedCombobox->GetItem(nCurSel);
|
|
|
+ if (m_SerialTW.Open(atol(strText.Mid(3).GetString()), 115200))
|
|
|
+ {
|
|
|
+ // 由于芯片性能不一样,导致串口读写超时也不一样;
|
|
|
+ if (Global::g_nVersion == 1)
|
|
|
+ m_SerialTW.SetTimeouts();
|
|
|
+ else if (Global::g_nVersion == 2)
|
|
|
+ m_SerialTW.SetTimeouts();//未验证其超时值;
|
|
|
+
|
|
|
+ m_SerialTW.SetBufferSize(1024, 1024);
|
|
|
+ WritePrivateProfileString("TestWizard", "Com", strText.GetString(), Global::g_szConfig);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (m_SerialTW.IsOpen())
|
|
|
+ m_SerialTW.Close();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void CMainFrame::OnUpdateInfraedCheckbox(CCmdUI* pCmdUI)
|
|
|
{
|
|
|
- pCmdUI->SetCheck(m_SerialTW.IsOpen());
|
|
|
+ pCmdUI->SetCheck(m_SerialTW.IsOpen());
|
|
|
}
|
|
|
|
|
|
void CMainFrame::OnInfraedVersionCombobox()
|
|
|
{
|
|
|
- CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
- ASSERT_VALID(pRibbon);
|
|
|
- CMFCRibbonComboBox* pVersionCombobox = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_INFRAED_VERSION_COMBOBOX));
|
|
|
- if ( pVersionCombobox )
|
|
|
- {
|
|
|
- Global::g_nVersion = pVersionCombobox->GetCurSel();
|
|
|
- if (Global::g_nVersion != CB_ERR )
|
|
|
- {
|
|
|
- Global::g_nVersion++;
|
|
|
+ CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
+ ASSERT_VALID(pRibbon);
|
|
|
+ CMFCRibbonComboBox* pVersionCombobox = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_INFRAED_VERSION_COMBOBOX));
|
|
|
+ if (pVersionCombobox)
|
|
|
+ {
|
|
|
+ Global::g_nVersion = pVersionCombobox->GetCurSel();
|
|
|
+ if (Global::g_nVersion != CB_ERR)
|
|
|
+ {
|
|
|
+ Global::g_nVersion++;
|
|
|
#if _MSC_VER <= 1500
|
|
|
- if (Global::g_nVersion == 1 )
|
|
|
- WritePrivateProfileString("TestWizard", "Ver", "1", Global::g_szConfig);
|
|
|
- else if (Global::g_nVersion == 2 )
|
|
|
- WritePrivateProfileString("TestWizard", "Ver", "2", Global::g_szConfig);
|
|
|
- else if (Global::g_nVersion == 3 )
|
|
|
- WritePrivateProfileString("TestWizard", "Ver", "3", Global::g_szConfig);
|
|
|
- else if (Global::g_nVersion == 4)
|
|
|
- WritePrivateProfileString("TestWizard", "Ver", "4", Global::g_szConfig);
|
|
|
+ if (Global::g_nVersion == 1)
|
|
|
+ WritePrivateProfileString("TestWizard", "Ver", "1", Global::g_szConfig);
|
|
|
+ else if (Global::g_nVersion == 2)
|
|
|
+ WritePrivateProfileString("TestWizard", "Ver", "2", Global::g_szConfig);
|
|
|
+ else if (Global::g_nVersion == 3)
|
|
|
+ WritePrivateProfileString("TestWizard", "Ver", "3", Global::g_szConfig);
|
|
|
+ else if (Global::g_nVersion == 4)
|
|
|
+ WritePrivateProfileString("TestWizard", "Ver", "4", Global::g_szConfig);
|
|
|
#else
|
|
|
- // C++11直接用lambda表示式处理;
|
|
|
- WritePrivateProfileString("TestWizard", "Ver", [](int nVer)->LPCSTR{
|
|
|
- if (nVer == 1)
|
|
|
- return _T("1");
|
|
|
- else if (nVer == 2)
|
|
|
- return _T("2");
|
|
|
- else if (nVer == 3)
|
|
|
- return _T("3");
|
|
|
- else if (nVer == 4)
|
|
|
- return _T("4");
|
|
|
- }(Global::g_nVersion), Global::g_szConfig);
|
|
|
+ // C++11直接用lambda表示式处理;
|
|
|
+ WritePrivateProfileString("TestWizard", "Ver", [](int nVer)->LPCSTR {
|
|
|
+ if (nVer == 1)
|
|
|
+ return _T("1");
|
|
|
+ else if (nVer == 2)
|
|
|
+ return _T("2");
|
|
|
+ else if (nVer == 3)
|
|
|
+ return _T("3");
|
|
|
+ else if (nVer == 4)
|
|
|
+ return _T("4");
|
|
|
+ else
|
|
|
+ return _T("1");
|
|
|
+ }(Global::g_nVersion), Global::g_szConfig);
|
|
|
#endif
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void CMainFrame::OnUpdateInfraedVersionCombobox(CCmdUI* pCmdUI)
|
|
|
{
|
|
|
- CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
- ASSERT_VALID(pRibbon);
|
|
|
- CMFCRibbonComboBox* pVersionCombobox = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_INFRAED_VERSION_COMBOBOX));
|
|
|
+ CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
+ ASSERT_VALID(pRibbon);
|
|
|
+ CMFCRibbonComboBox* pVersionCombobox = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_INFRAED_VERSION_COMBOBOX));
|
|
|
|
|
|
}
|
|
|
|
|
|
void CMainFrame::OnSwitcherCombobox()
|
|
|
{
|
|
|
- CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
- ASSERT_VALID(pRibbon);
|
|
|
- CMFCRibbonComboBox* pCameraCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_COMBOBOX));
|
|
|
+ CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
+ ASSERT_VALID(pRibbon);
|
|
|
+ CMFCRibbonComboBox* pCameraCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_COMBOBOX));
|
|
|
}
|
|
|
|
|
|
void CMainFrame::OnUpdateSwitcherCombobox(CCmdUI* pCmdUI)
|
|
|
{
|
|
|
- CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
- ASSERT_VALID(pRibbon);
|
|
|
- CMFCRibbonCheckBox* pSwitcherCheckbox = DYNAMIC_DOWNCAST(CMFCRibbonCheckBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_CHECKBOX));
|
|
|
- pCmdUI->Enable(!pSwitcherCheckbox->IsChecked());
|
|
|
+ CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
+ ASSERT_VALID(pRibbon);
|
|
|
+ CMFCRibbonCheckBox* pSwitcherCheckbox = DYNAMIC_DOWNCAST(CMFCRibbonCheckBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_CHECKBOX));
|
|
|
+ pCmdUI->Enable(!pSwitcherCheckbox->IsChecked());
|
|
|
}
|
|
|
|
|
|
void CMainFrame::OnSwitcherCheckbox()
|
|
|
{
|
|
|
- CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
- ASSERT_VALID(pRibbon);
|
|
|
- CMFCRibbonCheckBox* pSwitcherCheckbox = DYNAMIC_DOWNCAST(CMFCRibbonCheckBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_CHECKBOX));
|
|
|
- CMFCRibbonComboBox* pSwitcherCombobox = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_COMBOBOX));
|
|
|
-
|
|
|
- if ( !pSwitcherCheckbox->IsChecked() )
|
|
|
- {
|
|
|
- int nCurSel = pSwitcherCombobox->GetCurSel();
|
|
|
- if ( nCurSel != CB_ERR )
|
|
|
- {
|
|
|
- m_SerialUSB.SetIOMode();
|
|
|
- CString strText = pSwitcherCombobox->GetItem(nCurSel);
|
|
|
- if ( m_SerialUSB.Open(atol(strText.Mid(3).GetString()), 115200) )
|
|
|
- {
|
|
|
- m_SerialUSB.SetBufferSize(1024,1024);
|
|
|
- WritePrivateProfileString("Switcher", "Com", strText.GetString(), Global::g_szConfig);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if ( m_SerialUSB.IsOpen() )
|
|
|
- m_SerialUSB.Close();
|
|
|
-
|
|
|
- // 重转Checkbox;
|
|
|
- m_bSwitcherCheckA = false;
|
|
|
- m_bSwitcherCheckB = false;
|
|
|
- }
|
|
|
+ CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
+ ASSERT_VALID(pRibbon);
|
|
|
+ CMFCRibbonCheckBox* pSwitcherCheckbox = DYNAMIC_DOWNCAST(CMFCRibbonCheckBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_CHECKBOX));
|
|
|
+ CMFCRibbonComboBox* pSwitcherCombobox = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_COMBOBOX));
|
|
|
+
|
|
|
+ if (!pSwitcherCheckbox->IsChecked())
|
|
|
+ {
|
|
|
+ int nCurSel = pSwitcherCombobox->GetCurSel();
|
|
|
+ if (nCurSel != CB_ERR)
|
|
|
+ {
|
|
|
+ m_SerialUSB.SetIOMode();
|
|
|
+ CString strText = pSwitcherCombobox->GetItem(nCurSel);
|
|
|
+ if (m_SerialUSB.Open(atol(strText.Mid(3).GetString()), 115200))
|
|
|
+ {
|
|
|
+ m_SerialUSB.SetBufferSize(1024, 1024);
|
|
|
+ WritePrivateProfileString("Switcher", "Com", strText.GetString(), Global::g_szConfig);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (m_SerialUSB.IsOpen())
|
|
|
+ m_SerialUSB.Close();
|
|
|
+
|
|
|
+ // 重转Checkbox;
|
|
|
+ m_bSwitcherCheckA = false;
|
|
|
+ m_bSwitcherCheckB = false;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void CMainFrame::OnUpdateSwitcherCheckbox(CCmdUI* pCmdUI)
|
|
|
{
|
|
|
- pCmdUI->SetCheck(m_SerialUSB.IsOpen());
|
|
|
+ pCmdUI->SetCheck(m_SerialUSB.IsOpen());
|
|
|
}
|
|
|
|
|
|
void CMainFrame::OnSwitcherCheckboxA()
|
|
|
{
|
|
|
- CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
- ASSERT_VALID(pRibbon);
|
|
|
- CMFCRibbonCheckBox* pCheckbox = DYNAMIC_DOWNCAST(CMFCRibbonCheckBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_CHECKBOXA));
|
|
|
- m_bSwitcherCheckA = !(m_bSwitcherCheckB = pCheckbox->IsChecked());
|
|
|
-
|
|
|
- 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"), m_bSwitcherCheckA ? '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");
|
|
|
- }
|
|
|
- }
|
|
|
+ CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
+ ASSERT_VALID(pRibbon);
|
|
|
+ CMFCRibbonCheckBox* pCheckbox = DYNAMIC_DOWNCAST(CMFCRibbonCheckBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_CHECKBOXA));
|
|
|
+ m_bSwitcherCheckA = !(m_bSwitcherCheckB = pCheckbox->IsChecked());
|
|
|
+
|
|
|
+ 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"), m_bSwitcherCheckA ? '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::OnUpdateSwitcherCheckboxA(CCmdUI* pCmdUI)
|
|
|
{
|
|
|
- pCmdUI->Enable(m_SerialUSB.IsOpen());
|
|
|
- pCmdUI->SetCheck(m_bSwitcherCheckA);
|
|
|
+ pCmdUI->Enable(m_SerialUSB.IsOpen());
|
|
|
+ pCmdUI->SetCheck(m_bSwitcherCheckA);
|
|
|
}
|
|
|
|
|
|
void CMainFrame::OnSwitcherCheckboxB()
|
|
|
{
|
|
|
- CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
- ASSERT_VALID(pRibbon);
|
|
|
- CMFCRibbonCheckBox* pCheckbox = DYNAMIC_DOWNCAST(CMFCRibbonCheckBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_CHECKBOXB));
|
|
|
- m_bSwitcherCheckB = !(m_bSwitcherCheckA = pCheckbox->IsChecked());
|
|
|
-
|
|
|
- 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"), m_bSwitcherCheckA ? '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");
|
|
|
- }
|
|
|
- }
|
|
|
+ CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
+ ASSERT_VALID(pRibbon);
|
|
|
+ CMFCRibbonCheckBox* pCheckbox = DYNAMIC_DOWNCAST(CMFCRibbonCheckBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_CHECKBOXB));
|
|
|
+ m_bSwitcherCheckB = !(m_bSwitcherCheckA = pCheckbox->IsChecked());
|
|
|
+
|
|
|
+ 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"), m_bSwitcherCheckA ? '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::OnUpdateSwitcherCheckboxB(CCmdUI* pCmdUI)
|
|
|
{
|
|
|
- pCmdUI->Enable(m_SerialUSB.IsOpen());
|
|
|
- pCmdUI->SetCheck(m_bSwitcherCheckB);
|
|
|
+ pCmdUI->Enable(m_SerialUSB.IsOpen());
|
|
|
+ pCmdUI->SetCheck(m_bSwitcherCheckB);
|
|
|
}
|
|
|
|
|
|
void CMainFrame::OnCameraFlush()
|
|
|
{
|
|
|
- CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
- ASSERT_VALID(pRibbon);
|
|
|
- CMFCRibbonComboBox* pCameraCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_CAMERA_COMBOBOX));
|
|
|
- std::vector<TString> vtDevices;
|
|
|
- EnumDevices(vtDevices);
|
|
|
- int nCurSel = pCameraCombo->GetCurSel();
|
|
|
- if ( nCurSel != -1 )
|
|
|
- {
|
|
|
- bool bDel = true;
|
|
|
- TString str = pCameraCombo->GetItem(pCameraCombo->GetCurSel());
|
|
|
- for ( std::vector<TString>::iterator it = vtDevices.begin(); it != vtDevices.end(); it++ )
|
|
|
- {
|
|
|
- if ( _tcscmp(str.c_str(), it->c_str()) == 0 )
|
|
|
- {
|
|
|
- bDel = false;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if ( bDel && m_pChildFrame )
|
|
|
- {
|
|
|
- CFieldTestToolView *pView = (CFieldTestToolView*)m_pChildFrame->GetActiveView();
|
|
|
- if ( pView->m_pCamera )
|
|
|
- delete pView->m_pCamera;
|
|
|
- pView->m_pCamera = NULL;
|
|
|
- pView->CloseWindow();
|
|
|
- pView->DestroyWindow();
|
|
|
-
|
|
|
- m_pChildFrame->CloseWindow();
|
|
|
- m_pChildFrame = NULL;
|
|
|
-
|
|
|
- // 设备移除后,设置空;
|
|
|
- pCameraCombo->DeleteItem(nCurSel);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- pCameraCombo->RemoveAllItems();
|
|
|
- for (std::vector<TString>::iterator it = vtDevices.begin(); it != vtDevices.end(); it++)
|
|
|
- {
|
|
|
- pCameraCombo->AddItem(it->c_str());
|
|
|
- }
|
|
|
+ CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
+ ASSERT_VALID(pRibbon);
|
|
|
+ CMFCRibbonComboBox* pCameraCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_CAMERA_COMBOBOX));
|
|
|
+ std::vector<TString> vtDevices;
|
|
|
+ EnumDevices(vtDevices);
|
|
|
+ int nCurSel = pCameraCombo->GetCurSel();
|
|
|
+ if (nCurSel != -1)
|
|
|
+ {
|
|
|
+ bool bDel = true;
|
|
|
+ TString str = pCameraCombo->GetItem(pCameraCombo->GetCurSel());
|
|
|
+ for (std::vector<TString>::iterator it = vtDevices.begin(); it != vtDevices.end(); it++)
|
|
|
+ {
|
|
|
+ if (_tcscmp(str.c_str(), it->c_str()) == 0)
|
|
|
+ {
|
|
|
+ bDel = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (bDel && m_pChildFrame)
|
|
|
+ {
|
|
|
+ CFieldTestToolView* pView = (CFieldTestToolView*)m_pChildFrame->GetActiveView();
|
|
|
+ if (pView->m_pCamera)
|
|
|
+ delete pView->m_pCamera;
|
|
|
+ pView->m_pCamera = NULL;
|
|
|
+ pView->CloseWindow();
|
|
|
+ pView->DestroyWindow();
|
|
|
+
|
|
|
+ m_pChildFrame->CloseWindow();
|
|
|
+ m_pChildFrame = NULL;
|
|
|
+
|
|
|
+ // 设备移除后,设置空;
|
|
|
+ pCameraCombo->DeleteItem(nCurSel);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ pCameraCombo->RemoveAllItems();
|
|
|
+ for (std::vector<TString>::iterator it = vtDevices.begin(); it != vtDevices.end(); it++)
|
|
|
+ {
|
|
|
+ pCameraCombo->AddItem(it->c_str());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void CMainFrame::OnUpdateCameraFlush(CCmdUI* pCmdUI)
|
|
|
{
|
|
|
- //pCmdUI->Enable();
|
|
|
+ //pCmdUI->Enable();
|
|
|
}
|
|
|
|
|
|
bool CMainFrame::RegisterDeviceChange()
|
|
|
{
|
|
|
- // HID设备的GUID,可在设备管理器中查询,经查结果如下:
|
|
|
- // {745a17a0-74d3-11d0-b6fe-00a0c90f57da}
|
|
|
- // 注:使用真实的HID的GUID,反正检测不出来,如果是其它的GUID,所有USB事件都能检测出
|
|
|
- const GUID GUID_DEVINTERFACE_LIST[] = {
|
|
|
- { 0xA5DCBF10, 0x6530, 0x11D2,{ 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED } }, // USB设备
|
|
|
- { 0x53f56307, 0xb6bf, 0x11d0,{ 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b } }, // 磁盘(U盘)
|
|
|
- { 0x4D1E55B2, 0xF16F, 0x11CF,{ 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30 } }, // HID
|
|
|
- { 0x745A17A0, 0x74D3, 0x11D0,{ 0xB6, 0xFE, 0x00, 0xA0, 0xC9, 0x0F, 0x57, 0xDA } }, // 另一个HID
|
|
|
- { 0xad498944, 0x762f, 0x11d0,{ 0x8d, 0xcb, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c } }, // 网卡;
|
|
|
- { 0x4d36e96c, 0xe325, 0x11ce,{ 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 } }
|
|
|
- };
|
|
|
+ // HID设备的GUID,可在设备管理器中查询,经查结果如下:
|
|
|
+ // {745a17a0-74d3-11d0-b6fe-00a0c90f57da}
|
|
|
+ // 注:使用真实的HID的GUID,反正检测不出来,如果是其它的GUID,所有USB事件都能检测出
|
|
|
+ // 实际上:目前测试精灵等通过USB转串口的设备都是USB设备,而USB摄像头也是;
|
|
|
+ const GUID GUID_DEVINTERFACE_LIST[] = {
|
|
|
+ { 0xA5DCBF10, 0x6530, 0x11D2,{ 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED } }, // USB设备
|
|
|
+ { 0x53f56307, 0xb6bf, 0x11d0,{ 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b } }, // 磁盘(U盘)
|
|
|
+ { 0x4D1E55B2, 0xF16F, 0x11CF,{ 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30 } }, // HID
|
|
|
+ { 0x745A17A0, 0x74D3, 0x11D0,{ 0xB6, 0xFE, 0x00, 0xA0, 0xC9, 0x0F, 0x57, 0xDA } }, // 另一个HID
|
|
|
+ { 0xad498944, 0x762f, 0x11d0,{ 0x8d, 0xcb, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c } }, // 网卡;
|
|
|
+ { 0x4d36e96c, 0xe325, 0x11ce,{ 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 } }
|
|
|
+ };
|
|
|
#if 0
|
|
|
- // 注册HID事件
|
|
|
- DEV_BROADCAST_DEVICEINTERFACE DevBroadcastDeviceInterface;
|
|
|
- memset(&DevBroadcastDeviceInterface, 0, sizeof(DEV_BROADCAST_DEVICEINTERFACE));
|
|
|
- DevBroadcastDeviceInterface.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
|
|
|
- DevBroadcastDeviceInterface.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
|
|
|
- // 可以循环注册所有列出的GUID,此处只使用一种
|
|
|
- DevBroadcastDeviceInterface.dbcc_classguid = GUID_DEVINTERFACE_LIST[5];
|
|
|
- HDEVNOTIFY hDevNotify = RegisterDeviceNotification(this->GetSafeHwnd(), &DevBroadcastDeviceInterface, DEVICE_NOTIFY_WINDOW_HANDLE);
|
|
|
-
|
|
|
- return hDevNotify ? true : false;
|
|
|
+ // 注册HID事件
|
|
|
+ DEV_BROADCAST_DEVICEINTERFACE DevBroadcastDeviceInterface;
|
|
|
+ memset(&DevBroadcastDeviceInterface, 0, sizeof(DEV_BROADCAST_DEVICEINTERFACE));
|
|
|
+ DevBroadcastDeviceInterface.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
|
|
|
+ DevBroadcastDeviceInterface.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
|
|
|
+ // 可以循环注册所有列出的GUID,此处只使用一种
|
|
|
+ DevBroadcastDeviceInterface.dbcc_classguid = GUID_DEVINTERFACE_LIST[5];
|
|
|
+ HDEVNOTIFY hDevNotify = RegisterDeviceNotification(this->GetSafeHwnd(), &DevBroadcastDeviceInterface, DEVICE_NOTIFY_WINDOW_HANDLE);
|
|
|
+
|
|
|
+ return hDevNotify ? true : false;
|
|
|
#else
|
|
|
- HDEVNOTIFY hDevNotify;
|
|
|
- for ( int i = 0; i < 6; i++ )
|
|
|
- {
|
|
|
- // 注册HID事件
|
|
|
- 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[i];
|
|
|
- HDEVNOTIFY hDevNotify = RegisterDeviceNotification(this->GetSafeHwnd(), &DevBroadcastDeviceInterface, DEVICE_NOTIFY_WINDOW_HANDLE);
|
|
|
- if ( !hDevNotify )
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- return true;
|
|
|
+ HDEVNOTIFY hDevNotify;
|
|
|
+ for (int i = 0; i < 6; i++)
|
|
|
+ {
|
|
|
+ // 注册HID事件
|
|
|
+ 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[i];
|
|
|
+ HDEVNOTIFY hDevNotify = RegisterDeviceNotification(this->GetSafeHwnd(), &DevBroadcastDeviceInterface, DEVICE_NOTIFY_WINDOW_HANDLE);
|
|
|
+ if (!hDevNotify)
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
BOOL CMainFrame::OnDeviceChange(UINT nEventType, DWORD_PTR dwData)
|
|
|
{
|
|
|
- if ( dwData == 0 )
|
|
|
- return FALSE;
|
|
|
-
|
|
|
- CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
- ASSERT_VALID(pRibbon);
|
|
|
-
|
|
|
- CMFCRibbonComboBox* pInfradeCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_INFRAED_COMBOBOX));
|
|
|
- CMFCRibbonComboBox* pSwitcherCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_COMBOBOX));
|
|
|
- ASSERT_VALID(pInfradeCombo);
|
|
|
- ASSERT_VALID(pSwitcherCombo);
|
|
|
-
|
|
|
- DEV_BROADCAST_DEVICEINTERFACE* pdbd = (DEV_BROADCAST_DEVICEINTERFACE*)dwData;
|
|
|
- if ( pdbd->dbcc_devicetype == DBT_DEVTYP_PORT )
|
|
|
- {
|
|
|
- DEV_BROADCAST_PORT *pbdp = (DEV_BROADCAST_PORT*)dwData;
|
|
|
- if (_tcsstr(pbdp->dbcp_name, _T("COM")))
|
|
|
- {
|
|
|
- // 测试精灵;
|
|
|
- {
|
|
|
- // 查找是否有添加过该项;
|
|
|
- int nIndex = pInfradeCombo->FindItem(pbdp->dbcp_name);
|
|
|
- // 删除和新增前,先获取当前选中的项;
|
|
|
- CString strCurCOM = _T("");
|
|
|
- int nCurIndex = pInfradeCombo->GetCurSel();
|
|
|
- if ( nCurIndex != CB_ERR )
|
|
|
- strCurCOM = pInfradeCombo->GetItem(nCurIndex);
|
|
|
-
|
|
|
- if ( nEventType == DBT_DEVICEREMOVECOMPLETE )
|
|
|
- {// 串口拨掉;
|
|
|
- TRACE(_T("串口拨掉\n"));
|
|
|
- if ( nIndex != CB_ERR )
|
|
|
- {
|
|
|
- pInfradeCombo->DeleteItem(nIndex);
|
|
|
- // 删除后, 由于索引变化了,要重新设置选中项;
|
|
|
- if ( nCurIndex != CB_ERR )
|
|
|
- pInfradeCombo->SelectItem(strCurCOM);
|
|
|
- }
|
|
|
- }
|
|
|
- else if ( nEventType == DBT_DEVICEARRIVAL )
|
|
|
- {// 串口插入;
|
|
|
- TRACE(_T("串口插入\n"));
|
|
|
- if ( nIndex == CB_ERR )
|
|
|
- {
|
|
|
- pInfradeCombo->AddItem(pbdp->dbcp_name);
|
|
|
- // 新增后,由于索引变化了,要重新设置选中项;
|
|
|
- if ( nCurIndex != CB_ERR )
|
|
|
- pInfradeCombo->SelectItem(strCurCOM);
|
|
|
- else
|
|
|
- {
|
|
|
- IsTestWizardPort(pbdp->dbcp_name);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // USB切换器;
|
|
|
- {
|
|
|
- // 查找是否有添加过该项;
|
|
|
- int nIndex = pSwitcherCombo->FindItem(pbdp->dbcp_name);
|
|
|
- // 删除和新增前,先获取当前选中的项;
|
|
|
- CString strCurCOM = _T("");
|
|
|
- int nCurIndex = pSwitcherCombo->GetCurSel();
|
|
|
- if ( nCurIndex != CB_ERR )
|
|
|
- strCurCOM = pSwitcherCombo->GetItem(nCurIndex);
|
|
|
-
|
|
|
- if ( nEventType == DBT_DEVICEREMOVECOMPLETE )
|
|
|
- {// 串口拨掉;
|
|
|
- TRACE(_T("串口拨掉\n"));
|
|
|
- if ( nIndex != CB_ERR )
|
|
|
- {
|
|
|
- pSwitcherCombo->DeleteItem(nIndex);
|
|
|
- // 删除后, 由于索引变化了,要重新设置选中项;
|
|
|
- if ( nCurIndex != CB_ERR )
|
|
|
- pSwitcherCombo->SelectItem(strCurCOM);
|
|
|
- }
|
|
|
- }
|
|
|
- else if ( nEventType == DBT_DEVICEARRIVAL )
|
|
|
- {// 串口插入;
|
|
|
- TRACE(_T("串口插入\n"));
|
|
|
- if ( nIndex == CB_ERR )
|
|
|
- {
|
|
|
- pSwitcherCombo->AddItem(pbdp->dbcp_name);
|
|
|
- // 新增后,由于索引变化了,要重新设置选中项;
|
|
|
- if ( nCurIndex != CB_ERR )
|
|
|
- pSwitcherCombo->SelectItem(strCurCOM);
|
|
|
- else
|
|
|
- {
|
|
|
- IsUSBSwitchPort(pbdp->dbcp_name);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // USB等接口设备;
|
|
|
- if ( pdbd->dbcc_devicetype == DBT_DEVTYP_DEVICEINTERFACE )
|
|
|
- {
|
|
|
- DEV_BROADCAST_HDR* phdr = (DEV_BROADCAST_HDR*)dwData;
|
|
|
- CMFCRibbonComboBox* pCameraCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_CAMERA_COMBOBOX));
|
|
|
- std::vector<TString> vtDevices;
|
|
|
- if ( nEventType == DBT_DEVICEREMOVECOMPLETE || nEventType == DBT_DEVICEARRIVAL)
|
|
|
- {
|
|
|
- OutputDebugString(_T("设备有变化===============\n"));
|
|
|
- // 新增时,需要等待系统刷新后才能遍历设备(有时仍不灵,添加刷新按钮处理);
|
|
|
- if ( nEventType == DBT_DEVICEARRIVAL )
|
|
|
- Sleep(1000);
|
|
|
-
|
|
|
- EnumDevices(vtDevices);
|
|
|
- int nCurSel = pCameraCombo->GetCurSel();
|
|
|
- if ( nCurSel != -1 )
|
|
|
- {
|
|
|
- bool bDel = true;
|
|
|
- TString str = pCameraCombo->GetItem(pCameraCombo->GetCurSel());
|
|
|
- for ( std::vector<TString>::iterator it = vtDevices.begin(); it != vtDevices.end(); it++ )
|
|
|
- {
|
|
|
- if ( _tcscmp(str.c_str(), it->c_str()) == 0 )
|
|
|
- {
|
|
|
- bDel = false;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if ( bDel && m_pChildFrame )
|
|
|
- {
|
|
|
- CFieldTestToolView *pView = (CFieldTestToolView*)m_pChildFrame->GetActiveView();
|
|
|
- if ( pView->m_pCamera )
|
|
|
- delete pView->m_pCamera;
|
|
|
- pView->m_pCamera = NULL;
|
|
|
- pView->DestroyWindow();
|
|
|
-
|
|
|
- m_pChildFrame->DestroyWindow();
|
|
|
- m_pChildFrame = NULL;
|
|
|
-
|
|
|
- // 设备移除后,设置空;
|
|
|
- pCameraCombo->DeleteItem(nCurSel);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- pCameraCombo->RemoveAllItems();
|
|
|
- for (std::vector<TString>::iterator it = vtDevices.begin(); it != vtDevices.end(); it++)
|
|
|
- {
|
|
|
- pCameraCombo->AddItem(it->c_str());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- TRACE(_T("OnDeviceChange\n"));
|
|
|
-
|
|
|
- return TRUE;
|
|
|
+ if (dwData == 0)
|
|
|
+ return FALSE;
|
|
|
+
|
|
|
+ CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
+ ASSERT_VALID(pRibbon);
|
|
|
+
|
|
|
+ CMFCRibbonComboBox* pInfradeCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_INFRAED_COMBOBOX));
|
|
|
+ CMFCRibbonComboBox* pSwitcherCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_COMBOBOX));
|
|
|
+ ASSERT_VALID(pInfradeCombo);
|
|
|
+ ASSERT_VALID(pSwitcherCombo);
|
|
|
+
|
|
|
+ DEV_BROADCAST_DEVICEINTERFACE* pdbd = (DEV_BROADCAST_DEVICEINTERFACE*)dwData;
|
|
|
+ if (pdbd->dbcc_devicetype == DBT_DEVTYP_PORT)
|
|
|
+ {
|
|
|
+ DEV_BROADCAST_PORT* pbdp = (DEV_BROADCAST_PORT*)dwData;
|
|
|
+ if (_tcsstr(pbdp->dbcp_name, _T("COM")))
|
|
|
+ {
|
|
|
+ // 红外遥控头;
|
|
|
+ {
|
|
|
+ // 查找是否有添加过该项;
|
|
|
+ int nIndex = pInfradeCombo->FindItem(pbdp->dbcp_name);
|
|
|
+ // 删除和新增前,先获取当前选中的项;
|
|
|
+ CString strCurCOM = _T("");
|
|
|
+ int nCurIndex = pInfradeCombo->GetCurSel();
|
|
|
+ if (nCurIndex != CB_ERR)
|
|
|
+ strCurCOM = pInfradeCombo->GetItem(nCurIndex);
|
|
|
+
|
|
|
+ if (nEventType == DBT_DEVICEREMOVECOMPLETE)
|
|
|
+ {// 串口拨掉;
|
|
|
+ TRACE(_T("串口拨掉\n"));
|
|
|
+ if (nIndex != CB_ERR)
|
|
|
+ {
|
|
|
+ pInfradeCombo->DeleteItem(nIndex);
|
|
|
+ // 删除后, 由于索引变化了,要重新设置选中项;
|
|
|
+ if (nCurIndex != CB_ERR)
|
|
|
+ pInfradeCombo->SelectItem(strCurCOM);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (nEventType == DBT_DEVICEARRIVAL)
|
|
|
+ {// 串口插入;
|
|
|
+ TRACE(_T("串口插入\n"));
|
|
|
+ if (nIndex == CB_ERR)
|
|
|
+ {
|
|
|
+ pInfradeCombo->AddItem(pbdp->dbcp_name);
|
|
|
+ // 新增后,由于索引变化了,要重新设置选中项;
|
|
|
+ if (nCurIndex != CB_ERR)
|
|
|
+ pInfradeCombo->SelectItem(strCurCOM);
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (Global::g_nVersion == 1)
|
|
|
+ IsTestWizardPort(pbdp->dbcp_name);
|
|
|
+ else
|
|
|
+ OutputDebugString(_T("don't support"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // USB切换器;
|
|
|
+ {
|
|
|
+ // 查找是否有添加过该项;
|
|
|
+ int nIndex = pSwitcherCombo->FindItem(pbdp->dbcp_name);
|
|
|
+ // 删除和新增前,先获取当前选中的项;
|
|
|
+ CString strCurCOM = _T("");
|
|
|
+ int nCurIndex = pSwitcherCombo->GetCurSel();
|
|
|
+ if (nCurIndex != CB_ERR)
|
|
|
+ strCurCOM = pSwitcherCombo->GetItem(nCurIndex);
|
|
|
+
|
|
|
+ if (nEventType == DBT_DEVICEREMOVECOMPLETE)
|
|
|
+ {// 串口拨掉;
|
|
|
+ TRACE(_T("串口拨掉\n"));
|
|
|
+ if (nIndex != CB_ERR)
|
|
|
+ {
|
|
|
+ pSwitcherCombo->DeleteItem(nIndex);
|
|
|
+ // 删除后, 由于索引变化了,要重新设置选中项;
|
|
|
+ if (nCurIndex != CB_ERR)
|
|
|
+ pSwitcherCombo->SelectItem(strCurCOM);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (nEventType == DBT_DEVICEARRIVAL)
|
|
|
+ {// 串口插入;
|
|
|
+ TRACE(_T("串口插入\n"));
|
|
|
+ if (nIndex == CB_ERR)
|
|
|
+ {
|
|
|
+ pSwitcherCombo->AddItem(pbdp->dbcp_name);
|
|
|
+ // 新增后,由于索引变化了,要重新设置选中项;
|
|
|
+ if (nCurIndex != CB_ERR)
|
|
|
+ pSwitcherCombo->SelectItem(strCurCOM);
|
|
|
+ else
|
|
|
+ {
|
|
|
+ IsUSBSwitchPort(pbdp->dbcp_name);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // USB等接口设备;
|
|
|
+ if (pdbd->dbcc_devicetype == DBT_DEVTYP_DEVICEINTERFACE)
|
|
|
+ {
|
|
|
+ DEV_BROADCAST_HDR* phdr = (DEV_BROADCAST_HDR*)dwData;
|
|
|
+ CMFCRibbonComboBox* pCameraCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_CAMERA_COMBOBOX));
|
|
|
+ std::vector<TString> vtDevices;
|
|
|
+ if (nEventType == DBT_DEVICEREMOVECOMPLETE || nEventType == DBT_DEVICEARRIVAL)
|
|
|
+ {
|
|
|
+ OutputDebugString(_T("设备有变化===============\n"));
|
|
|
+ // 新增时,需要等待系统刷新后才能遍历设备(有时仍不灵,添加刷新按钮处理);
|
|
|
+ if (nEventType == DBT_DEVICEARRIVAL)
|
|
|
+ Sleep(1000);
|
|
|
+
|
|
|
+ EnumDevices(vtDevices);
|
|
|
+ int nCurSel = pCameraCombo->GetCurSel();
|
|
|
+ if (nCurSel != -1)
|
|
|
+ {
|
|
|
+ bool bDel = true;
|
|
|
+ TString str = pCameraCombo->GetItem(pCameraCombo->GetCurSel());
|
|
|
+ for (std::vector<TString>::iterator it = vtDevices.begin(); it != vtDevices.end(); it++)
|
|
|
+ {
|
|
|
+ if (_tcscmp(str.c_str(), it->c_str()) == 0)
|
|
|
+ {
|
|
|
+ bDel = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (bDel && m_pChildFrame)
|
|
|
+ {
|
|
|
+ CFieldTestToolView* pView = (CFieldTestToolView*)m_pChildFrame->GetActiveView();
|
|
|
+ if (pView->m_pCamera)
|
|
|
+ delete pView->m_pCamera;
|
|
|
+ pView->m_pCamera = NULL;
|
|
|
+ pView->DestroyWindow();
|
|
|
+
|
|
|
+ m_pChildFrame->DestroyWindow();
|
|
|
+ m_pChildFrame = NULL;
|
|
|
+
|
|
|
+ // 设备移除后,设置空;
|
|
|
+ pCameraCombo->DeleteItem(nCurSel);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ pCameraCombo->RemoveAllItems();
|
|
|
+ for (std::vector<TString>::iterator it = vtDevices.begin(); it != vtDevices.end(); it++)
|
|
|
+ {
|
|
|
+ pCameraCombo->AddItem(it->c_str());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ TRACE(_T("OnDeviceChange\n"));
|
|
|
+
|
|
|
+ return TRUE;
|
|
|
}
|
|
|
|
|
|
void CMainFrame::InitSerialCombobox()
|
|
|
{
|
|
|
- CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
- ASSERT_VALID(pRibbon);
|
|
|
- CMFCRibbonComboBox* pInfradeCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_INFRAED_COMBOBOX));
|
|
|
- CMFCRibbonComboBox* pSwitcherCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_COMBOBOX));
|
|
|
-
|
|
|
- ASSERT_VALID(pInfradeCombo);
|
|
|
- ASSERT_VALID(pSwitcherCombo);
|
|
|
-
|
|
|
- pInfradeCombo->RemoveAllItems();
|
|
|
- pSwitcherCombo->RemoveAllItems();
|
|
|
- for (std::vector<TString>::iterator it = m_vtPorts.begin(); it != m_vtPorts.end(); it++)
|
|
|
- {
|
|
|
- pInfradeCombo->AddItem(it->c_str());
|
|
|
- pSwitcherCombo->AddItem(it->c_str());
|
|
|
- }
|
|
|
+ CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
+ ASSERT_VALID(pRibbon);
|
|
|
+ CMFCRibbonComboBox* pInfradeCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_INFRAED_COMBOBOX));
|
|
|
+ CMFCRibbonComboBox* pSwitcherCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_COMBOBOX));
|
|
|
+
|
|
|
+ ASSERT_VALID(pInfradeCombo);
|
|
|
+ ASSERT_VALID(pSwitcherCombo);
|
|
|
+
|
|
|
+ pInfradeCombo->RemoveAllItems();
|
|
|
+ pSwitcherCombo->RemoveAllItems();
|
|
|
+ for (std::vector<TString>::iterator it = m_vtPorts.begin(); it != m_vtPorts.end(); it++)
|
|
|
+ {
|
|
|
+ pInfradeCombo->AddItem(it->c_str());
|
|
|
+ pSwitcherCombo->AddItem(it->c_str());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
bool CMainFrame::IsTestWizardPort(CString strCOMPort)
|
|
|
{
|
|
|
- CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
- ASSERT_VALID(pRibbon);
|
|
|
- CMFCRibbonComboBox* pInfradeCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_INFRAED_COMBOBOX));
|
|
|
- CMFCRibbonCheckBox* pInfradeCheckbox = DYNAMIC_DOWNCAST(CMFCRibbonCheckBox, pRibbon->FindByID(ID_RIBBON_INFRAED_CHECKBOX));
|
|
|
- ASSERT_VALID(pInfradeCombo);
|
|
|
- ASSERT_VALID(pInfradeCheckbox);
|
|
|
-
|
|
|
- CString strText = _T("");
|
|
|
- if ( pInfradeCheckbox->IsChecked() )
|
|
|
- {// 串口已打开;
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- /*
|
|
|
- 发送:
|
|
|
- *about
|
|
|
- 返回:
|
|
|
- *about
|
|
|
-
|
|
|
- Product name: Test Wizard
|
|
|
- Firmware version: v3.6.210811
|
|
|
- SN: 30FF6B064243393036140457
|
|
|
- Active state: Activated
|
|
|
-
|
|
|
- Developer: sun shengpeng
|
|
|
- Email: sunsp@tcl.com
|
|
|
- */
|
|
|
- m_SerialTW.SetIOMode();
|
|
|
- if ( m_SerialTW.Open(_tstol(strCOMPort.Mid(3).GetString()), 115200) )
|
|
|
- {
|
|
|
- // 快速响应读写,不需要设置过长的超时;
|
|
|
- m_SerialTW.SetTimeouts(0,1,20,1,150);
|
|
|
- // 封装发送包;
|
|
|
- byte szSendData[MAX_PATH] = "*about\r";
|
|
|
- if ( m_SerialTW.WriteSync(szSendData, strlen((const char*)szSendData)) )
|
|
|
- {
|
|
|
- memset(szSendData, 0, MAX_PATH);
|
|
|
- m_SerialTW.ReadSync(szSendData, MAX_PATH);
|
|
|
- if ( strstr((char*)szSendData, "Product name: Test Wizard\r") )
|
|
|
- {
|
|
|
- // 设置当前串口为选中状态;
|
|
|
- pInfradeCombo->SelectItem(strCOMPort);
|
|
|
- Global::g_Config.twPort = strCOMPort;
|
|
|
- WritePrivateProfileString(_T("TestWizard"), _T("Com"), strCOMPort.GetString(), Global::g_szConfig);
|
|
|
- // SetDlgItemText(BTN_OPEN_COM, _T("Close"));
|
|
|
- // m_cbCOM.EnableWindow(FALSE);
|
|
|
- // 关闭后,重新打开在设置超时值;
|
|
|
- m_SerialTW.Close();
|
|
|
- return true;
|
|
|
- }
|
|
|
- TRACE("发送单信号成功\n");
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- TRACE("发送单信号失败\n");
|
|
|
- }
|
|
|
-
|
|
|
- m_SerialTW.Close();
|
|
|
- }
|
|
|
-
|
|
|
- return false;
|
|
|
+ CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
+ ASSERT_VALID(pRibbon);
|
|
|
+ CMFCRibbonComboBox* pInfradeCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_INFRAED_COMBOBOX));
|
|
|
+ CMFCRibbonCheckBox* pInfradeCheckbox = DYNAMIC_DOWNCAST(CMFCRibbonCheckBox, pRibbon->FindByID(ID_RIBBON_INFRAED_CHECKBOX));
|
|
|
+ ASSERT_VALID(pInfradeCombo);
|
|
|
+ ASSERT_VALID(pInfradeCheckbox);
|
|
|
+
|
|
|
+ CString strText = _T("");
|
|
|
+ if (pInfradeCheckbox->IsChecked())
|
|
|
+ {// 串口已打开;
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ /*
|
|
|
+ 发送:
|
|
|
+ *about
|
|
|
+ 返回:
|
|
|
+ *about
|
|
|
+
|
|
|
+ Product name: Test Wizard
|
|
|
+ Firmware version: v3.6.210811
|
|
|
+ SN: 30FF6B064243393036140457
|
|
|
+ Active state: Activated
|
|
|
+
|
|
|
+ Developer: sun shengpeng
|
|
|
+ Email: sunsp@tcl.com
|
|
|
+ */
|
|
|
+ m_SerialTW.SetIOMode();
|
|
|
+ if (m_SerialTW.Open(_tstol(strCOMPort.Mid(3).GetString()), 115200))
|
|
|
+ {
|
|
|
+ // 快速响应读写,不需要设置过长的超时;
|
|
|
+ m_SerialTW.SetTimeouts(0, 1, 20, 1, 150);
|
|
|
+ // 封装发送包;
|
|
|
+ byte szSendData[MAX_PATH] = "*about\r";
|
|
|
+ if (m_SerialTW.WriteSync(szSendData, strlen((const char*)szSendData)))
|
|
|
+ {
|
|
|
+ memset(szSendData, 0, MAX_PATH);
|
|
|
+ m_SerialTW.ReadSync(szSendData, MAX_PATH);
|
|
|
+ if (strstr((char*)szSendData, "Product name: Test Wizard\r"))
|
|
|
+ {
|
|
|
+ // 设置当前串口为选中状态;
|
|
|
+ pInfradeCombo->SelectItem(strCOMPort);
|
|
|
+ Global::g_Config.twPort = strCOMPort;
|
|
|
+ WritePrivateProfileString(_T("TestWizard"), _T("Com"), strCOMPort.GetString(), Global::g_szConfig);
|
|
|
+ // SetDlgItemText(BTN_OPEN_COM, _T("Close"));
|
|
|
+ // m_cbCOM.EnableWindow(FALSE);
|
|
|
+ // 关闭后,重新打开在设置超时值;
|
|
|
+ m_SerialTW.Close();
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ TRACE("发送单信号成功\n");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ TRACE("发送单信号失败\n");
|
|
|
+ }
|
|
|
+
|
|
|
+ m_SerialTW.Close();
|
|
|
+ }
|
|
|
+
|
|
|
+ return false;
|
|
|
}
|
|
|
|
|
|
bool CMainFrame::IsUSBSwitchPort(CString strCOMPort)
|
|
|
{
|
|
|
- CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
- ASSERT_VALID(pRibbon);
|
|
|
- CMFCRibbonComboBox* pSwitcherCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_COMBOBOX));
|
|
|
- CMFCRibbonCheckBox* pSwitcherCheckbox = DYNAMIC_DOWNCAST(CMFCRibbonCheckBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_CHECKBOX));
|
|
|
- ASSERT_VALID(pSwitcherCombo);
|
|
|
- ASSERT_VALID(pSwitcherCheckbox);
|
|
|
-
|
|
|
- CString strText = _T("");
|
|
|
- if ( pSwitcherCheckbox->IsChecked() )
|
|
|
- {// 串口已打开;
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- /*
|
|
|
- 发送:
|
|
|
- *SET PORT A\r
|
|
|
- 返回:
|
|
|
- set PORT A\r\n
|
|
|
- */
|
|
|
- m_SerialUSB.SetIOMode();
|
|
|
- if ( m_SerialUSB.Open(_tstol(strCOMPort.Mid(3).GetString()), 115200) )
|
|
|
- {
|
|
|
- // 快速响应读写,不需要设置过长的超时;
|
|
|
- m_SerialUSB.SetTimeouts(0,1,20,1,150);
|
|
|
- // 封装发送包;
|
|
|
- byte szSendData[MAX_PATH] = "*SET PORT A\r";
|
|
|
- if ( m_SerialUSB.WriteSync(szSendData, strlen((const char*)szSendData)) )
|
|
|
- {
|
|
|
- memset(szSendData, 0, MAX_PATH);
|
|
|
- m_SerialUSB.ReadSync(szSendData, MAX_PATH);
|
|
|
- if ( strcmp((char*)szSendData, "set PORT A\r\n") == 0 )
|
|
|
- {
|
|
|
- // 设置当前串口为选中状态;
|
|
|
- pSwitcherCombo->SelectItem(strCOMPort);
|
|
|
- Global::g_Config.switchPort = strCOMPort;
|
|
|
- WritePrivateProfileString(_T("Switcher"), _T("Com"), strCOMPort.GetString(), Global::g_szConfig);
|
|
|
- // SetDlgItemText(BTN_OPEN_COM, _T("Close"));
|
|
|
- // m_cbCOM.EnableWindow(FALSE);
|
|
|
- // 关闭后,重新打开在设置超时值;
|
|
|
- m_SerialUSB.Close();
|
|
|
- return true;
|
|
|
- }
|
|
|
- TRACE("发送单信号成功\n");
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- TRACE("发送单信号失败\n");
|
|
|
- }
|
|
|
-
|
|
|
- m_SerialUSB.Close();
|
|
|
- }
|
|
|
-
|
|
|
- return false;
|
|
|
+ CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
+ ASSERT_VALID(pRibbon);
|
|
|
+ CMFCRibbonComboBox* pSwitcherCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_COMBOBOX));
|
|
|
+ CMFCRibbonCheckBox* pSwitcherCheckbox = DYNAMIC_DOWNCAST(CMFCRibbonCheckBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_CHECKBOX));
|
|
|
+ ASSERT_VALID(pSwitcherCombo);
|
|
|
+ ASSERT_VALID(pSwitcherCheckbox);
|
|
|
+
|
|
|
+ CString strText = _T("");
|
|
|
+ if (pSwitcherCheckbox->IsChecked())
|
|
|
+ {// 串口已打开;
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ /*
|
|
|
+ 发送:
|
|
|
+ *SET PORT A\r
|
|
|
+ 返回:
|
|
|
+ set PORT A\r\n
|
|
|
+ */
|
|
|
+ m_SerialUSB.SetIOMode();
|
|
|
+ if (m_SerialUSB.Open(_tstol(strCOMPort.Mid(3).GetString()), 115200))
|
|
|
+ {
|
|
|
+ // 快速响应读写,不需要设置过长的超时;
|
|
|
+ m_SerialUSB.SetTimeouts(0, 1, 20, 1, 150);
|
|
|
+ // 封装发送包;
|
|
|
+ byte szSendData[MAX_PATH] = "*SET PORT A\r";
|
|
|
+ if (m_SerialUSB.WriteSync(szSendData, strlen((const char*)szSendData)))
|
|
|
+ {
|
|
|
+ memset(szSendData, 0, MAX_PATH);
|
|
|
+ m_SerialUSB.ReadSync(szSendData, MAX_PATH);
|
|
|
+ if (strcmp((char*)szSendData, "set PORT A\r\n") == 0)
|
|
|
+ {
|
|
|
+ // 设置当前串口为选中状态;
|
|
|
+ pSwitcherCombo->SelectItem(strCOMPort);
|
|
|
+ Global::g_Config.switchPort = strCOMPort;
|
|
|
+ WritePrivateProfileString(_T("Switcher"), _T("Com"), strCOMPort.GetString(), Global::g_szConfig);
|
|
|
+ // SetDlgItemText(BTN_OPEN_COM, _T("Close"));
|
|
|
+ // m_cbCOM.EnableWindow(FALSE);
|
|
|
+ // 关闭后,重新打开在设置超时值;
|
|
|
+ m_SerialUSB.Close();
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ TRACE("发送单信号成功\n");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ TRACE("发送单信号失败\n");
|
|
|
+ }
|
|
|
+
|
|
|
+ m_SerialUSB.Close();
|
|
|
+ }
|
|
|
+
|
|
|
+ return false;
|
|
|
}
|
|
|
|
|
|
void CMainFrame::OnTimer(UINT_PTR nIDEvent)
|
|
|
{
|
|
|
- // TODO: 在此添加消息处理程序代码和/或调用默认值
|
|
|
- CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
- ASSERT_VALID(pRibbon);
|
|
|
- CMFCRibbonComboBox* pInfradeCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_INFRAED_COMBOBOX));
|
|
|
- CMFCRibbonComboBox* pSwitcherCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_COMBOBOX));
|
|
|
- ASSERT_VALID(pInfradeCombo);
|
|
|
- ASSERT_VALID(pSwitcherCombo);
|
|
|
-
|
|
|
- if ( nIDEvent == 0 )
|
|
|
- {
|
|
|
- KillTimer(nIDEvent);
|
|
|
- Global::GetSysSerialPort(m_vtPorts);
|
|
|
- InitSerialCombobox();
|
|
|
- if ( Global::g_Config.twPort.size() == 0 || !pInfradeCombo->SelectItem(Global::g_Config.twPort.c_str()) )
|
|
|
- {
|
|
|
- for (std::vector<TString>::iterator it = m_vtPorts.begin(); it != m_vtPorts.end(); it++)
|
|
|
- {
|
|
|
- if ( !m_bFindTestWizardPort )
|
|
|
- {
|
|
|
- m_bFindTestWizardPort = IsTestWizardPort(it->c_str());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if ( !m_bFindTestWizardPort )
|
|
|
- MessageBox(_T("No Test Wizard found"), _T("Prompt"), MB_OK);
|
|
|
- }
|
|
|
-
|
|
|
- if ( Global::g_Config.switchPort.size() == 0 || !pSwitcherCombo->SelectItem(Global::g_Config.switchPort.c_str()) )
|
|
|
- {
|
|
|
- for (std::vector<TString>::iterator it = m_vtPorts.begin(); it != m_vtPorts.end(); it++)
|
|
|
- {
|
|
|
- if ( !m_bFindSwitcherPort )
|
|
|
- {
|
|
|
- m_bFindSwitcherPort = IsUSBSwitchPort(it->c_str());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if ( !m_bFindSwitcherPort )
|
|
|
- MessageBox(_T("No USB Switcher found"), _T("Prompt"), MB_OK);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- CMDIFrameWndEx::OnTimer(nIDEvent);
|
|
|
+ // TODO: 在此添加消息处理程序代码和/或调用默认值
|
|
|
+ CMFCRibbonBar* pRibbon = GetRibbonBar();
|
|
|
+ ASSERT_VALID(pRibbon);
|
|
|
+ CMFCRibbonComboBox* pInfradeCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_INFRAED_COMBOBOX));
|
|
|
+ CMFCRibbonComboBox* pSwitcherCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_COMBOBOX));
|
|
|
+ ASSERT_VALID(pInfradeCombo);
|
|
|
+ ASSERT_VALID(pSwitcherCombo);
|
|
|
+
|
|
|
+ if (nIDEvent == 0)
|
|
|
+ {
|
|
|
+ KillTimer(nIDEvent);
|
|
|
+ Global::GetSysSerialPort(m_vtPorts);
|
|
|
+ InitSerialCombobox();
|
|
|
+ if (Global::g_Config.twPort.size() == 0 || !pInfradeCombo->SelectItem(Global::g_Config.twPort.c_str()))
|
|
|
+ {
|
|
|
+ for (std::vector<TString>::iterator it = m_vtPorts.begin(); it != m_vtPorts.end(); it++)
|
|
|
+ {
|
|
|
+ if (!m_bFindTestWizardPort)
|
|
|
+ {
|
|
|
+ m_bFindTestWizardPort = IsTestWizardPort(it->c_str());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!m_bFindTestWizardPort)
|
|
|
+ MessageBox(_T("No Test Wizard found"), _T("Prompt"), MB_OK);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Global::g_Config.switchPort.size() == 0 || !pSwitcherCombo->SelectItem(Global::g_Config.switchPort.c_str()))
|
|
|
+ {
|
|
|
+ for (std::vector<TString>::iterator it = m_vtPorts.begin(); it != m_vtPorts.end(); it++)
|
|
|
+ {
|
|
|
+ if (!m_bFindSwitcherPort)
|
|
|
+ {
|
|
|
+ m_bFindSwitcherPort = IsUSBSwitchPort(it->c_str());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!m_bFindSwitcherPort)
|
|
|
+ MessageBox(_T("No USB Switcher found"), _T("Prompt"), MB_OK);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ CMDIFrameWndEx::OnTimer(nIDEvent);
|
|
|
}
|
|
|
|
|
|
BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
|
|
|
{
|
|
|
- // TODO: 在此添加专用代码和/或调用基类
|
|
|
- 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("Front window (press F3 to cancel or enable the front window)");
|
|
|
- SetWindowText(strVersionInfo);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- SetWindowPos(&wndNoTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);//取消窗口置顶
|
|
|
- CString strVersionInfo = _T("Cancel the front (press F3 to cancel or enable the front window)");
|
|
|
- SetWindowText(strVersionInfo);
|
|
|
- }
|
|
|
-
|
|
|
- bTopWnd = !bTopWnd;
|
|
|
-
|
|
|
- // 必须退出,否则执行2次;
|
|
|
- return TRUE;
|
|
|
- }
|
|
|
- /* 放子窗口处理;
|
|
|
- else if (pMsg->wParam == VK_F5)
|
|
|
- {
|
|
|
- Global::g_bLearn = !Global::g_bLearn;
|
|
|
- MessageBox(Global::g_bLearn ? _T("开启学习红外") : _T("关闭红外学习"), _T("提示"), MB_OK);
|
|
|
- return TRUE;
|
|
|
- }*/
|
|
|
- }
|
|
|
- return CMDIFrameWndEx::PreTranslateMessage(pMsg);
|
|
|
+ // TODO: 在此添加专用代码和/或调用基类
|
|
|
+ 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("Front window (press F3 to cancel or enable the front window)");
|
|
|
+ SetWindowText(strVersionInfo);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ SetWindowPos(&wndNoTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);//取消窗口置顶
|
|
|
+ CString strVersionInfo = _T("Cancel the front (press F3 to cancel or enable the front window)");
|
|
|
+ SetWindowText(strVersionInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ bTopWnd = !bTopWnd;
|
|
|
+
|
|
|
+ // 必须退出,否则执行2次;
|
|
|
+ return TRUE;
|
|
|
+ }
|
|
|
+ /* 放子窗口处理:减少更多数据传递;
|
|
|
+ else if (pMsg->wParam == VK_F5)
|
|
|
+ {
|
|
|
+ Global::g_bLearn = !Global::g_bLearn;
|
|
|
+ MessageBox(Global::g_bLearn ? _T("开启学习红外") : _T("关闭红外学习"), _T("提示"), MB_OK);
|
|
|
+ return TRUE;
|
|
|
+ }*/
|
|
|
+ }
|
|
|
+ return CMDIFrameWndEx::PreTranslateMessage(pMsg);
|
|
|
}
|
|
|
|
|
|
void CMainFrame::OnClose()
|
|
|
{
|
|
|
- // TODO: 在此添加消息处理程序代码和/或调用默认值
|
|
|
- if ( m_pChildFrame )
|
|
|
- {
|
|
|
- CFieldTestToolView *pView = (CFieldTestToolView*)m_pChildFrame->GetActiveView();
|
|
|
- if ( pView->m_pCamera )
|
|
|
- delete pView->m_pCamera;
|
|
|
- pView->m_pCamera = NULL;
|
|
|
- }
|
|
|
-
|
|
|
- CMDIFrameWndEx::OnClose();
|
|
|
+ // TODO: 在此添加消息处理程序代码和/或调用默认值
|
|
|
+ if (m_pChildFrame)
|
|
|
+ {
|
|
|
+ CFieldTestToolView* pView = (CFieldTestToolView*)m_pChildFrame->GetActiveView();
|
|
|
+ if (pView->m_pCamera)
|
|
|
+ delete pView->m_pCamera;
|
|
|
+ pView->m_pCamera = NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+ CMDIFrameWndEx::OnClose();
|
|
|
}
|