SmsManager/K_CorpSmsB.cpp

353 lines
8.7 KiB
C++
Raw 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.

// K_CorpSmsB.cpp : implementation file
//
#include "stdafx.h"
#include "smsmanager.h"
#include "K_CorpSmsB.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CK_CorpSmsB dialog
#include "MainFrm.h"
#include "ProcessSocket.h"
#include "DLG_CorpSmsB_Add.h"
CK_CorpSmsB::CK_CorpSmsB(CWnd* pParent /*=NULL*/)
: CDialog(CK_CorpSmsB::IDD, pParent)
{
//{{AFX_DATA_INIT(CK_CorpSmsB)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_bInit = false;
m_bRefresh = false;
}
void CK_CorpSmsB::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CK_CorpSmsB)
DDX_Control(pDX, IDC_K_CORPSMSB_LIST, m_wndList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CK_CorpSmsB, CDialog)
//{{AFX_MSG_MAP(CK_CorpSmsB)
ON_WM_SIZE()
ON_NOTIFY(NM_DBLCLK, IDC_K_CORPSMSB_LIST, OnDblclkBbsList)
ON_NOTIFY(NM_RCLICK, IDC_K_CORPSMSB_LIST, OnRclickBbsList)
ON_NOTIFY(LVN_KEYDOWN, IDC_K_CORPSMSB_LIST, OnKeydownBbsList)
//}}AFX_MSG_MAP
ON_COMMAND( MENU_CORPSMSB_SEE , On_CorpSmsB_See )
ON_COMMAND( MENU_CORPSMSB_REFRESH , On_CorpSmsB_Refresh )
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CK_CorpSmsB message handlers
BOOL CK_CorpSmsB::RefreshInfo()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_OTHER) )
{
return false;
}
REQ_CorpSmsB_See * pSee = new REQ_CorpSmsB_See;
memset(pSee , 0 , sizeof(REQ_CorpSmsB_See));
pSee->lType = 2;
m_pMainFrame->SendFrame(SMSFUNC_CORPSMSB_SEE,(BYTE*)pSee,sizeof(REQ_CorpSmsB_See));
return true;
}
void CK_CorpSmsB::Close()
{
//Çå³ý¶ÓÁÐÖеÄÄÚÈÝ
while (!m_CorpSmsB.IsEmpty())
{
ANS_CorpSmsB_SeeData * pData = m_CorpSmsB.GetHead();
m_CorpSmsB.RemoveHead();
delete pData;
}
}
BOOL CK_CorpSmsB::ReHide()
{
ShowWindow( SW_HIDE );
return true;
}
BOOL CK_CorpSmsB::ReShow(BOOL bRefresh)
{
ShowWindow( SW_SHOW );
if ( bRefresh || !m_bRefresh )
{
RefreshInfo();
}
return true;
}
BOOL CK_CorpSmsB::ProcessSocket(Socket_Head *pHead)
{
//È¡¹ýÂËÐÅÏ¢
if (pHead->lFuncType == SMSFUNC_CORPSMSB_SEE)
{
m_bRefresh = true; //ÒѾ­Ë¢Ð¹ý
ANS_CorpSmsB_See * pSee = (ANS_CorpSmsB_See *)pHead->pFrame;
ANS_CorpSmsB_SeeData * pData = (ANS_CorpSmsB_SeeData *)(pHead->pFrame+sizeof(ANS_CorpSmsB_See));
m_wndList.ShowWindow( SW_HIDE );
m_wndList.DeleteAllItems(); //ɾ³ýÔ­ÓеÄÄÚÈÝ
this->Close(); //¹Ø±ÕÔ­¶ÓÁÐ
TCHAR Buf[128];
TCHAR Buf2[128];
for ( int i=0;i<pSee->lCount;i++ )
{
ANS_CorpSmsB_SeeData * pNewData = new ANS_CorpSmsB_SeeData;
*pNewData = *pData;
POSITION pos = m_CorpSmsB.AddTail(pNewData);
//m_wndList.SetHeadings(_T("ÐòºÅ,50; ×´ ̬,70; ¿ª»§¿¨ºÅ,90; ÉêÇëÆóÒµ,160; ¼ò ³Æ,80; ÁªÏµÈË,80; µç»°,80; ÊÖ»ú,80;ÉêÇëʱ¼ä,120;´¦Àíʱ¼ä,120;"));
_stprintf(Buf , _T("%d") , pSee->lCount-i );
m_wndList.InsertItem( i , Buf ,0 );
m_wndList.SetItemData( i , (DWORD_PTR)pos ); //´æPos
_tcscpy(Buf, _T("δ´¦Àí"));
_tcscpy(Buf2,_T(""));
if ( pData->lStatus == 1 )
_tcscpy(Buf, _T("ÉóºË³É¹¦"));
if ( pData->lStatus == -1 )
_tcscpy(Buf, _T("ÉóºËʧ°Ü"));
COleDateTime t(pData->tProcessTime);
if ( t.GetStatus()==0 )
{
if ( COleDateTime(pData->tProcessTime) - COleDateTime(pData->tSubmitTime) > BBS_PROCESS_TIMEOUT )
{
_tcscpy(Buf2,_T("(¹ýÆÚ)"));
}
}
else
{
if ( COleDateTime::GetCurrentTime() - COleDateTime(pData->tSubmitTime) > BBS_PROCESS_TIMEOUT )
{
_tcscpy(Buf2,_T("(¹ýÆÚ)"));
}
}
_tcscat(Buf, Buf2);
m_wndList.SetItemText(i,1,Buf);
m_wndList.SetItemText(i,2,pData->szKHCardNo);
m_wndList.SetItemText(i,3,pData->szCorpName);
m_wndList.SetItemText(i,4,pData->szSName);
m_wndList.SetItemText(i,5,pData->szLXR);
m_wndList.SetItemText(i,6,pData->szTel);
m_wndList.SetItemText(i,7,pData->szMobile);
_stprintf(Buf, _T("%04d.%02d.%02d %02d:%02d") , pData->tSubmitTime.wYear,pData->tSubmitTime.wMonth,pData->tSubmitTime.wDay,pData->tSubmitTime.wHour,pData->tSubmitTime.wMinute);
m_wndList.SetItemText(i,8,Buf);
_stprintf(Buf, _T("%04d.%02d.%02d %02d:%02d") , pData->tProcessTime.wYear,pData->tProcessTime.wMonth,pData->tProcessTime.wDay,pData->tProcessTime.wHour,pData->tProcessTime.wMinute);
m_wndList.SetItemText(i,9,Buf);
pData ++;
}
m_wndList.ShowWindow( SW_SHOW );
return true;
}
if ( pHead->lFuncType == SMSFUNC_CORPSMSB_SH )
{
CString str;
ANS_CorpSmsB_SH * pCMSH = (ANS_CorpSmsB_SH *)pHead->pFrame;
if ( pCMSH->lType == 0 )
{
str.Format( _T("¿ªÍ¨ÉóºË:²Ù×÷ʧ°Ü£¬Ô­Òò:%s") , pCMSH->szMsg );
MessageBox( str );
}
else
{
MessageBox( _T("¿ªÍ¨ÉóºË:²Ù×÷³É¹¦£¬È·¶¨ºó½«»áË¢ÐÂ״̬!") );
this->RefreshInfo();
}
return true;
}
return true;
}
long CK_CorpSmsB::GetCurrentSelected()
{
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
if ( pos )
{
return m_wndList.GetNextSelectedItem(pos);
}
return -1;
}
BOOL CK_CorpSmsB::OnInitDialog()
{
CDialog::OnInitDialog();
//È¡µÃ¹²ÓòÎÊý
//CMainFrame * pFrame = static_cast <CMainFrame *>((CMainFrame *)AfxGetMainWnd());
this->GetParent()->GetParentFrame();
m_pMainFrame = (CMainFrame *)this->GetParent()->GetParentFrame();
m_pSocket = &m_pMainFrame->m_Socket;
//³õʼ»¯List
m_Image.Create(16,16,ILC_COLOR16|ILC_MASK,5,5);
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_BBS) );
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_LOCK) );
m_wndList.SubClassWindow2();
m_wndList.SetHeadings(_T("ÐòºÅ,50; ×´ ̬,120; ¿ª»§¿¨ºÅ,85; ÉêÇëÆóÒµ,200; ¼ò ³Æ,100; ÁªÏµÈË,100; µç»°,100; ÊÖ»ú,100;ÉêÇëʱ¼ä,140;´¦Àíʱ¼ä,140;"));
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 CK_CorpSmsB::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if ( m_bInit )
{
m_wndList.MoveWindow( 0 , 0 , cx,cy);
}
}
void CK_CorpSmsB::OnDblclkBbsList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
On_CorpSmsB_See();
}
void CK_CorpSmsB::OnRclickBbsList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
ShowRMenu();
}
void CK_CorpSmsB::OnKeydownBbsList(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR;
// TODO: Add your control notification handler code here
*pResult = 0;
}
void CK_CorpSmsB::SetLockItem(long lItem, BOOL bLock)
{
if ( bLock )
m_wndList.SetIconIndex( lItem , 1 );
else
m_wndList.SetIconIndex( lItem , 0 );
}
BOOL CK_CorpSmsB::isLockItem(long lItem, BOOL bShowWarning)
{
BOOL b = (m_wndList.GetIconIndex(lItem) == 1);
if ( b && bShowWarning )
{
MessageBox( _T("Õý¼±»Ëø¶¨£¬ÇëµÈ´ý·þÎñÆ÷·µ»ØºóÔÙ²Ù×÷!") , _T("Ëø¶¨ÖÐ") , MB_ICONINFORMATION );
}
return b;
}
void CK_CorpSmsB::ShowRMenu()
{
if (!m_pMainFrame->GetUserPurview(PURVIEW_OTHER,false)) //ûÓв鿴ȨÏÞ
return ;
CMenu menu;
menu.CreatePopupMenu();
BOOL bLock = false;
BOOL bOper = false;
long lItem = this->GetCurrentSelected();
if ( lItem >= 0 )
{
bLock = isLockItem( lItem , false ); //È¡µÃÊÇ·ñÕýÔÚËø¶¨
}
if ( lItem >=0 && !bLock )
{
menu.AppendMenu(MF_STRING , MENU_CORPSMSB_SEE, _T(" ²é¿´ÉêÇë ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_CORPSMSB_SEE, _T(" ²é¿´ÉêÇë ") );
}
menu.AppendMenu(MF_SEPARATOR );
menu.AppendMenu(MF_STRING , MENU_CORPSMSB_REFRESH, _T(" ˢ Р") );
//ÏÔʾ²Ëµ¥
POINT pt ;
::GetCursorPos( &pt );
//this->ClientToScreen( &pt);
menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
menu.DestroyMenu();
}
void CK_CorpSmsB::On_CorpSmsB_See()
{
if ( !m_pMainFrame->GetUserPurview(PURVIEW_OTHER) )
{
return ;
}
long lItem = GetCurrentSelected();
if ( lItem < 0 )
return ;
POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
POSITION pos2 = pos;
ANS_CorpSmsB_SeeData * pData = m_CorpSmsB.GetNext( pos );
if (pData)
{
DLG_CorpSmsB_Add dlg(this);
dlg.SetParam( pData);
int iRet =dlg.DoModal();
if ( iRet == IDOK ) //ÉóºËͨ¹ý
{
REQ_CorpSmsB_SH * pSH = new REQ_CorpSmsB_SH;
memset(pSH,0,sizeof(REQ_CorpSmsB_SH));
pSH->lItem = lItem;
pSH->lType = 1; //ÉóºË³É¹¦
pSH->lSubmitID = pData->lSubmitID;
pSH->CorpSmsB = dlg.GetParam();
m_pMainFrame->SendFrame(SMSFUNC_CORPSMSB_SH,(BYTE*)pSH,sizeof(REQ_CorpSmsB_SH));
return ;
}
if ( iRet == -1 ) //ÉóºËʧ°Ü
{
REQ_CorpSmsB_SH * pSH = new REQ_CorpSmsB_SH;
memset(pSH,0,sizeof(REQ_CorpSmsB_SH));
pSH->lItem = lItem;
pSH->lType = 0; //ÉóºËʧ°Ü
pSH->lSubmitID = pData->lSubmitID;
pSH->CorpSmsB = dlg.GetParam();
m_pMainFrame->SendFrame(SMSFUNC_CORPSMSB_SH,(BYTE*)pSH,sizeof(REQ_CorpSmsB_SH));
return ;
}
}
}
void CK_CorpSmsB::On_CorpSmsB_Refresh()
{
this->RefreshInfo();
}