首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

MFC 實現「每日格言」對話框與啟動顯示狀態的 INI 文件持久化

     編輯:程式設計疑難解答

功能需求

程序啟動時顯示「每日格言」對話框,包含「下次啟動不再顯示」勾選框,用戶選擇後需持久化保存,下次啟動自動判斷是否彈出。

實現步驟

  1. 資源準備:建立對話框資源(IDD_TIP_DLG),放置靜態文本顯示格言、Check Box(IDC_CHECK_SHOW)、確定按鈕。
  2. 讀取配置:CWinApp::InitInstance() 中調用 GetProfileInt() 讀取 INI 狀態。
  3. 條件彈出:若讀取值為 0(預設顯示),DoModal() 顯示對話框。
  4. 保存選擇:對話框 OnOK() 時獲取 Check 狀態,WriteProfileInt() 寫入 INI。

核心代碼

// App.cpp InitInstance
BOOL CMyApp::InitInstance() {
    // ... 
    if (GetProfileInt(_T("Settings"), _T("ShowTip"), 1)) { // 1=不顯示
        CTipDlg dlg;
        dlg.DoModal();
    }
    // ...
}

// TipDlg.cpp OnOK
void CTipDlg::OnOK() {
    CButton* pChk = (CButton*)GetDlgItem(IDC_CHECK_SHOW);
    int show = pChk->GetCheck(); // BST_CHECKED=1 表示勾選「不再顯示」
    AfxGetApp()->WriteProfileInt(_T("Settings"), _T("ShowTip"), show);
    CDialog::OnOK();
}

擴展建議

  • 格言內容存儲於 tips.txt,每行一條,啟動時隨機讀取一行。
  • 對話框增加「上一條/下一條」按鈕,維護當前索引。
  • 參考 CodeProject 經典實現:Improved Tip of the Day Dialog。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved