权限添加.cpp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. YLGL.exe客户端权限添加步骤:
  2. 1、数据库[user]表,需要在字段[rights]最后的位置n后面,加1位数表示该权限。
  3. 2、在客户端界面操作的函数中,添加判断,如下:
  4. void CxxDlg::OnxxxBtnClick()
  5. {
  6. if ( !IsHasRights2new(n-1) )
  7. {
  8. AfxMessageBox(_T("您未具有该操作权限!"),MB_ICONINFORMATION);
  9. return;
  10. }
  11. }
  12. 3、在类Account类中再进行处理以下几个函数:
  13. /////////////////////////////////////////////////////////////////////////////////////////////////////////
  14. // 注意:这个类里面的Check按钮,必须是按顺序生成的,如IDC_CHECK1~IDC_CHECKn 的值都是连续,且与[user].[rights]字段对应;
  15. // 所以,在添加新权限时,必须添加对应的IDC_CHECKn, 如果中间有几个没用到,也是要添加,只要设置不可见即可!
  16. /////////////////////////////////////////////////////////////////////////////////////////////////////////
  17. void Account::ClearCtrl()
  18. {
  19. m_account = _T("");
  20. m_psw = _T("");
  21. m_psw2 = _T("");
  22. m_comboname.SetCurSel(-1);
  23. UpdateData(false);
  24. // 根据在[user].[rights]字段中有效位数n来替换63这个数字;
  25. for (int i = 0; i < 63; i++)
  26. ((CButton*)GetDlgItem(IDC_CHECK1 + i))->SetCheck(0);
  27. }
  28. CString Account::GetRights()
  29. {
  30. CString ret, temp;
  31. // 根据在[user].[rights]字段中有效位数n来替换63这个数字;
  32. for (int i = 0; i < 63; i++)
  33. {
  34. temp.Format(_T("%d"), ((CButton*)GetDlgItem(IDC_CHECK1 + i))->GetCheck());
  35. ret += temp;
  36. }
  37. return ret;
  38. }
  39. void Account::SetRights(CString rights)
  40. {
  41. for (int i = 0; i < rights.GetLength(); i++)
  42. {
  43. // 根据在[user].[rights]字段中有效位数n来替换63这个数字;
  44. if (i >= 63)
  45. break;
  46. ((CButton*)GetDlgItem(IDC_CHECK1 + i))->SetCheck(rights.GetAt(i) == _T('1'));
  47. }
  48. // 根据在[user].[rights]字段中有效位数n来替换63这个数字;
  49. for (i = rights.GetLength(); i < 63; i++)
  50. {
  51. ((CButton*)GetDlgItem(IDC_CHECK1 + i))->SetCheck(0);
  52. }
  53. }
  54. void Account::OnBUTbm6()
  55. {
  56. POSITION pos;
  57. pos = m_List1.GetFirstSelectedItemPosition();
  58. if (pos)
  59. {
  60. int iItem = m_List1.GetNextSelectedItem(pos);
  61. CString account = m_List1.GetItemText(iItem, 0);
  62. if (account == _T("admin"))
  63. {
  64. // 根据在[user].[rights]字段中有效位数n来重置这串字符;
  65. SetRights(_T("
  66. 0000000000\
  67. 0000000000\
  68. 0000000000\
  69. 0000000000\
  70. 0000000001\
  71. 0000000000\
  72. 000"));
  73. return;
  74. }
  75. }
  76. // 根据在[user].[rights]字段中有效位数n来重置这串字符;
  77. SetRights(_T("\
  78. 0000000000\
  79. 0000000000\
  80. 0000000000\
  81. 0000000000\
  82. 0000000000\
  83. 0000000000\
  84. 000"));
  85. }
  86. void Account::OnBUTbm5()
  87. {
  88. // 根据在[user].[rights]字段中有效位数n来重置这串字符;
  89. SetRights(_T("\
  90. 1111111111\
  91. 1111111111\
  92. 1111111111\
  93. 1111111111\
  94. 1111111111\
  95. 1111111111\
  96. 111"));
  97. BOOL bCheck = ((CButton*)GetDlgItem(IDC_CHECK50))->GetCheck();
  98. ((CButton*)GetDlgItem(IDC_CHECK50))->SetCheck(!bCheck);
  99. }
  100. 4.至此,全部完毕。