// FixedAssets.cpp : implementation file // #include "stdafx.h" #include "ylgl.h" #include "FixedAssets.h" #include "MyMdi.H" #include "ShowPhoto.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // FixedAssets IMPLEMENT_DYNCREATE(FixedAssets, MyFormView) FixedAssets::FixedAssets() : MyFormView(FixedAssets::IDD) { //{{AFX_DATA_INIT(FixedAssets) m_sex = _T(""); m_pImg = NULL; m_id = _T(""); m_name = _T(""); m_count = _T(""); m_type = _T(""); m_date = g_date; m_remark = _T(""); //}}AFX_DATA_INIT } FixedAssets::~FixedAssets() { if (m_pImg)delete m_pImg; } void FixedAssets::DoDataExchange(CDataExchange* pDX) { MyFormView::DoDataExchange(pDX); //{{AFX_DATA_MAP(FixedAssets) DDX_Control(pDX, IDC_EDITdate, m_datectrl); DDX_Control(pDX, IDC_COMBOclerk, m_comboclerk); DDX_Control(pDX, IDC_LIST2, m_List1); DDX_Control(pDX, IDC_STATIC1, m_static1); DDX_Text(pDX, IDC_EDITid, m_id); DDX_Text(pDX, IDC_EDITname, m_name); DDX_Text(pDX, IDC_EDITcount, m_count); DDX_Text(pDX, IDC_EDITtype, m_type); DDX_Text(pDX, IDC_EDITdate, m_date); DDX_Text(pDX, IDC_EDITremark, m_remark); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(FixedAssets, MyFormView) //{{AFX_MSG_MAP(FixedAssets) ON_BN_CLICKED(IDC_BUTsave, OnBUTsave) ON_BN_CLICKED(IDC_BUTdel, OnBUTdel) ON_BN_CLICKED(IDC_BUTclose, OnBUTclose) ON_NOTIFY(NM_CLICK, IDC_LIST2, OnClickList2) ON_BN_CLICKED(IDC_BUTload, OnBUTload) ON_BN_CLICKED(IDC_BUTdel2, OnBUTdel2) ON_WM_PAINT() ON_WM_LBUTTONDOWN() ON_BN_CLICKED(IDC_BUTTON1, OnButton1) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // FixedAssets diagnostics #ifdef _DEBUG void FixedAssets::AssertValid() const { MyFormView::AssertValid(); } void FixedAssets::Dump(CDumpContext& dc) const { MyFormView::Dump(dc); } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // FixedAssets message handlers void FixedAssets::OnInitialUpdate() { MyFormView::OnInitialUpdate(); // TODO: Add your specialized code here and/or call the base class CMyMdi Mdi; Mdi.SetSubView((CWnd*)GetParent(), (CWnd*)this); // Here we create the outbar control using the splitter as its parent // and setting its id to the first pane. CRect rc2; GetWindowRect(rc2); ::MoveWindow(m_hWnd, g_rc.left, g_rc.top, g_rc.Width(), g_rc.Height(), TRUE); EnumChildWindows(m_hWnd, (WNDENUMPROC)EnumChildProc, 0); m_static1.SetFont(&g_titlefont); m_List1.SetHeadings("编号, 60;名称, 60;数量, 60;规格, 60;保管员, 60;购买日期, 60;备注,60"); m_List1.LoadColumnInfo(212); m_comboclerk.RefDroppedWidth(); GetData(); } void FixedAssets::FillGrid() { m_List1.DeleteAllItems2(); int ii = 0; m_List1.m_arLabels.SetSize(m_List1array.GetSize(), 1); int count = 0; for (ii = 0; ii < m_List1.m_arLabels.GetSize(); ii++) { m_List1.m_arLabels.ElementAt(count++).Copy(m_List1array.ElementAt(ii)); } m_List1.m_arLabels.SetSize(count, 1); ii = count; m_List1.m_LabelCount = ii; m_List1.SetItemCountEx(ii); } void FixedAssets::OnBUTclose() { // TODO: Add your control notification handler code here GetParent()->SendMessage(WM_CLOSE); } void FixedAssets::ClearCtrl() { m_sex = _T(""); m_id = _T(""); m_name = _T(""); m_count = _T(""); m_type = _T(""); m_date = g_date; m_remark = _T(""); UpdateData(false); m_comboclerk.SetCurSel(-1); } void FixedAssets::OnClickList2(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here ListSelChange(); *pResult = 0; } void FixedAssets::ListSelChange()//列表项改变,重新读相片; { POSITION pos; pos = m_List1.GetFirstSelectedItemPosition(); if (pos == NULL) { OnButton1(); return; } int iItem = m_List1.GetNextSelectedItem(pos); m_oldid = m_List1.GetItemText(iItem, 0); for (int ii = 0; ii < m_List1array.GetSize(); ii++) { if (m_List1array.ElementAt(ii).ElementAt(0) == m_oldid) { GetDlgItem(IDC_BUTload)->EnableWindow(1); GetDlgItem(IDC_BUTdel2)->EnableWindow(1); CString clerk; m_id = m_List1array.ElementAt(ii).ElementAt(0); m_name = m_List1array.ElementAt(ii).ElementAt(1); m_count = m_List1array.ElementAt(ii).ElementAt(2); m_type = m_List1array.ElementAt(ii).ElementAt(3); clerk = m_List1array.ElementAt(ii).ElementAt(4); m_date = m_List1array.ElementAt(ii).ElementAt(5); m_remark = m_List1array.ElementAt(ii).ElementAt(6); UpdateData(false); if (m_comboclerk.FindString(0, clerk) == -1) m_comboclerk.AddString(clerk); int pos = m_comboclerk.FindString(0, clerk); m_comboclerk.SetCurSel(pos); char no[100]; memset(no, 0, 100); #ifdef VC60 strcpy(no, m_id); #else _tcscpy_s(no, 100, m_id); #endif g_nSendCode = 29; g_pMainWnd->ProcessChatMessageRequest2((BYTE*)no, 100); g_nSendCode = 0; if (g_bSendOK == 0) { return; } if (m_pImg)delete m_pImg; m_pImg = NULL; ::LoadImageFromBuf(&m_pImg, g_pData, g_nLeng); if (m_pImg == NULL) { AfxMessageBox("无效图片文件!"); return; } CRect rc; GetDlgItem(IDC_STATIC2)->GetWindowRect(rc); ScreenToClient(rc); InvalidateRect(rc); return; } } } void FixedAssets::OnBUTsave() { // TODO: Add your control notification handler code here UpdateData(); if (m_name.IsEmpty() || m_count.IsEmpty()) { AfxMessageBox("资料不全!", MB_ICONINFORMATION); return; } CString sql; CString clerk; int pos = m_comboclerk.GetCurSel(); if (pos != -1) m_comboclerk.GetLBText(pos, clerk); if (m_oldid.IsEmpty())//新增 { if (IsExist()) { AfxMessageBox("已有名称的物品,是否继续?", MB_ICONINFORMATION); return; } sql.Format("insert into fixedassets(name,count,type,clerk,date,remark)values('%s','%s','%s','%s','%s','%s')", m_name, m_count, m_type, clerk, m_date, m_remark); g_sendhead.bsql = 1; g_pMainWnd->ProcessChatMessageRequest2(sql); if (g_bSendOK == 0)return; GetData(); } else//修改 { sql.Format("update fixedassets set name='%s',count='%s',type='%s',clerk='%s',date='%s',remark='%s' where id=%s ", m_name, m_count, m_type, clerk, m_date, m_remark, m_oldid); g_sendhead.bsql = 1; g_pMainWnd->ProcessChatMessageRequest2(sql); if (g_bSendOK == 0)return; GetData(); } } void FixedAssets::OnBUTdel() { // TODO: Add your control notification handler code here POSITION pos; pos = m_List1.GetFirstSelectedItemPosition(); if (pos == NULL) { AfxMessageBox("请先选中您要删除的项目!", MB_ICONINFORMATION); return; return; } if (AfxMessageBox("确认删除吗?", MB_YESNO | MB_ICONINFORMATION) != IDYES)return; int iItem = m_List1.GetNextSelectedItem(pos); CString id = m_List1.GetItemText(iItem, 0); CString sql; sql.Format("delete from fixedassets where id=%s ", id); sql += RENYUAN_REF; g_sendhead.bsql = 1; g_pMainWnd->ProcessChatMessageRequest2(sql); if (g_bSendOK == 0)return; GetData(); } void FixedAssets::GetData() { g_sendhead.bsql = 0; g_sendhead.code[0] = 210; g_sendhead.tabcount = 1; int g_nYearposTemp = g_nYearpos; g_nYearpos = -1; g_pMainWnd->ProcessChatMessageRequest2(1); g_nYearpos = g_nYearposTemp; if (g_bSendOK == 0)return; DataToArray(&m_List1array); FillGrid(); } BOOL FixedAssets::IsExist() { for (int i = 0; i < m_List1array.GetSize(); i++) { if (m_name == m_List1array.ElementAt(i).ElementAt(1))return 1; } return 0; } BOOL FixedAssets::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class try { if (pMsg->message == WM_KEYDOWN) { switch (pMsg->wParam) { case 0x43: // copy if ((GetKeyState(VK_CONTROL) & 0x80)) { GetFocus()->SendMessage(WM_COPY); return TRUE; } break; case 0x56: //Ctrl + V: if ((GetKeyState(VK_CONTROL) & 0x80)) { GetFocus()->SendMessage(WM_PASTE); return TRUE; } break; case 0x58: // cut if ((GetKeyState(VK_CONTROL) & 0x80)) { GetFocus()->SendMessage(WM_CUT); return TRUE; } break; case 0x5A: //undo case 0x59: //redo if ((GetKeyState(VK_CONTROL) & 0x80)) { GetFocus()->SendMessage(WM_UNDO); return TRUE; } break; } } return MyFormView::PreTranslateMessage(pMsg); } catch (...) { } return true; } void FixedAssets::OnBUTload() //上传照片; { // TODO: Add your control notification handler code here UpdateData(); CFileDialog fdlg(true, NULL, "", OFN_HIDEREADONLY, "jpg files(*jpg)|*.jpg||"); if (fdlg.DoModal() != IDOK)return; CString path = fdlg.GetPathName(); CFile fp; if (!fp.Open(path, CFile::modeRead)) { AfxMessageBox("文件打开失败!"); return; } DWORD length = fp.GetLength(); if (length > 1024 * 95) { AfxMessageBox("文件太大,请上传小于95K的图片!"); fp.Close(); return; } BYTE *m_pData = new BYTE[length + 100]; fp.Read(m_pData, length); fp.Close(); char no[100]; memset(no, 0, 100); strcpy(no, m_oldid); memcpy(m_pData + length, no, 100); if (m_pImg)delete m_pImg; m_pImg = NULL; ::LoadImageFromBuf(&m_pImg, path); if (m_pImg == NULL) { AfxMessageBox("无效图片文件!"); return; } g_nSendCode = 28; g_pMainWnd->ProcessChatMessageRequest2(m_pData, length + 100); g_nSendCode = 0; delete[]m_pData; if (g_bSendOK == 0) { if (m_pImg)delete m_pImg; m_pImg = NULL; return; } AfxMessageBox("上传成功!"); CRect rc; GetDlgItem(IDC_STATIC2)->GetWindowRect(rc); ScreenToClient(rc); InvalidateRect(rc); } void FixedAssets::OnBUTdel2() //删除相片; { // TODO: Add your control notification handler code here if (AfxMessageBox("确认删除吗?", MB_YESNO | MB_ICONINFORMATION) != IDYES)return; UpdateData(); char no[100]; memset(no, 0, 100); strcpy(no, m_oldid); g_nSendCode = 28; g_pMainWnd->ProcessChatMessageRequest2((BYTE*)no, 100); g_nSendCode = 0; if (g_bSendOK == 0) { return; } if (m_pImg)delete m_pImg; m_pImg = NULL; CRect rc; GetDlgItem(IDC_STATIC2)->GetWindowRect(rc); ScreenToClient(rc); InvalidateRect(rc); } void FixedAssets::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here if (m_pImg) { CRect rc; GetDlgItem(IDC_STATIC2)->GetWindowRect(rc); ScreenToClient(rc); RectFitDes(m_pImg->GetWidth(), m_pImg->GetHeight(), rc); Graphics dcgraph(dc.GetSafeHdc()); Rect destinationRect(rc.left, rc.top, rc.Width(), rc.Height()); dcgraph.DrawImage(m_pImg, destinationRect, 0, 0, m_pImg->GetWidth(), m_pImg->GetHeight(), UnitPixel); } // Do not call MyFormView::OnPaint() for painting messages } void FixedAssets::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default CRect rc; GetDlgItem(IDC_STATIC2)->GetWindowRect(rc); ScreenToClient(rc); if (rc.PtInRect(point) && m_pImg) { ShowPhoto dlg; dlg.m_pImg = m_pImg; dlg.DoModal(); } MyFormView::OnLButtonDown(nFlags, point); } void FixedAssets::OnButton1() { // TODO: Add your control notification handler code here m_oldid.Empty(); ClearCtrl(); GetDlgItem(IDC_BUTload)->EnableWindow(0); GetDlgItem(IDC_BUTdel2)->EnableWindow(0); }