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);