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

268 lines
6.2 KiB
C++

// DLG_FindSR.cpp : implementation file
//
#include "stdafx.h"
#include "corpsms.h"
#include "DLG_FindSR.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// DLG_FindSR dialog
#include "MainFrm.h"
#include "DLG_FindSR_Send.h"
DLG_FindSR::DLG_FindSR(CWnd* pParent /*=NULL*/)
: CDialog(DLG_FindSR::IDD, pParent)
{
//{{AFX_DATA_INIT(DLG_FindSR)
m_bGAddress = FALSE;
m_bPAddress = FALSE;
m_lMon = -1;
m_lDay = -1;
m_lDay2 = -1;
m_lMon2 = -1;
//}}AFX_DATA_INIT
m_pMainFrame = (CMainFrame*)pParent;
m_bHasGAddress = true;
m_bHasPAddress = true;
}
void DLG_FindSR::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(DLG_FindSR)
DDX_Control(pDX, IDC_FINDSR_S1, m_S_S1);
DDX_Control(pDX, IDC_FINDSR_LIST, m_wndList);
DDX_Check(pDX, IDC_FINDSR_GADDRESS, m_bGAddress);
DDX_Check(pDX, IDC_FINDSR_PADDRESS, m_bPAddress);
DDX_CBIndex(pDX, IDC_FINDSR_MON, m_lMon);
DDX_CBIndex(pDX, IDC_FINDSR_DAY, m_lDay);
DDX_CBIndex(pDX, IDC_FINDSR_DAY2, m_lDay2);
DDX_CBIndex(pDX, IDC_FINDSR_MON2, m_lMon2);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(DLG_FindSR, CDialog)
//{{AFX_MSG_MAP(DLG_FindSR)
ON_BN_CLICKED(IDC_FINDSR_GADDRESS, OnFindsrGaddress)
ON_BN_CLICKED(IDC_FINDSR_PADDRESS, OnFindsrPaddress)
ON_BN_CLICKED(IDC_FINDSR_FIND, OnFindsrFind)
ON_BN_CLICKED(IDC_FINDSR_ADD, OnFindsrAdd)
ON_NOTIFY(NM_RCLICK, IDC_FINDSR_LIST, OnRclickFindsrList)
ON_NOTIFY(LVN_KEYDOWN, IDC_FINDSR_LIST, OnKeydownFindsrList)
//}}AFX_MSG_MAP
ON_COMMAND( MENU_FINDSR_DEL , On_User_Del )
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// DLG_FindSR message handlers
BOOL DLG_FindSR::OnInitDialog()
{
CDialog::OnInitDialog();
//³õʼ»¯Áбí
//´´½¨Í¼ÏñÁбí
m_Image.Create( 20 , 20 , ILC_COLOR32|ILC_MASK , 5 , 1);
CBitmap bmp;
bmp.LoadBitmap( IDB_L_USER_NOR );
m_Image.Add( &bmp , RGB(193,193,193) ); //ÉèÖÃ
//¼ÓÈëͼÏñÁбí
m_wndList.SetImageList(&m_Image,LVSIL_SMALL);
m_wndList.SetBkColor( RGB(237,238,188) );
m_wndList.SetTextBkColor( RGB(237,238,188) );
m_wndList.SubClassWindow2();
m_wndList.SetHeadings(_T(" ÐÕ Ãû,80; êÇ ³Æ,80;ÊÖ»úºÅÂë,100; ÉúÈÕ,60; ±¸ ×¢,150;"));
m_wndList.SetGridLines(true);
m_bGAddress = true;
m_bPAddress = true;
if ( m_bHasGAddress && !m_bHasPAddress )
{
m_bGAddress = true;
m_bPAddress = false;
GetDlgItem(IDC_FINDSR_GADDRESS)->EnableWindow(false);
GetDlgItem(IDC_FINDSR_PADDRESS)->EnableWindow(false);
}
if ( !m_bHasGAddress && m_bHasPAddress )
{
m_bGAddress = false;
m_bPAddress = true;
GetDlgItem(IDC_FINDSR_GADDRESS)->EnableWindow(false);
GetDlgItem(IDC_FINDSR_PADDRESS)->EnableWindow(false);
}
#ifdef MOBSET_CARD_VER
GetDlgItem(IDC_FINDSR_GADDRESS)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_FINDSR_PADDRESS)->ShowWindow(SW_HIDE);
#endif
/*
SYSTEMTIME t;GetLocalTime(&t);
m_lMon = t.wMonth-1;
m_lDay = t.wDay - 1;
m_lMon2= t.wMonth-1;
m_lDay2= t.wDay - 1;
*/
m_lMon = 0;
m_lDay = 0;
m_lMon2= 11;
m_lDay2= 30;
UpdateData(false);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void DLG_FindSR::SetParam(BOOL bGAddress,BOOL bPAddress)
{
m_bHasGAddress = bGAddress;
m_bHasPAddress = bPAddress;
}
void DLG_FindSR::OnFindsrGaddress()
{
if ( !UpdateData(true) )
return ;
if ( !m_bGAddress & !m_bPAddress )
{
m_bPAddress = true;
UpdateData(false);
}
}
void DLG_FindSR::OnFindsrPaddress()
{
if ( !UpdateData(true) )
return ;
if ( !m_bGAddress & !m_bPAddress )
{
m_bGAddress = true;
UpdateData(false);
}
}
void DLG_FindSR::OnFindsrFind()
{
if ( !UpdateData(true) )
return ;
m_wndList.ShowWindow(SW_HIDE );
m_wndList.DeleteAllItems();
if ( m_pMainFrame )
{
m_pMainFrame->FindSR(m_lMon+1,m_lDay+1,m_lMon2+1,m_lDay2+1,m_bGAddress,m_bPAddress,&m_wndList);
}
m_wndList.ShowWindow(SW_SHOW);
CString str;
str.Format( _T("²éÕÒ½á¹û:%d") , m_wndList.GetItemCount() );
m_S_S1.SetWindowText(str);
}
void DLG_FindSR::OnFindsrAdd()
{
if ( !m_pMainFrame )
return;
long lCount = m_wndList.GetItemCount();
if ( lCount <= 0 )
return ;
DLG_FindSR_Send dlg(this);
if ( dlg.DoModal()==IDOK )
{
Send_User * pUser = new Send_User[lCount];
memset(pUser,0,sizeof(Send_User)*lCount);
for ( int i=0 ; i<lCount;i++ )
{
m_wndList.GetItemText(i,0,pUser[i].szName,sizeof(pUser->szName));
m_wndList.GetItemText(i,1,pUser[i].szNickName,sizeof(pUser->szNickName));
m_wndList.GetItemText(i,2,pUser[i].szMobile,sizeof(pUser->szMobile));
m_wndList.GetItemText(i,3,pUser[i].szBZ,sizeof(pUser->szBZ));
}
if ( m_pMainFrame->m_pFuncView->m_DLGSend.List_New() )
{
m_pMainFrame->m_pFuncView->m_DLGSend.SetListSR(true); //Ϊ·¢ËÍÉúÈÕ
m_pMainFrame->m_pFuncView->On_User_List_AddUser(lCount,pUser);
this->EndDialog(IDOK);
}
}
}
void DLG_FindSR::OnRclickFindsrList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
ShowRMenu();
}
void DLG_FindSR::OnKeydownFindsrList(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR;
*pResult = 0;
if ( pLVKeyDow->wVKey == VK_DELETE )
{
On_User_Del();
}
}
void DLG_FindSR::ShowRMenu()
{
CMenu menu;
menu.CreatePopupMenu();
long lCount = m_wndList.GetSelectedCount();
//ɾ³ý
if ( lCount >0 )
{
menu.AppendMenu(MF_STRING , MENU_FINDSR_DEL, _T(" ɾ ³ý ") );
}
else
{
menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , MENU_FINDSR_DEL , _T(" ɾ ³ý ") );
}
//ÏÔʾ²Ëµ¥
POINT pt ;
::GetCursorPos( &pt );
//this->ClientToScreen( &pt);
menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
menu.DestroyMenu();
}
void DLG_FindSR::On_User_Del()
{
long lRet = MessageBox( _T("ȷʵҪɾ³ýÑ¡ÖеÄÓû§Âð£¿"),_T("ÌáÎÊ"),MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2);
if ( lRet != IDYES )
return ;
long lCount = m_wndList.GetSelectedCount();
long *lDel = new long[lCount+2];
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
long i = 0;
while(pos)
{
lDel[i]= m_wndList.GetNextSelectedItem(pos);
i ++;
}
//µ¹×ªÉ¾³ý
m_wndList.ShowWindow( SW_HIDE ); //¼Ó¿ìÏÔʾµÄËÙ¶È
for ( i = lCount ; i>0 ; i-- )
{
m_wndList.DeleteItem(lDel[i-1]); //´ÓÁбíÖÐɾ³ý
}
m_wndList.ShowWindow( SW_SHOW ); //¼Ó¿ìÏÔʾµÄËÙ¶È
delete lDel;
}