问题:当全部玩家快速点开始按钮开始游戏时,IDI_SEARCH_CARD开牌事件后于开始游戏事件,导致当开始游戏事件执行时执行的清除牌数据
for (WORD i = 0; i < GAME_PLAYER; i++)
{
m_GameClientView.SetUserOxValue(i,0xFF);
m_GameClientView.m_CardControl[i].SetOX(false);
m_GameClientView.m_CardControl[i].SetCardData(NULL,0);
m_GameClientView.m_CardControl[i].SetDisplayFlag(false);
m_GameClientView.m_CardControlOx[i].SetCardData(NULL,0);
}
又继续执行开牌事件
m_CardControl[m_cbPresentUserChair].SetCardData(&cbCardData[0], 3);
m_CardControlOx[m_cbPresentUserChair].SetCardData(&cbCardData[3], 2);
重新进行赋值,这是摊牌结果的情况,导致m_CardControl牌数据存在上局牌数据,导致崩溃。
具体导致崩溃的原因,我没细查。。。
方案:
加快开牌事件为700毫秒
SetTimer(IDI_SEARCH_CARD, 700, NULL);
总结:碰到这个问题时,解决了很久,之前以为是画面没刷新,array.removeall()没有清除数据,没往计时器时间差的问题去考虑