【MFC】显示系统时间的状态栏
生活随笔
收集整理的這篇文章主要介紹了
【MFC】显示系统时间的状态栏
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
00. 目錄
文章目錄
- 00. 目錄
- 01. 案例概述
- 02. 開發環境
- 03. 關鍵技術
- 04. 程序設計
- 05. 秘笈心法
- 06. 源碼下載
- 07. 附錄
01. 案例概述
狀態欄主要用于顯示程序運行時的狀態以及一些相關的信息,例如,在狀態欄中顯示登錄程序的用戶名,顯示鼠標的位置,本案例則是要顯示系統的當前時間。效果如下圖所示。
02. 開發環境
系統環境:Windows 10
開發環境:Visual Studio 2019
03. 關鍵技術
可以通過CTime類的GetCurrentTime方法獲得系統當前時間,然后在按秒增長的定時器中不斷更新時間。GetCurrentTime方法是一個靜態方法,其語法如下:
CTime::GetCurrentTime static CTime PASCAL GetCurrentTime( ); 說明:此成員函數返回一個代表當前時間的CTime對象。返回值是一個CTime類型的時間。在使用該方法時,不必定義CTime類的對象,可以直接通過CTime類來調用,如下: 示例: // CTime::GetCurrentTime示例: CTime t = CTime::GetCurrentTime();04. 程序設計
(1)新建一個基于對話框的工程。
(2)在對話框類中定義一個CStatusBar類型變量m_StatusBar。
(3)在對話框的OnInitDialog方法中創建狀態欄并顯示系統時間,同時啟動定時器修改顯示的時間,函數代碼如下。
void CMy1StatusDlg::OnTimer(UINT_PTR nIDEvent) {// TODO: 在此添加消息處理程序代碼和/或調用默認值CTime time;time = CTime::GetCurrentTime();m_StatusBar.SetPaneText(3, time.Format("%H:%M:%S"));CDialogEx::OnTimer(nIDEvent); }BEGIN_MESSAGE_MAP(CMy1StatusDlg, CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_WM_TIMER() END_MESSAGE_MAP()// CMy1StatusDlg 消息處理程序BOOL CMy1StatusDlg::OnInitDialog() {CDialogEx::OnInitDialog();// 將“關于...”菜單項添加到系統菜單中。// IDM_ABOUTBOX 必須在系統命令范圍內。ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != nullptr){BOOL bNameValid;CString strAboutMenu;bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);ASSERT(bNameValid);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// 設置此對話框的圖標。 當應用程序主窗口不是對話框時,框架將自動// 執行此操作SetIcon(m_hIcon, TRUE); // 設置大圖標SetIcon(m_hIcon, FALSE); // 設置小圖標// TODO: 在此添加額外的初始化代碼UINT array[4];for (int i = 0; i < 4; i++){array[i] = 100 + i;}//創建狀態欄窗口m_StatusBar.Create(this);//添加面板m_StatusBar.SetIndicators(array, sizeof(array) / sizeof(array[0]));//設置面板寬度for (int i = 0; i < 4; i++){m_StatusBar.SetPaneInfo(i, array[i], 0, 80);}//設置面板信息m_StatusBar.SetPaneText(0, TEXT("當前用戶"));m_StatusBar.SetPaneText(1, TEXT("滄海一笑"));m_StatusBar.SetPaneText(2, TEXT("當前時間"));//獲取當前時間CTime time;time = CTime::GetCurrentTime();m_StatusBar.SetPaneText(3, time.Format("%H:%M:%S"));RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);//設置定時器SetTimer(1, 1000, NULL);return TRUE; // 除非將焦點設置到控件,否則返回 TRUE }05. 秘笈心法
系統時間的顯示位置
在狀態欄顯示系統時間,關鍵是要實時對系統時間進行更新,實例中沒有進行復雜運算的操作,如果有復雜的運算勢必會占用大量的CPU時間,此時要能實時顯示系統時間,需要啟動一個線程來進行時間的更新。
06. 源碼下載
下載:【MFC】顯示系統時間的狀態欄.rar
07. 附錄
參考: 《Visual C++從入門到精通(項目案例版)》
總結
以上是生活随笔為你收集整理的【MFC】显示系统时间的状态栏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【MFC】工具栏左侧双线效果
- 下一篇: 【Qt】2D绘图之坐标系统