代码中的小技巧--按钮的限制

来源:互联网 发布:淘宝凑单怎么用 编辑:程序博客网 时间:2024/05/29 19:40
typedef struct tagData{
typedef struct tagData this_type;
    int a;
    int b;
    int c;
    this_type() :a(0), b(0), c(0){}
} Data;


typedef  enum enT{
    btn_A,
    btn_B,
    btn_C,
    btn_NULL  //哨兵位,通过此值来判断数组是否越界
} T;

Data array[btn_NULL] ;   //如果在enum中扩展时,这里也不用更改。


---------------------------------------------------按钮的限制-----------------------------------------------

做好封装:
//用于限制按钮点击频率,减小对服务器的压力
private:


typedef enum {
    BTN_DRTJ,

    BTN_LSTJ,

    BTN_NULL  //哨兵位
} enBtnIndex;


typedef struct tagClickMeta{  //描述 点击相关的信息: 上次点击的时间戳 、 是否是第一次点击
     time_t tOldTime;    //上次点击的时间戳 
     bool bFirstClicked; //是否是第一次点击
     tagClickMeta() :tOldTime(0), bFirstClicked(false){} //初始化
} ClickMeta;
ClickMeta m_clickMetas[BTN_NULL]; //后期维护,也不需要修改这里,直接在 enBtnIndex 添加就可以了
private:
bool LimitBtnClick(enBtnIndex btnIndex, time_t interval, const tstring& tstrInfo = _T(""));





};
bool CTradeMainDlg::LimitBtnClick(enBtnIndex btnIndex, time_t interval, const tstring& tstrInfo /*= _T("")*/) {
     if (!m_clickMetas[btnIndex].bFirstClicked || time(NULL) - m_clickMetas[btnIndex].tOldTime >= interval){
            m_clickMetas[btnIndex].bFirstClicked = true;
            m_clickMetas[btnIndex].tOldTime = time(NULL);
            return true;
}
    else{
            if (tstrInfo.compare( _T("") ) !=0)
            ShowMessageBox(tstrInfo.c_str(), MB_ICONINFORMATION);
}
              return false;
}


//调用该函数
if (LimitBtnClick(BTN_DRTJ, 6, _T("查询太过频繁,请稍后查询!")) )
GetApi()->Send_JG_DRTJ(_T(""), _T(""), _T(""), _T(""), NM_JG_TOTAL_DRTJ);

阅读全文
0 0
原创粉丝点击