- UID
- 390967
- 帖子
- 1674
- 主題
- 862
- 精華
- 0
- 積分
- 876
- 楓幣
- 12485
- 威望
- 416
- 存款
- 10100
- 贊助金額
- 1800
- 推廣
- 0
- GP
- 2824
- 閱讀權限
- 150
- 在線時間
- 198 小時
- 註冊時間
- 2023-5-18
- 最後登入
- 2024-12-29
|
實現方法使用計時器,首先要添加一個OnTimer事件處理函數
區分 VC6 與 VS2008 之後,主要是在參數的資料形態不同!
VC 6:- afx_msg void OnTimer(UINT nIDEvent);
複製代碼 VS 2008:- afx_msg void OnTimer(UINT_PTR nIDEvent);
複製代碼 以上透過IDE介面拉原件會比較方便也不會有VS版本別差異造成的錯誤
此處宣告一個布林變數做為開關- BOOL m_bBtnEnable = TRUE;
複製代碼 設計流程是在按鈕點擊下去後,首先禁用按鈕(Disable)再啟動OnTimer處理函數
至於原本該執行的功能放的位置就要看想要呈現的樣子是
1.按下去禁止再次點擊一段時間(這一種就要考量計時器設定的間隔是否大於執行時間)
2.按下去執行後禁止再次點擊一段時間- GetDlgItem(IDC_BUTTON)->EnableWindow(FALSE);
- bBtnEnable = FALSE;
- // 原本該執行的功能1
- SetTimer(1, 100, NULL);
- // 原本該執行的功能2
複製代碼 這裡設定每隔100ms執行
最後在OnTime處理函數設定按鈕失效和有效的處理- if (m_bBtnEnable)
- {
- GetDlgItem(IDC_BUTTON)->EnableWindow(TRUE);
- KillTimer(1);
- }
- else
- {
- GetDlgItem(IDC_BUTTON)->EnableWindow(FALSE);
- }
- CDialog::OnTimer(nIDEvent);
複製代碼 |
|