其他分享
首页 > 其他分享> > MFC + Duilib 学习及总结

MFC + Duilib 学习及总结

作者:互联网


typedef DWORD64 hash_t;            // 这个长度会溢出
constexpr hash_t prime = 0x100000001B3ull;
constexpr hash_t basis = 0xCBF29CE484222325ull;
inline hash_t hash_(const char *str)
{
hash_t ret{ basis };
while (*str)
{
ret ^= *str;
ret *= prime;
str++;
}
return ret;
}

constexpr hash_t AtoI(char const* str, hash_t last_value = basis)
{
return *str ? AtoI(str + 1, (*str ^ last_value) * prime) : last_value;
}

 

m_cmd = m_ListCtrl.GetProcessListCtrlItemText(r, 3, m_pProListCtrl);//读进程第三列的信息
//m_ListBox.SetListBoxItem(m_pRichEdit, CString(m_str)); // 写入日志
m_pDisTestItem->SetText(m_cmd); // 显示当前读到信息
m_Log.PrintStr(m_cmd); // 打印测试LOG
m_SuperStr.CStringToChar(m_cmd, haschar);
switch (hash_(haschar))
{
case AtoI("InitDevice"): ::AfxMessageBox(_T("InitDeivce")); break;
case AtoI("PowerOn"): ::AfxMessageBox(_T("PowerOn")); break;
case AtoI("TestVol"): ::AfxMessageBox(_T("TestVol")); break;
case AtoI("TestCur"): ::AfxMessageBox(_T("TestCur")); break;
case AtoI("TestMAC"): ::AfxMessageBox(_T("TestMAC")); break;
case AtoI("TestDeviceInfo"): ::AfxMessageBox(_T("TestDeViceInfo"));break;
case AtoI("TestISC"): ::AfxMessageBox(_T("TestISC")); break;
case AtoI("TestSW1"): ::AfxMessageBox(_T("TestSW1")); break;
case AtoI("TestSW2"): ::AfxMessageBox(_T("TestSW2")); break;
case AtoI("TestSW3"): ::AfxMessageBox(_T("TestSW3")); break;
case AtoI("TestBlueLed"): ::AfxMessageBox(_T("TestBlueLed")); break;
case AtoI("TestRedLed"): ::AfxMessageBox(_T("TestRedLed")); break;
case AtoI("TestGreenLed"): ::AfxMessageBox(_T("TestGreenLed")); break;
case AtoI("TestRelay1"): ::AfxMessageBox(_T("TestRelay1")); break;
case AtoI("TestRelay2"): ::AfxMessageBox(_T("TestRelay2")); break;
default: break;
}

 

 

 

 

标签:总结,Duilib,MFC,hash,break,case,AfxMessageBox,AtoI,str
来源: https://www.cnblogs.com/faibg/p/15677197.html