冰楓論壇

 找回密碼
 立即註冊
ads_sugarbook
搜索
查看: 925|回覆: 0
打印 上一主題 下一主題

[心得] [MFC] 禁止連續點擊按鈕

[複製鏈接]

627

主題

0

好友

772

積分

高級贊助會員

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

UID
390967
帖子
1199
主題
627
精華
0
積分
772
楓幣
7150
威望
315
存款
4100
贊助金額
1800
推廣
0
GP
1643
閱讀權限
150
在線時間
143 小時
註冊時間
2023-5-18
最後登入
2024-5-5

2023年紀念勳章 太陽勳章 神手勳章 高級客戶 VIP會員 私服達人 懶人勳章 幼兒勳章 音樂勳章 屁孩勳章 貢獻王 性別(女) 性別(男) 積分勳章 發帖達人 2023端午節紀念勳章 富豪勳章 富可敵國 2023中秋節紀念勳章 解說達人 論壇粉絲 2023聖誕節紀念勳章 2024年紀念勳章

跳轉到指定樓層
1
發表於 2023-5-27 11:19:22 |只看該作者 |倒序瀏覽
實現方法使用計時器,首先要添加一個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);
複製代碼
收藏收藏0 推0 噓0


把本文推薦給朋友或其他網站上,每次被點擊增加您在本站積分: 1骰子
複製連結並發給好友,以賺取推廣點數
簡單兩步驟,註冊、分享網址,即可獲得獎勵! 一起推廣文章換商品、賺$$
高級模式
B Color Image Link Quote Code Smilies |上傳

廣告刊登意見回饋關於我們職位招聘本站規範DMCA隱私權政策

Copyright © 2011-2024 冰楓論壇, All rights reserved

免責聲明:本網站是以即時上載留言的方式運作,本站對所有留言的真實性、完整性及立場等,不負任何法律責任。

而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。

小黑屋|手機版|冰楓論壇

GMT+8, 2024-5-5 11:42

回頂部