| | |
| | | |
| | | // ServoDlg.cpp : å®ç°æä»¶ |
| | |  |
| | | // ServoDlg.cpp : å®ç°æä»¶ |
| | | // |
| | | |
| | | #include "stdafx.h" |
| | |
| | | #include "CPageCollectionEvent.h" |
| | | #include "CControlJobDlg.h" |
| | | #include "InputDialog.h" |
| | | #include "ClientListDlg.h" |
| | | #include "CControlJobManagerDlg.h" |
| | | |
| | | |
| | |
| | | #endif |
| | | |
| | | |
| | | /* å建ç»ç«¯ç宿¶å¨ */ |
| | | /* å建ç»ç«¯ç宿¶å¨ */ |
| | | #define TIMER_ID_CREATE_TERMINAL 1 |
| | | |
| | | /* è¿è¡æ¶é´å®æ¶å¨ */ |
| | | /* è¿è¡æ¶é´å®æ¶å¨ */ |
| | | #define TIMER_ID_UPDATE_RUMTIME 2 |
| | | |
| | | /* Test */ |
| | | #define TIMER_ID_TEST 3 |
| | | |
| | | |
| | | // ç¨äºåºç¨ç¨åºâå
³äºâèå项ç CAboutDlg å¯¹è¯æ¡ |
| | | // ç¨äºåºç¨ç¨åºâå
³äºâèå项ç CAboutDlg å¯¹è¯æ¡ |
| | | |
| | | class CAboutDlg : public CDialogEx |
| | | { |
| | | public: |
| | | CAboutDlg(); |
| | | |
| | | // å¯¹è¯æ¡æ°æ® |
| | | // å¯¹è¯æ¡æ°æ® |
| | | #ifdef AFX_DESIGN_TIME |
| | | enum { IDD = IDD_ABOUTBOX }; |
| | | #endif |
| | | |
| | | protected: |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV æ¯æ |
| | | virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV æ¯æ |
| | | |
| | | // å®ç° |
| | | // å®ç° |
| | | protected: |
| | | DECLARE_MESSAGE_MAP() |
| | | }; |
| | |
| | | END_MESSAGE_MAP() |
| | | |
| | | |
| | | // CServoDlg å¯¹è¯æ¡ |
| | | // CServoDlg å¯¹è¯æ¡ |
| | | |
| | | |
| | | CServoDlg::CServoDlg(CWnd* pParent /*=NULL*/) |
| | |
| | | ON_UPDATE_COMMAND_UI(ID_MENU_TEST_MESSAGE_SET, &CServoDlg::OnUpdateMenuTestMessageSet) |
| | | ON_COMMAND(ID_MENU_TEST_MESSAGE_CLEAR, &CServoDlg::OnMenuTestMessageClear) |
| | | ON_UPDATE_COMMAND_UI(ID_MENU_TEST_MESSAGE_CLEAR, &CServoDlg::OnUpdateMenuTestMessageClear) |
| | | ON_COMMAND(ID_MENU_TOOLS_CLIENT_LIST, &CServoDlg::OnMenuToolsClientList) |
| | | ON_UPDATE_COMMAND_UI(ID_MENU_TOOLS_CLIENT_LIST, &CServoDlg::OnUpdateMenuToolsClientList) |
| | | ON_COMMAND(ID_MENU_HELP_ABOUT, &CServoDlg::OnMenuHelpAbout) |
| | | ON_WM_INITMENUPOPUP() |
| | | ON_WM_TIMER() |
| | |
| | | END_MESSAGE_MAP() |
| | | |
| | | |
| | | // CServoDlg æ¶æ¯å¤çç¨åº |
| | | // CServoDlg æ¶æ¯å¤çç¨åº |
| | | |
| | | void CServoDlg::InitRxWindows() |
| | | { |
| | | /* code */ |
| | | // 订é
æ°æ® |
| | | // 订é
æ°æ® |
| | | IRxWindows* pRxWindows = RX_GetRxWindows(); |
| | | pRxWindows->enableLog(5); |
| | | if (m_pObserver == NULL) { |
| | |
| | | else if (state == SERVO::MASTERSTATE::STARTING) { |
| | | m_pMyStatusbar->setBackgroundColor(STATUSBAR_BK_STARTING); |
| | | m_pMyStatusbar->setForegroundColor(RGB(0, 0, 0)); |
| | | m_pMyStatusbar->setRunTimeText("æ£å¨å¯å¨..."); |
| | | m_pMyStatusbar->setRunTimeText("æ£å¨å¯å¨..."); |
| | | } |
| | | else if (state == SERVO::MASTERSTATE::MSERROR) { |
| | | m_pTopToolbar->GetBtn(IDC_BUTTON_RUN)->EnableWindow(TRUE); |
| | |
| | | m_pTopToolbar->GetBtn(IDC_BUTTON_STOP)->EnableWindow(FALSE); |
| | | m_pMyStatusbar->setBackgroundColor(STATUSBAR_BK_ALARM); |
| | | m_pMyStatusbar->setForegroundColor(RGB(0, 0, 0)); |
| | | m_pMyStatusbar->setRunTimeText("å¯å¨å¤±è´¥."); |
| | | m_pMyStatusbar->setRunTimeText("å¯å¨å¤±è´¥."); |
| | | m_pTopToolbar->GetBtn(IDC_BUTTON_ALARM)->EnableWindow(TRUE); |
| | | KillTimer(TIMER_ID_UPDATE_RUMTIME); |
| | | } |
| | |
| | | m_pMyStatusbar->setForegroundColor(RGB(0, 0, 0)); |
| | | m_pMyStatusbar->setRunTimeText(theApp.m_model.getMaster().getLastErrorText().c_str()); |
| | | if (theApp.m_model.getMaster().getLastError() == ER_CODE_AOI_NG) { |
| | | AfxMessageBox(_T("AOIæ£æµå¤±è´¥ï¼è¯·æä½åä»å
¥è§£å³é®é¢ï¼")); |
| | | AfxMessageBox(_T("AOIæ£æµå¤±è´¥ï¼è¯·æä½åä»å
¥è§£å³é®é¢ï¼")); |
| | | } |
| | | m_pTopToolbar->GetBtn(IDC_BUTTON_ALARM)->EnableWindow(TRUE); |
| | | KillTimer(TIMER_ID_UPDATE_RUMTIME); |
| | |
| | | } |
| | | } |
| | | else if (exCode == ROBOT_EVENT_FINISH) { |
| | | m_pMyStatusbar->setCurTaskBtnText("æ "); |
| | | m_pMyStatusbar->setCurTaskBtnText("æ "); |
| | | } |
| | | else if (exCode == ROBOT_EVENT_ABORT) { |
| | | m_pMyStatusbar->setCurTaskBtnText("æ "); |
| | | m_pMyStatusbar->setCurTaskBtnText("æ "); |
| | | } |
| | | else if (exCode == ROBOT_EVENT_RESTORE) { |
| | | m_pMyStatusbar->setCurTaskBtnText("æ "); |
| | | m_pMyStatusbar->setCurTaskBtnText("æ "); |
| | | } |
| | | } |
| | | } |
| | |
| | | { |
| | | CDialogEx::OnInitDialog(); |
| | | |
| | | // å°âå
³äº...âèå项添å å°ç³»ç»èåä¸ã |
| | | // å°âå
³äº...âèå项添å å°ç³»ç»èåä¸ã |
| | | |
| | | // IDM_ABOUTBOX å¿
é¡»å¨ç³»ç»å½ä»¤èå´å
ã |
| | | // IDM_ABOUTBOX å¿
é¡»å¨ç³»ç»å½ä»¤èå´å
ã |
| | | ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); |
| | | ASSERT(IDM_ABOUTBOX < 0xF000); |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | // 设置æ¤å¯¹è¯æ¡ç徿 ã å½åºç¨ç¨åºä¸»çªå£ä¸æ¯å¯¹è¯æ¡æ¶ï¼æ¡æ¶å°èªå¨ |
| | | // æ§è¡æ¤æä½ |
| | | SetIcon(m_hIcon, TRUE); // è®¾ç½®å¤§å¾æ |
| | | SetIcon(m_hIcon, FALSE); // 设置å°å¾æ |
| | | // 设置æ¤å¯¹è¯æ¡ç徿 ã å½åºç¨ç¨åºä¸»çªå£ä¸æ¯å¯¹è¯æ¡æ¶ï¼æ¡æ¶å°èªå¨ |
| | | // æ§è¡æ¤æä½ |
| | | SetIcon(m_hIcon, TRUE); // è®¾ç½®å¤§å¾æ |
| | | SetIcon(m_hIcon, FALSE); // 设置å°å¾æ |
| | | |
| | | |
| | | // model init |
| | | theApp.m_model.init(); |
| | | SetTimer(TIMER_ID_TEST, 1000, nullptr); |
| | | |
| | | // èå |
| | | // èå |
| | | CMenu menu; |
| | | menu.LoadMenu(IDR_MENU_APP); |
| | | SetMenu(&menu); |
| | |
| | | CHmTab* m_pTab = CHmTab::Hook(GetDlgItem(IDC_TAB1)->m_hWnd); |
| | | m_pTab->SetPaddingLeft(20); |
| | | m_pTab->SetItemMarginLeft(18); |
| | | m_pTab->AddItem("״̬ͼ", FALSE); |
| | | m_pTab->AddItem("è¿æ¥å¾", TRUE); |
| | | m_pTab->AddItem("ç¶æå¾", FALSE); |
| | | m_pTab->AddItem("è¿æ¥å¾", TRUE); |
| | | m_pTab->AddItem("Glass", TRUE); |
| | | m_pTab->AddItem("é
æ¹", TRUE); |
| | | m_pTab->AddItem("æ¥è¦", TRUE); |
| | | m_pTab->AddItem("æ¥å¿", TRUE); |
| | | m_pTab->AddItem("æ¬è¿ä»»å¡", TRUE); |
| | | m_pTab->AddItem("é
æ¹", TRUE); |
| | | m_pTab->AddItem("æ¥è¦", TRUE); |
| | | m_pTab->AddItem("æ¥å¿", TRUE); |
| | | m_pTab->AddItem("æ¬è¿ä»»å¡", TRUE); |
| | | m_pTab->SetCurSel(0); |
| | | m_pTab->SetBkgndColor(RGB(222, 222, 222)); |
| | | ShowChildPage(0); |
| | |
| | | |
| | | |
| | | |
| | | // è°æ´åå§çªå£ä½ç½® |
| | | // è°æ´åå§çªå£ä½ç½® |
| | | CRect rcWnd; |
| | | GetWindowRect(&rcWnd); |
| | | int width = GetSystemMetrics(SM_CXSCREEN); |
| | |
| | | Resize(); |
| | | |
| | | |
| | | // ç¸å½äºå»¶æ¶è°ç¨masterçåå§å |
| | | // ç¸å½äºå»¶æ¶è°ç¨masterçåå§å |
| | | theApp.m_model.m_master.init(); |
| | | theApp.m_model.loadPortParams(); |
| | | |
| | | |
| | | // åå§åmaster以åéè¦æ§ä»¶ç»å®æ°æ® |
| | | // åå§åmaster以åéè¦æ§ä»¶ç»å®æ°æ® |
| | | m_pPageGraph1->BindEquipmentToGraph(); |
| | | |
| | | |
| | | // æ´æ°ç»å½ç¶æ |
| | | // æ´æ°ç»å½ç¶æ |
| | | UpdateLoginStatus(); |
| | | //SystemLogManager::getInstance.log(SystemLogManager::LogType::Info, _T("BondEqå¯å¨...")); |
| | | //SystemLogManager::getInstance.log(SystemLogManager::LogType::Info, _T("BondEqå¯å¨...")); |
| | | //SystemLogManager::getInstance. |
| | | |
| | | |
| | | return TRUE; // é¤éå°ç¦ç¹è®¾ç½®å°æ§ä»¶ï¼å¦åè¿å TRUE |
| | | return TRUE; // é¤éå°ç¦ç¹è®¾ç½®å°æ§ä»¶ï¼å¦åè¿å TRUE |
| | | } |
| | | |
| | | void CServoDlg::OnSysCommand(UINT nID, LPARAM lParam) |
| | |
| | | } |
| | | } |
| | | |
| | | // 妿åå¯¹è¯æ¡æ·»å æå°åæé®ï¼åéè¦ä¸é¢ç代ç |
| | | // æ¥ç»å¶è¯¥å¾æ ã 对äºä½¿ç¨ææ¡£/è§å¾æ¨¡åç MFC åºç¨ç¨åºï¼ |
| | | // è¿å°ç±æ¡æ¶èªå¨å®æã |
| | | // 妿åå¯¹è¯æ¡æ·»å æå°åæé®ï¼åéè¦ä¸é¢ç代ç |
| | | // æ¥ç»å¶è¯¥å¾æ ã 对äºä½¿ç¨ææ¡£/è§å¾æ¨¡åç MFC åºç¨ç¨åºï¼ |
| | | // è¿å°ç±æ¡æ¶èªå¨å®æã |
| | | |
| | | void CServoDlg::OnPaint() |
| | | { |
| | | if (IsIconic()) |
| | | { |
| | | CPaintDC dc(this); // ç¨äºç»å¶ç设å¤ä¸ä¸æ |
| | | CPaintDC dc(this); // ç¨äºç»å¶ç设å¤ä¸ä¸æ |
| | | |
| | | SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); |
| | | |
| | | // ä½¿å¾æ å¨å·¥ä½åºç©å½¢ä¸å±
ä¸ |
| | | // ä½¿å¾æ å¨å·¥ä½åºç©å½¢ä¸å±
ä¸ |
| | | int cxIcon = GetSystemMetrics(SM_CXICON); |
| | | int cyIcon = GetSystemMetrics(SM_CYICON); |
| | | CRect rect; |
| | |
| | | int x = (rect.Width() - cxIcon + 1) / 2; |
| | | int y = (rect.Height() - cyIcon + 1) / 2; |
| | | |
| | | // ç»å¶å¾æ |
| | | // ç»å¶å¾æ |
| | | dc.DrawIcon(x, y, m_hIcon); |
| | | } |
| | | else |
| | |
| | | } |
| | | } |
| | | |
| | | //å½ç¨æ·æå¨æå°åçªå£æ¶ç³»ç»è°ç¨æ¤å½æ°åå¾å
æ |
| | | //æ¾ç¤ºã |
| | | //å½ç¨æ·æå¨æå°åçªå£æ¶ç³»ç»è°ç¨æ¤å½æ°åå¾å
æ |
| | | //æ¾ç¤ºã |
| | | HCURSOR CServoDlg::OnQueryDragIcon() |
| | | { |
| | | return static_cast<HCURSOR>(m_hIcon); |
| | |
| | | pCmdUI->Enable(TRUE); |
| | | } |
| | | |
| | | void CServoDlg::OnMenuToolsClientList() |
| | | { |
| | | CClientListDlg dlg; |
| | | dlg.DoModal(); |
| | | } |
| | | |
| | | void CServoDlg::OnUpdateMenuToolsClientList(CCmdUI* pCmdUI) |
| | | { |
| | | pCmdUI->Enable(TRUE); |
| | | } |
| | | |
| | | void CServoDlg::OnMenuHelpAbout() |
| | | { |
| | | theApp.m_model.getMaster().test(); |
| | |
| | | |
| | | void CServoDlg::OnBnClickedOk() |
| | | { |
| | | // TODO: 卿¤æ·»å æ§ä»¶éç¥å¤çç¨åºä»£ç |
| | | // TODO: 卿¤æ·»å æ§ä»¶éç¥å¤çç¨åºä»£ç |
| | | CDialogEx::OnOK(); |
| | | } |
| | | |
| | | |
| | | void CServoDlg::OnBnClickedCancel() |
| | | { |
| | | // TODO: 卿¤æ·»å æ§ä»¶éç¥å¤çç¨åºä»£ç |
| | | // TODO: 卿¤æ·»å æ§ä»¶éç¥å¤çç¨åºä»£ç |
| | | CDialogEx::OnCancel(); |
| | | } |
| | | |
| | |
| | | |
| | | void CServoDlg::OnClose() |
| | | { |
| | | // TODO: 卿¤æ·»å æ¶æ¯å¤çç¨åºä»£ç å/æè°ç¨é»è®¤å¼ |
| | | // TODO: 卿¤æ·»å æ¶æ¯å¤çç¨åºä»£ç å/æè°ç¨é»è®¤å¼ |
| | | |
| | | CDialogEx::OnClose(); |
| | | } |
| | |
| | | void CServoDlg::OnTimer(UINT_PTR nIDEvent) |
| | | { |
| | | if (TIMER_ID_CREATE_TERMINAL == nIDEvent) { |
| | | // é¢å
å建ç»ç«¯çªå£ |
| | | // é¢å
å建ç»ç«¯çªå£ |
| | | KillTimer(TIMER_ID_CREATE_TERMINAL); |
| | | char szBuffer[MAX_PATH]; |
| | | sprintf_s(szBuffer, MAX_PATH, "%s\\RES\\TeminalMsg.html", (LPTSTR)(LPCTSTR)theApp.m_strAppDir); |
| | |
| | | ::EnableMenuItem(hMenu, ID_OPEATOR_SWITCH, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED); |
| | | ::EnableMenuItem(hMenu, ID_OPERATOR_LOGOUT, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED); |
| | | |
| | | m_pTopToolbar->SetOperatorBtnText(_T("æªç»å½")); |
| | | m_pTopToolbar->SetOperatorBtnText(_T("æªç»å½")); |
| | | } |
| | | } |
| | | |
| | |
| | | if (id == IDC_BUTTON_RUN || id == IDC_BUTTON_STOP) { |
| | | UserRole emRole = UserManager::getInstance().getCurrentUserRole(); |
| | | if (emRole != UserRole::SuperAdmin) { |
| | | AfxMessageBox(_T("å½åç¨æ·å¹¶é管çåï¼ï¼ï¼")); |
| | | AfxMessageBox(_T("å½åç¨æ·å¹¶é管çåï¼ï¼ï¼")); |
| | | return 1; |
| | | } |
| | | } |
| | | |
| | | if (id == IDC_BUTTON_RUN) { |
| | | if (theApp.m_model.getMaster().getState() == SERVO::MASTERSTATE::MSERROR) { |
| | | AfxMessageBox("å½åææºå°åçé误ï¼ä¸è½å¯å¨ï¼è¯·ç¡®è®¤è§£å³é®é¢ååå°è¯éæ°å¯å¨ï¼"); |
| | | AfxMessageBox("å½åææºå°åçé误ï¼ä¸è½å¯å¨ï¼è¯·ç¡®è®¤è§£å³é®é¢ååå°è¯éæ°å¯å¨ï¼"); |
| | | } |
| | | else { |
| | | if (theApp.m_model.getMaster().start() == 0) { |
| | |
| | | } |
| | | else if (id == IDC_BUTTON_RUN_BATCH) { |
| | | if (theApp.m_model.getMaster().getState() == SERVO::MASTERSTATE::MSERROR) { |
| | | AfxMessageBox("å½åææºå°åçé误ï¼ä¸è½å¯å¨ï¼è¯·ç¡®è®¤è§£å³é®é¢ååå°è¯éæ°å¯å¨ï¼"); |
| | | AfxMessageBox("å½åææºå°åçé误ï¼ä¸è½å¯å¨ï¼è¯·ç¡®è®¤è§£å³é®é¢ååå°è¯éæ°å¯å¨ï¼"); |
| | | } |
| | | else { |
| | | if (theApp.m_model.getMaster().startBatch() == 0) { |
| | |
| | | } |
| | | else if (id == IDC_BUTTON_RUN_CT) { |
| | | if (theApp.m_model.getMaster().getState() == SERVO::MASTERSTATE::MSERROR) { |
| | | AfxMessageBox("å½åææºå°åçé误ï¼ä¸è½å¯å¨ï¼è¯·ç¡®è®¤è§£å³é®é¢ååå°è¯éæ°å¯å¨ï¼"); |
| | | AfxMessageBox("å½åææºå°åçé误ï¼ä¸è½å¯å¨ï¼è¯·ç¡®è®¤è§£å³é®é¢ååå°è¯éæ°å¯å¨ï¼"); |
| | | } |
| | | else { |
| | | if (theApp.m_model.getMaster().startContinuousTransfer() == 0) { |
| | |
| | | else if (2 == menuId) { |
| | | CUserManagerDlg dlg; |
| | | if (dlg.DoModal() != IDOK) { |
| | | logManager.log(SystemLogManager::LogType::Operation, _T("ç¨æ·ç®¡çç颿ä½è¢«åæ¶ï¼")); |
| | | logManager.log(SystemLogManager::LogType::Operation, _T("ç¨æ·ç®¡çç颿ä½è¢«åæ¶ï¼")); |
| | | } |
| | | } |
| | | else if (3 == menuId) { |
| | |
| | | dlg.DoModal(); |
| | | } |
| | | else if (4 == menuId) { |
| | | int ret = AfxMessageBox(_T("æ¯å¦åæ¢ç¨æ·ï¼åæ¢ç¨æ·ä¼éåºå½åè´¦å·ï¼"), MB_OKCANCEL | MB_ICONEXCLAMATION); |
| | | int ret = AfxMessageBox(_T("æ¯å¦åæ¢ç¨æ·ï¼åæ¢ç¨æ·ä¼éåºå½åè´¦å·ï¼"), MB_OKCANCEL | MB_ICONEXCLAMATION); |
| | | if (ret != IDOK) { |
| | | return 0; |
| | | } |
| | | |
| | | logManager.log(SystemLogManager::LogType::Operation, _T("ç¡®è®¤åæ¢è§è²ï¼")); |
| | | logManager.log(SystemLogManager::LogType::Operation, _T("ç¡®è®¤åæ¢è§è²ï¼")); |
| | | if (userManager.isLoggedIn()) { |
| | | logManager.log(SystemLogManager::LogType::Info, _T("éåºç»å½ï¼")); |
| | | logManager.log(SystemLogManager::LogType::Info, _T("éåºç»å½ï¼")); |
| | | userManager.logout(); |
| | | } |
| | | |
| | |
| | | } |
| | | else { |
| | | CString cstrMessage; |
| | | cstrMessage.Format(_T("æ¯å¦éåºç¨æ· [%s]ï¼"), userManager.getCurrentUser().c_str()); |
| | | cstrMessage.Format(_T("æ¯å¦éåºç¨æ· [%s]ï¼"), userManager.getCurrentUser().c_str()); |
| | | int ret = AfxMessageBox(_T(cstrMessage), MB_OKCANCEL | MB_ICONEXCLAMATION); |
| | | if (ret != IDOK) { |
| | | return 0; |
| | | } |
| | | |
| | | logManager.log(SystemLogManager::LogType::Info, _T("éåºç»å½ï¼")); |
| | | logManager.log(SystemLogManager::LogType::Info, _T("éåºç»å½ï¼")); |
| | | userManager.logout(); |
| | | } |
| | | |
| | |
| | | |
| | | SERVO::MASTERSTATE state = theApp.m_model.getMaster().getState(); |
| | | if (state == SERVO::MASTERSTATE::RUNNING) { |
| | | strText.Format(_T("æ£å¨è¿è¡ï¼%02d:%02d:%02d %s"), h, m, s, pszSuffix); |
| | | strText.Format(_T("æ£å¨è¿è¡ï¼%02d:%02d:%02d %s"), h, m, s, pszSuffix); |
| | | } |
| | | else if (state == SERVO::MASTERSTATE::RUNNING_CONTINUOUS_TRANSFER) { |
| | | strText.Format(_T("åä¼ æ¨¡å¼ï¼%02d:%02d:%02d %s"), h, m, s, pszSuffix); |
| | | strText.Format(_T("åä¼ æ¨¡å¼ï¼%02d:%02d:%02d %s"), h, m, s, pszSuffix); |
| | | } |
| | | else if (state == SERVO::MASTERSTATE::RUNNING_BATCH) { |
| | | strText.Format(_T("JOB模å¼ï¼%02d:%02d:%02d %s"), h, m, s, pszSuffix); |
| | | strText.Format(_T("JOB模å¼ï¼%02d:%02d:%02d %s"), h, m, s, pszSuffix); |
| | | } |
| | | else { |
| | | strText.Format(_T("å·²è¿è¡ï¼%02d:%02d:%02d %s"), h, m, s, pszSuffix); |
| | | strText.Format(_T("å·²è¿è¡ï¼%02d:%02d:%02d %s"), h, m, s, pszSuffix); |
| | | } |
| | | |
| | | return strText; |