// 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; iiSendMessage(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; iiEnableWindow(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); strcpy(no, m_id); 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; imessage==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(...) { } } 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); }