SourceCode/Bond/Servo/ServoDlg.cpp
@@ -363,6 +363,8 @@
BOOL CServoDlg::OnInitDialog()
{
   CDialogEx::OnInitDialog();
   const ULONGLONG boot_ui_begin = GetTickCount64();
   CWaitCursor wait; // 整个初始化期显示等待光标,避免用户误以为卡死
   // 将“关于...”菜单项添加到系统菜单中。
@@ -398,13 +400,19 @@
   // model init
   const ULONGLONG boot_model_begin = GetTickCount64();
   theApp.m_model.init();
   LOGI("[BOOT][UI] m_model.init finished, cost=%llu ms (since OnInit start %llu ms)",
      (unsigned long long)(GetTickCount64() - boot_model_begin),
      (unsigned long long)(GetTickCount64() - boot_ui_begin));
   SetTimer(TIMER_ID_LOGIN, 1500, nullptr);
   LOGI("[BOOT][UI] after model.init, elapsed=%llu ms", (unsigned long long)(GetTickCount64() - boot_ui_begin));
   // 菜单
   CMenu menu;
   menu.LoadMenu(IDR_MENU_APP);
   SetMenu(&menu);
   LOGI("[BOOT][UI] menu loaded, elapsed=%llu ms", (unsigned long long)(GetTickCount64() - boot_ui_begin));
   // toolbar
@@ -417,23 +425,46 @@
   ASSERT(hMenu);
   ::EnableMenuItem(hMenu, ID_OPEATOR_SWITCH, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
   m_pTopToolbar->GetBtn(IDC_BUTTON_JOBS)->EnableWindow(TRUE);
   LOGI("[BOOT][UI] toolbar created, elapsed=%llu ms", (unsigned long long)(GetTickCount64() - boot_ui_begin));
   // Tab
   const ULONGLONG boot_pages_begin = GetTickCount64();
   m_pPageGraph1 = new CPageGraph1();
   m_pPageGraph1->Create(IDD_PAGE_GRAPH1, this);
   LOGI("[BOOT][UI] page Graph1 created, cost=%llu ms (elapsed=%llu ms)",
      (unsigned long long)(GetTickCount64() - boot_pages_begin),
      (unsigned long long)(GetTickCount64() - boot_ui_begin));
   m_pPageGraph2 = new CPageGraph2();
   m_pPageGraph2->Create(IDD_PAGE_GRAPH2, this);
   LOGI("[BOOT][UI] page Graph2 created, cost=%llu ms (elapsed=%llu ms)",
      (unsigned long long)(GetTickCount64() - boot_pages_begin),
      (unsigned long long)(GetTickCount64() - boot_ui_begin));
   m_pPageGlassList = new CPageGlassList();
   m_pPageGlassList->Create(IDD_PAGE_GLASS_LIST, this);
   LOGI("[BOOT][UI] page GlassList created, cost=%llu ms (elapsed=%llu ms)",
      (unsigned long long)(GetTickCount64() - boot_pages_begin),
      (unsigned long long)(GetTickCount64() - boot_ui_begin));
   m_pPageRecipe = new CPageRecipe();
   m_pPageRecipe->Create(IDD_PAGE_RECIPE, this);
   LOGI("[BOOT][UI] page Recipe created, cost=%llu ms (elapsed=%llu ms)",
      (unsigned long long)(GetTickCount64() - boot_pages_begin),
      (unsigned long long)(GetTickCount64() - boot_ui_begin));
   m_pPageAlarm = new CPageAlarm();
   m_pPageAlarm->Create(IDD_DIALOG_ALARM, this);
   LOGI("[BOOT][UI] page Alarm created, cost=%llu ms (elapsed=%llu ms)",
      (unsigned long long)(GetTickCount64() - boot_pages_begin),
      (unsigned long long)(GetTickCount64() - boot_ui_begin));
   m_pPageLog = new CPageLog();
   m_pPageLog->Create(IDD_DIALOG_LOG, this);
   LOGI("[BOOT][UI] page Log created, cost=%llu ms (elapsed=%llu ms)",
      (unsigned long long)(GetTickCount64() - boot_pages_begin),
      (unsigned long long)(GetTickCount64() - boot_ui_begin));
   m_pPageTransferLog = new CPageTransferLog();
   m_pPageTransferLog->Create(IDD_PAGE_TRANSFER_LOG, this);
   LOGI("[BOOT][UI] page TransferLog created, cost=%llu ms (elapsed=%llu ms)",
      (unsigned long long)(GetTickCount64() - boot_pages_begin),
      (unsigned long long)(GetTickCount64() - boot_ui_begin));
   CHmTab* m_pTab = CHmTab::Hook(GetDlgItem(IDC_TAB1)->m_hWnd);
   m_pTab->SetPaddingLeft(20);
@@ -448,6 +479,7 @@
   m_pTab->SetCurSel(0);
   m_pTab->SetBkgndColor(RGB(222, 222, 222));
   ShowChildPage(0);
   LOGI("[BOOT][UI] pages/tabs created, elapsed=%llu ms", (unsigned long long)(GetTickCount64() - boot_ui_begin));
   // 读取面板宽
   CString strIniFile;
@@ -467,11 +499,13 @@
   m_pPanelAttributes = new CPanelAttributes();
   m_pPanelAttributes->Create(IDD_PANEL_ATTRIBUTES, this);
   
   LOGI("[BOOT][UI] panels created, elapsed=%llu ms", (unsigned long long)(GetTickCount64() - boot_ui_begin));
   // statusbar
   m_pMyStatusbar = new CMyStatusbar();
   m_pMyStatusbar->Create(IDD_STATUSBAR, this);
   m_pMyStatusbar->ShowWindow(SW_SHOW);
   LOGI("[BOOT][UI] statusbar created, elapsed=%llu ms", (unsigned long long)(GetTickCount64() - boot_ui_begin));
@@ -488,10 +522,23 @@
   InitRxWindows();
   Resize();
   // 加载历史缓存提示
   {
      CWaitCursor wait;
      if (m_pMyStatusbar != nullptr) {
         m_pMyStatusbar->setRunTimeText(_T("正在加载历史缓存..."));
         m_pMyStatusbar->UpdateWindow();
      }
      LOGI("[BOOT][UI] before master.init, elapsed=%llu ms", (unsigned long long)(GetTickCount64() - boot_ui_begin));
   // 相当于延时调用master的初始化
   const ULONGLONG boot_master_begin = GetTickCount64();
   theApp.m_model.m_master.init();
   LOGI("[BOOT][UI] m_master.init finished, cost=%llu ms (since OnInit start %llu ms)",
      (unsigned long long)(GetTickCount64() - boot_master_begin),
      (unsigned long long)(GetTickCount64() - boot_ui_begin));
   theApp.m_model.loadPortParams();
   }
   // 初始化master以后需要控件绑定数据
@@ -504,6 +551,9 @@
   //SystemLogManager::getInstance.
   LOGI("[BOOT][UI] OnInitDialog finished, total cost=%llu ms",
      (unsigned long long)(GetTickCount64() - boot_ui_begin));
   return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}