冰楓論壇

標題: [MFC] 禁止連續點擊按鈕 [打印本頁]

作者: whitefox    時間: 2023-5-27 11:19
標題: [MFC] 禁止連續點擊按鈕
實現方法使用計時器,首先要添加一個OnTimer事件處理函數
區分 VC6 與 VS2008 之後,主要是在參數的資料形態不同!
VC 6:
  1. afx_msg void OnTimer(UINT nIDEvent);
複製代碼
VS 2008:
  1. afx_msg void OnTimer(UINT_PTR nIDEvent);
複製代碼
以上透過IDE介面拉原件會比較方便也不會有VS版本別差異造成的錯誤

此處宣告一個布林變數做為開關
  1. BOOL m_bBtnEnable = TRUE;
複製代碼
設計流程是在按鈕點擊下去後,首先禁用按鈕(Disable)再啟動OnTimer處理函數
至於原本該執行的功能放的位置就要看想要呈現的樣子是
1.按下去禁止再次點擊一段時間(這一種就要考量計時器設定的間隔是否大於執行時間)
2.按下去執行後禁止再次點擊一段時間
  1. GetDlgItem(IDC_BUTTON)->EnableWindow(FALSE);
  2. bBtnEnable = FALSE;

  3. // 原本該執行的功能1

  4. SetTimer(1, 100, NULL);

  5. // 原本該執行的功能2
複製代碼
這裡設定每隔100ms執行

最後在OnTime處理函數設定按鈕失效和有效的處理
  1. if (m_bBtnEnable)
  2. {
  3.     GetDlgItem(IDC_BUTTON)->EnableWindow(TRUE);
  4.     KillTimer(1);
  5. }
  6. else
  7. {
  8.     GetDlgItem(IDC_BUTTON)->EnableWindow(FALSE);
  9. }
  10. CDialog::OnTimer(nIDEvent);
複製代碼





歡迎光臨 冰楓論壇 (https://bingfong.com/) Powered by 冰楓