DlgAnnex.cpp 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. // DlgAnnex.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "YLGL.h"
  5. #include "DlgAnnex.h"
  6. #include "ShowPhoto.h"
  7. // CDlgAnnex 对话框
  8. IMPLEMENT_DYNAMIC(CDlgAnnex, CDialog)
  9. CDlgAnnex::CDlgAnnex(CWnd* pParent /*=NULL*/)
  10. : CDialog(CDlgAnnex::IDD, pParent),m_pvtAnnex(NULL)
  11. {
  12. }
  13. CDlgAnnex::~CDlgAnnex()
  14. {
  15. }
  16. void CDlgAnnex::DoDataExchange(CDataExchange* pDX)
  17. {
  18. CDialog::DoDataExchange(pDX);
  19. DDX_Control(pDX, IDC_LIST1, m_list_box);
  20. }
  21. BEGIN_MESSAGE_MAP(CDlgAnnex, CDialog)
  22. ON_LBN_DBLCLK(IDC_LIST1, &CDlgAnnex::OnLbnDblclkList1)
  23. ON_BN_CLICKED(BTN_LOOK, &CDlgAnnex::OnBnClickedLook)
  24. ON_BN_CLICKED(BTN_DELETE, &CDlgAnnex::OnBnClickedDelete)
  25. END_MESSAGE_MAP()
  26. // CDlgAnnex 消息处理程序
  27. BOOL CDlgAnnex::OnInitDialog()
  28. {
  29. CDialog::OnInitDialog();
  30. // TODO: 在此添加额外的初始化
  31. if ( m_pvtAnnex != NULL )
  32. {
  33. for ( vector<Annex>::iterator it = m_pvtAnnex->begin(); it != m_pvtAnnex->end(); it++ )
  34. {
  35. m_list_box.AddString(it->strMD5);
  36. }
  37. }
  38. return TRUE; // return TRUE unless you set the focus to a control
  39. // 异常: OCX 属性页应返回 FALSE
  40. }
  41. void CDlgAnnex::OnOK()
  42. {
  43. // TODO: 在此添加专用代码和/或调用基类
  44. CDialog::OnOK();
  45. }
  46. void CDlgAnnex::OnCancel()
  47. {
  48. // TODO: 在此添加专用代码和/或调用基类
  49. CDialog::OnCancel();
  50. }
  51. void CDlgAnnex::OnLbnDblclkList1()
  52. {
  53. // TODO: 在此添加控件通知处理程序代码
  54. OnBnClickedLook();
  55. }
  56. void CDlgAnnex::OnBnClickedLook()
  57. {
  58. // TODO: 在此添加控件通知处理程序代码
  59. int nSel = m_list_box.GetCurSel();
  60. if ( nSel != LB_ERR )
  61. {
  62. CString strMd5;
  63. m_list_box.GetText(nSel,strMd5);
  64. vector<Annex>::iterator it = m_pvtAnnex->begin();
  65. for ( ;it != m_pvtAnnex->end(); it++ )
  66. {
  67. if ( it->strMD5 == strMd5 )
  68. {
  69. ShowPhoto dlg;
  70. dlg.m_pImg = it->pImage;
  71. dlg.DoModal();
  72. break;
  73. }
  74. }
  75. }
  76. }
  77. void CDlgAnnex::OnBnClickedDelete()
  78. {
  79. int nSel = m_list_box.GetCurSel();
  80. if ( nSel != LB_ERR )
  81. {
  82. CString strMd5;
  83. m_list_box.GetText(nSel,strMd5);
  84. DWORD dwSendLen = strMd5.GetLength() + m_staff_id.GetLength() + m_staff_citizen_id_number.GetLength() + m_strImageType.GetLength() + 4*sizeof(DWORD);
  85. BYTE *pSendData = new BYTE[dwSendLen];
  86. DWORD dwLen0 = strMd5.GetLength();
  87. // 相片名称;
  88. memcpy(pSendData, &dwLen0, sizeof(DWORD));
  89. memcpy(pSendData + sizeof(DWORD), strMd5.GetString(), dwLen0);
  90. // 员工编号;
  91. DWORD dwLen = m_staff_id.GetLength();
  92. memcpy(pSendData + dwLen0 + sizeof(DWORD), &dwLen, sizeof(DWORD));
  93. memcpy(pSendData + dwLen0 + 2*sizeof(DWORD), m_staff_id.GetString(), dwLen);
  94. // 员工身份证号;
  95. DWORD dwLen1 = m_staff_citizen_id_number.GetLength();
  96. memcpy(pSendData + dwLen0 + 2*sizeof(DWORD) + dwLen, &dwLen1, sizeof(DWORD));
  97. memcpy(pSendData + dwLen0 + 3*sizeof(DWORD) + dwLen, m_staff_citizen_id_number.GetString(), dwLen1);
  98. // 相片类型;
  99. DWORD dwLen2 = m_strImageType.GetLength();
  100. memcpy(pSendData + dwLen0 + 3*sizeof(DWORD) + dwLen + dwLen1, &dwLen2, sizeof(DWORD));
  101. memcpy(pSendData + dwLen0 + 4*sizeof(DWORD) + dwLen + dwLen1, m_strImageType.GetString(), dwLen2);
  102. g_nSendCode = 42;
  103. g_pMainWnd->ProcessChatMessageRequest2(pSendData, dwSendLen);
  104. g_nSendCode = 0;
  105. delete[]pSendData;
  106. if (g_bSendOK == 0)
  107. {
  108. return;
  109. }
  110. m_list_box.DeleteString(nSel);
  111. for (vector<Annex>::iterator it = m_pvtAnnex->begin(); it != m_pvtAnnex->end(); it++ )
  112. {
  113. if ( it->strMD5 == strMd5 )
  114. {
  115. m_pvtAnnex->erase(it);
  116. break;
  117. }
  118. }
  119. AfxMessageBox(_T("删除文件成功"));
  120. }
  121. }