CorpSms/FSWTMobile.cpp
2025-02-27 16:58:16 +08:00

456 lines
12 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// FSWTMobile.cpp : implementation file
//
#include "stdafx.h"
#include "corpsms.h"
#include "FSWTMobile.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CFSWTMobile dialog
#include "MainFrm.h"
#include "ProcessSocket.h"
#include "DLG_SWTMobile_Add.h"
CFSWTMobile::CFSWTMobile(CWnd* pParent /*=NULL*/)
: CDialog(CFSWTMobile::IDD, pParent)
{
//{{AFX_DATA_INIT(CFSWTMobile)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_bInit = false;
m_bRefresh = false;
m_bRefresh2= false;
}
void CFSWTMobile::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CFSWTMobile)
DDX_Control(pDX, IDC_SWTMOBILE_S1, m_B_S1);
DDX_Control(pDX, IDC_SWTMOBILE_LIST, m_wndList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CFSWTMobile, CDialog)
//{{AFX_MSG_MAP(CFSWTMobile)
ON_WM_SIZE()
ON_NOTIFY(NM_RCLICK, IDC_SWTMOBILE_LIST, OnRclickSWTMobileList)
ON_NOTIFY(NM_DBLCLK, IDC_SWTMOBILE_LIST, OnDblclkSWTMobileList)
ON_NOTIFY(LVN_KEYDOWN, IDC_SWTMOBILE_LIST, OnKeydownSWTMobileList)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_SWTMOBILE_LIST, OnItemchangedSWTMobileList)
//}}AFX_MSG_MAP
ON_COMMAND( MENU_SWTMOBILE_ADD , On_R_Add )
ON_COMMAND( MENU_SWTMOBILE_MODIFY , On_R_Modify )
ON_COMMAND( MENU_SWTMOBILE_DELETE , On_R_Delete )
ON_COMMAND( MENU_SWTMOBILE_GETURL , On_R_GetURL )
ON_COMMAND( MENU_SWTMOBILE_REFRESH, On_R_Refresh )
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFSWTMobile message handlers
BOOL CFSWTMobile::ReHide()
{
ShowWindow( SW_HIDE );
return true;
}
BOOL CFSWTMobile::ReShow(BOOL bRefresh)
{
ShowWindow( SW_SHOW );
if ( bRefresh || !m_bRefresh )
{
RefreshInfo();
}
return true;
}
BOOL CFSWTMobile::RefreshInfo()
{
REQ_SWTMobile_See * pSee = new REQ_SWTMobile_See;
pSee->lCorpID = m_pMainFrame->m_lCorpID;
pSee->lUserID = m_pMainFrame->m_lUserID;
m_pMainFrame->SendFrame( SMSFUNC_SWTMOBILE_SEE , (BYTE*)pSee , sizeof( REQ_SWTMobile_See ) ); //<2F><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>
return true;
}
BOOL CFSWTMobile::OnInitDialog()
{
CDialog::OnInitDialog();
//ȡ<>ù<EFBFBD><C3B9>ò<EFBFBD><C3B2><EFBFBD>
//CMainFrame * pFrame = static_cast <CMainFrame *>((CMainFrame *)AfxGetMainWnd());
this->GetParent()->GetParentFrame();
m_pMainFrame = (CMainFrame *)this->GetParent()->GetParentFrame();
m_pSocket = &m_pMainFrame->m_Socket;
m_AdoRS.SetAdoConnection( &m_pMainFrame->m_adoConnection );
//<2F><>ʼ<EFBFBD><CABC>List
m_Image.Create(16,16,ILC_COLOR32|ILC_MASK,5,5);
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_SMSEMAIL) );
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_LOCK) );
m_wndList.SubClassWindow2();
m_wndList.SetHeadings(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,50; ״̬,60; <20><> <20><>,120; <20>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD>,120;"));
m_wndList.SetGridLines(true);
m_wndList.SetImageList(&m_Image,LVSIL_SMALL);
m_bInit = true;
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CFSWTMobile::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if ( m_bInit )
{
m_wndList.MoveWindow( 0 , 0 , cx,cy-50);
CRect rect,rect2;
m_B_S1.GetWindowRect(&rect);
rect2.top = cy-40;
rect2.bottom = rect2.top+rect.Height();
rect2.left = (cx-rect.Width())/2;
rect2.right= rect2.left+rect.Width();
m_B_S1.MoveWindow(&rect2);
}
}
BOOL CFSWTMobile::ProcessSocket(Socket_Head *pHead)
{
//<2F>
if (pHead->lFuncType == SMSFUNC_SWTMOBILE_SEE)
{
m_bRefresh = true; //<2F><>ˢ<EFBFBD><CBA2>
m_bRefresh2 = true; //<2F><><EFBFBD><EFBFBD>ˢ<EFBFBD><CBA2>
ANS_SWTMobile_See * pSee = (ANS_SWTMobile_See *)pHead->pFrame;
ANS_SWTMobile_Data * pData = (ANS_SWTMobile_Data *)(pHead->pFrame+sizeof(ANS_SWTMobile_See));
m_wndList.ShowWindow( SW_HIDE ); //<2F>ӿ<EFBFBD><D3BF><EFBFBD>ʾ<EFBFBD>ٶ<EFBFBD>
m_wndList.DeleteAllItems();
TCHAR szTemp[32]={0};
for ( int i=0 ; i<pSee->lCount;i++ )
{
//д<><D0B4><EFBFBD>б<EFBFBD>
m_wndList.InsertItem( i , _itot(i+1,szTemp,10),0);
m_wndList.SetItemText(i,2,pData->szName);
m_wndList.SetItemText(i,3,pData->szMobile);
if ( pData->lStatus == 1 )
m_wndList.SetItemText(i,1,_T(" <20><><EFBFBD><EFBFBD>"));
else
m_wndList.SetItemText(i,1,_T("δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
m_wndList.SetItemData(i,pData->lSWTMobileID);
pData ++;
}
m_AdoRS.Close();
m_wndList.ShowWindow( SW_SHOW ); //<2F>ӿ<EFBFBD><D3BF><EFBFBD>ʾ<EFBFBD>ٶ<EFBFBD>
m_bRefresh2 = false;
return true;
}
//<2F><><EFBFBD><EFBFBD>SWTMobile
if (pHead->lFuncType == SMSFUNC_SWTMOBILE_ADD)
{
ANS_SWTMobile_Add * pAdd = (ANS_SWTMobile_Add *)pHead->pFrame;
if ( pAdd->bOK ) //<2F><><EFBFBD>ӳɹ<D3B3>
{
long lCount = m_wndList.GetItemCount();
TCHAR szTemp[32]={0};
//<2F><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD>
//д<><D0B4><EFBFBD>б<EFBFBD>
m_wndList.InsertItem( lCount , _itot(lCount+1,szTemp,10),0);
m_wndList.SetItemText(lCount,2,pAdd->szName);
m_wndList.SetItemText(lCount,3,pAdd->szMobile);
if ( pAdd->lStatus == 1 )
m_wndList.SetItemText(lCount,1,_T(" <20><><EFBFBD><EFBFBD>"));
else
m_wndList.SetItemText(lCount,1,_T("δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
m_wndList.SetItemData(lCount,pAdd->lSWTMobileID);
}
return true;
}
//<2F>޸<EFBFBD>SWTMobile
if (pHead->lFuncType == SMSFUNC_SWTMOBILE_MODIFY)
{
ANS_SWTMobile_Modify * pModify = (ANS_SWTMobile_Modify *)pHead->pFrame;
if ( pModify->bOK ) //<2F>޸ijɹ<C4B3>
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD>
//д<><D0B4><EFBFBD>б<EFBFBD>
if ( !pModify->bOnlyStatus ) //<2F><><EFBFBD>޸<EFBFBD>״̬
{
if ( pModify->lStatus == 1 )
m_wndList.SetItemText(pModify->lItemID,1,_T(" <20><><EFBFBD><EFBFBD>"));
else
m_wndList.SetItemText(pModify->lItemID,1,_T("δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
m_wndList.SetItemText(pModify->lItemID,2,pModify->szName);
m_wndList.SetItemText(pModify->lItemID,3,pModify->szMobile);
}
}
return true;
}
//ɾ<><C9BE><EFBFBD>û<EFBFBD>
if (pHead->lFuncType == SMSFUNC_SWTMOBILE_DEL)
{
ANS_SWTMobile_Del * pDel = (ANS_SWTMobile_Del *)pHead->pFrame;
ANS_SWTMobile_DelData * pDelData = (ANS_SWTMobile_DelData *)(pHead->pFrame+sizeof(ANS_SWTMobile_Del));
m_wndList.ShowWindow( SW_HIDE ); //Ϊ<>˼ӿ<CBBC><D3BF><EFBFBD>ʾ<EFBFBD>ٶ<EFBFBD>
for ( int i = pDel->lCount-1 ; i>=0 ; i-- )
{
long lSWTMobileID = m_wndList.GetItemData(pDelData[i].lItem);
if ( pDelData[i].lSWTMobileID && lSWTMobileID == pDelData[i].lSWTMobileID) //ɾ<><C9BE><EFBFBD>ɹ<EFBFBD>
{
m_wndList.DeleteItem(pDelData[i].lItem); //<2F><>ListCtrl<72><6C>ɾ<EFBFBD><C9BE>
}
}
m_wndList.ShowWindow( SW_SHOW ); //Ϊ<>˼ӿ<CBBC><D3BF><EFBFBD>ʾ<EFBFBD>ٶ<EFBFBD>
return true;
}
return false;
}
void CFSWTMobile::OnRclickSWTMobileList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
ShowRMenu();
}
void CFSWTMobile::OnDblclkSWTMobileList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
On_R_Modify();
}
void CFSWTMobile::OnKeydownSWTMobileList(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR;
*pResult = 0;
if ( pLVKeyDow->wVKey == VK_DELETE )
{
On_R_Delete();
}
if ( pLVKeyDow->wVKey == VK_INSERT)
{
On_R_Add();
}
if ( pLVKeyDow->wVKey == VK_SPACE)
{
On_R_Modify();
}
if ( pLVKeyDow->wVKey == 'R' || pLVKeyDow->wVKey == 'r')
{
On_R_Refresh();
}
}
void CFSWTMobile::OnItemchangedSWTMobileList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
*pResult = 0;
if ( m_wndList.GetSelectedCount() > 1 ) //<2F><><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return ;
if ( m_bRefresh2 )
return ;
//ԭ<>ǽ<EFBFBD><C7BD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if ( pNMListView->uNewState==8192 && pNMListView->uOldState== 4096 )
{
REQ_Calendar_Modify * pModify = new REQ_Calendar_Modify;
memset(pModify,0,sizeof(REQ_Calendar_Modify));
pModify->bOnlyStatus = true; //<2F>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>ֻ<EFBFBD><D6BB>״̬
pModify->lItemID = pNMListView->iItem;
pModify->lCalendarID = m_wndList.GetItemData(pNMListView->iItem);
pModify->lCorpID = m_pMainFrame->m_lCorpID;
pModify->lUserID = m_pMainFrame->m_lUserID;
pModify->lStatus = 1; //<2F><><EFBFBD><EFBFBD>
m_pMainFrame->SendFrame( SMSFUNC_CALENDAR_MODIFY , (BYTE*)pModify , sizeof( REQ_Calendar_Modify ) ); //<2F><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>
}
//ԭ<><D4AD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD>
if ( pNMListView->uNewState==4096 && pNMListView->uOldState== 8192 )
{
REQ_Calendar_Modify * pModify = new REQ_Calendar_Modify;
memset(pModify,0,sizeof(REQ_Calendar_Modify));
pModify->bOnlyStatus = true; //<2F>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>ֻ<EFBFBD><D6BB>״̬
pModify->lItemID = pNMListView->iItem;
pModify->lCalendarID = m_wndList.GetItemData(pNMListView->iItem);
pModify->lCorpID = m_pMainFrame->m_lCorpID;
pModify->lUserID = m_pMainFrame->m_lUserID;
pModify->lStatus = 0; //<2F><><EFBFBD><EFBFBD>
m_pMainFrame->SendFrame( SMSFUNC_CALENDAR_MODIFY , (BYTE*)pModify , sizeof( REQ_Calendar_Modify ) ); //<2F><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>
}
}
void CFSWTMobile::ShowRMenu()
{
CMenu menu;
menu.CreatePopupMenu();
BOOL bLock = false;
long lItem = this->GetCurrentSelected();
//<2F><><EFBFBD><EFBFBD>
menu.AppendMenu(MF_STRING , MENU_SWTMOBILE_ADD, _T(" <20><><EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD> ") );
menu.AppendMenu(MF_SEPARATOR );
//<2F>޸<EFBFBD>
if ( lItem >=0 && !bLock)
{
menu.AppendMenu(MF_STRING , MENU_SWTMOBILE_MODIFY, _T(" <20><> <20><> ") );
menu.AppendMenu(MF_STRING , MENU_SWTMOBILE_DELETE, _T(" ɾ <20><> ") );
menu.AppendMenu(MF_SEPARATOR );
menu.AppendMenu(MF_STRING , MENU_SWTMOBILE_GETURL, _T(" <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD> ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_SWTMOBILE_MODIFY, _T(" <20><> <20><> ") );
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_SWTMOBILE_DELETE, _T(" ɾ <20><> ") );
menu.AppendMenu(MF_SEPARATOR );
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_SWTMOBILE_GETURL, _T(" <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD> ") );
}
menu.AppendMenu(MF_SEPARATOR );
menu.AppendMenu(MF_STRING , MENU_SWTMOBILE_REFRESH, _T(" ˢ <20><> ") );
//<2F><>ʾ<EFBFBD>˵<EFBFBD>
POINT pt ;
::GetCursorPos( &pt );
//this->ClientToScreen( &pt);
menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
menu.DestroyMenu();
}
void CFSWTMobile::On_R_Add()
{
ANS_SWTMobile_Data data={0};
data.lStatus = 1;
DLG_SWTMobile_Add dlg(this);
dlg.SetParam(data,false);
if ( dlg.DoModal()==IDOK )
{
REQ_SWTMobile_Add * pAdd = new REQ_SWTMobile_Add;
memset(pAdd,0,sizeof(REQ_SWTMobile_Add));
pAdd->lUserID = m_pMainFrame->m_lUserID;
pAdd->lStatus = dlg.m_Data.lStatus;
_tcscpy(pAdd->szName , dlg.m_Data.szName );
_tcscpy(pAdd->szMobile , dlg.m_Data.szMobile );
m_pMainFrame->SendFrame( SMSFUNC_SWTMOBILE_ADD , (BYTE*)pAdd , sizeof( REQ_SWTMobile_Add ) ); //<2F><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>
}
}
void CFSWTMobile::On_R_Modify()
{
long lItem = this->GetCurrentSelected();
if ( lItem < 0 )
return ;
ANS_SWTMobile_Data data=GetSWTMobileData(lItem);
DLG_SWTMobile_Add dlg(this);
dlg.SetParam(data,false);
if ( dlg.DoModal()==IDOK )
{
REQ_SWTMobile_Modify * pModify = new REQ_SWTMobile_Modify;
memset(pModify,0,sizeof(REQ_SWTMobile_Modify));
pModify->bOnlyStatus = false; //<2F>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>״̬
pModify->lItemID = lItem;
pModify->lSWTMobileID= data.lSWTMobileID;
pModify->lUserID = m_pMainFrame->m_lUserID;
pModify->lStatus = dlg.m_Data.lStatus;
_tcscpy(pModify->szName , dlg.m_Data.szName );
_tcscpy(pModify->szMobile , dlg.m_Data.szMobile );
m_pMainFrame->SendFrame( SMSFUNC_SWTMOBILE_MODIFY , (BYTE*)pModify , sizeof( REQ_SWTMobile_Modify ) ); //<2F><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>
}
}
void CFSWTMobile::On_R_GetURL()
{
long lItem = this->GetCurrentSelected();
if ( lItem < 0 )
return ;
ANS_SWTMobile_Data data=GetSWTMobileData(lItem);
DLG_SWTMobile_Add dlg(this);
dlg.SetParam(data,true);
dlg.DoModal();
}
void CFSWTMobile::On_R_Delete()
{
long lCount = m_wndList.GetSelectedCount();
long lSize = sizeof(REQ_SWTMobile_Del)+sizeof(ANS_SWTMobile_DelData)*lCount;
BYTE * pDelSend = new BYTE[lSize];memset(pDelSend,0,lSize);
REQ_SWTMobile_Del * pDel = (REQ_SWTMobile_Del *)pDelSend; //ͷ
ANS_SWTMobile_DelData * pDelData = (ANS_SWTMobile_DelData *)(pDelSend+sizeof(REQ_SWTMobile_Del));
pDel->lCount = lCount;
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
while(pos)
{
pDelData->lItem = m_wndList.GetNextSelectedItem(pos);
pDelData->lSWTMobileID= m_wndList.GetItemData(pDelData->lItem);
pDelData ++;
}
m_pMainFrame->SendFrame( SMSFUNC_SWTMOBILE_DEL , pDelSend , lSize );
}
void CFSWTMobile::On_R_Refresh()
{
RefreshInfo();
}
long CFSWTMobile::GetCurrentSelected()
{
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
if ( pos )
{
return m_wndList.GetNextSelectedItem(pos);
}
return -1;
}
void CFSWTMobile::OnOK()
{
//CDialog::OnOK();
}
void CFSWTMobile::OnCancel()
{
//CDialog::OnCancel();
}
ANS_SWTMobile_Data CFSWTMobile::GetSWTMobileData(long lItem)
{
CString strTemp;
//m_wndList.SetHeadings(_T("<22><><EFBFBD><EFBFBD>,50; ״̬,60; <20><> <20><>,120; <20>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD>,120;"));
ANS_SWTMobile_Data data= {0};
data.lSWTMobileID = m_wndList.GetItemData(lItem);
strTemp = m_wndList.GetItemText(lItem,1);
data.lStatus = 0;
if ( strTemp == _T(" <20><><EFBFBD><EFBFBD>") )
data.lStatus = 1;
strTemp = m_wndList.GetItemText(lItem,2);
_tcscpy(data.szName , strTemp );
strTemp = m_wndList.GetItemText(lItem,3);
_tcscpy(data.szMobile , strTemp );
return data;
}