// DLG_CheckUp_Mms_See.cpp : implementation file
//
#include "stdafx.h"
#include "smsmanager.h"
#include "DLG_CheckUp_Mms_See.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// DLG_CheckUp_Mms_See dialog
#include "MainFrm.h"
#include "CheckupMmsDlg.h"
DLG_CheckUp_Mms_See::DLG_CheckUp_Mms_See(CWnd* pParent /*=NULL*/)
: CDialog(DLG_CheckUp_Mms_See::IDD, pParent)
, m_str_Audit_YYSStatus(_T(""))
, m_str_Audit_Time(_T(""))
, m_str_Audit_SubmitID(_T(""))
, m_str_Audit_Status(_T(""))
, m_str_Audit_Opinion(_T(""))
{
//{{AFX_DATA_INIT(DLG_CheckUp_Mms_See)
m_strCorpID = _T("");
m_strSize = _T("");
m_strSubTime = _T("");
m_strTitle = _T("");
//}}AFX_DATA_INIT
m_pDlg = (CCheckupMmsDlg *)pParent;
m_pMainFrame = NULL;
memset(&m_Mms,0,sizeof(m_Mms));
m_pMmsBuf=NULL;
m_lMmsSize=0;
m_bMmsOK = false;
memset(&m_MMS_Head , 0 , sizeof(m_MMS_Head));
memset(&m_MMS_Z , 0 , sizeof(m_MMS_Z));
m_MMS_CurZ = 0;
}
void DLG_CheckUp_Mms_See::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(DLG_CheckUp_Mms_See)
DDX_Control(pDX, IDC_CHECKUPSEE_Z, m_S_Msg);
DDX_Text(pDX, IDC_CHECKUPSEE_CORPID, m_strCorpID);
DDX_Text(pDX, IDC_CHECKUPSEE_SIZE, m_strSize);
DDX_Text(pDX, IDC_CHECKUPSEE_SUBTIME, m_strSubTime);
DDX_Text(pDX, IDC_CHECKUPSEE_TITLE, m_strTitle);
//}}AFX_DATA_MAP
DDX_Text(pDX, IDC_CHECKUPSEE_AUDIT_YYSSTATUS, m_str_Audit_YYSStatus);
DDX_Text(pDX, IDC_CHECKUPSEE_AUDIT_TIME, m_str_Audit_Time);
DDX_Text(pDX, IDC_CHECKUPSEE_AUDIT_SUBMITID, m_str_Audit_SubmitID);
DDX_Text(pDX, IDC_CHECKUPSEE_AUDIT_STATUS, m_str_Audit_Status);
DDX_Text(pDX, IDC_CHECKUPSEE_AUDIT_OPTINION, m_str_Audit_Opinion);
}
BEGIN_MESSAGE_MAP(DLG_CheckUp_Mms_See, CDialog)
//{{AFX_MSG_MAP(DLG_CheckUp_Mms_See)
ON_BN_CLICKED(IDC_CHECKUPSEE_UP, OnCheckupseeUp)
ON_BN_CLICKED(IDC_CHECKUPSEE_DOWN, OnCheckupseeDown)
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_CHECKUPSEE_COPYTXT, &DLG_CheckUp_Mms_See::OnBnClickedCheckupseeCopytxt)
ON_BN_CLICKED(IDC_CHECKUPSEE_SAVEBMP, &DLG_CheckUp_Mms_See::OnBnClickedCheckupseeSavebmp)
ON_BN_CLICKED(IDC_CHECKUPSEE_SAVEMIDI, &DLG_CheckUp_Mms_See::OnBnClickedCheckupseeSavemidi)
ON_BN_CLICKED(IDC_CHECKUPSEE_SAVEMMS, &DLG_CheckUp_Mms_See::OnBnClickedCheckupseeSavemms)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// DLG_CheckUp_Mms_See message handlers
void DLG_CheckUp_Mms_See::SetParam(ANS_REQ_Mms_GetFile2 mms, BYTE *pBuf, long lBufLen,CMainFrame * pMainFrame)
{
m_Mms=mms;
m_pMmsBuf=pBuf;
m_lMmsSize=lBufLen;
m_pMainFrame = pMainFrame;
}
BOOL DLG_CheckUp_Mms_See::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_strCorpID.Format(_T("%d") , m_Mms.lCorpID );
m_strTitle = m_Mms.szTitle;
m_strSize.Format(_T("%.2fk") , (float)m_Mms.lmmSize/1024.0f );
m_strSubTime.Format(_T("%04d.%02d.%02d %02d:%02d") , m_Mms.tCreateTime.wYear,m_Mms.tCreateTime.wMonth,m_Mms.tCreateTime.wDay,m_Mms.tCreateTime.wHour,m_Mms.tCreateTime.wMinute);
if (m_Mms.lMmsType == 1) //视频短信
{
m_str_Audit_Status = CCheckupMmsDlg::GetStatus(m_Mms.Audit_Status);
m_str_Audit_SubmitID = m_Mms.Audit_SubmitID;
m_str_Audit_Time.Format(_T("%04d.%02d.%02d %02d:%02d"), m_Mms.Audit_Cmcc_Time.wYear, m_Mms.Audit_Cmcc_Time.wMonth, m_Mms.Audit_Cmcc_Time.wDay, m_Mms.Audit_Cmcc_Time.wHour, m_Mms.Audit_Cmcc_Time.wMinute);
m_str_Audit_Opinion = m_Mms.Audit_Opinion;
m_str_Audit_YYSStatus = _T("移动:");
m_str_Audit_YYSStatus.Append(CCheckupMmsDlg::GetStatus(m_Mms.Audit_Cmcc_Status));
m_str_Audit_YYSStatus.Append(_T(";联通:"));
m_str_Audit_YYSStatus.Append(CCheckupMmsDlg::GetStatus(m_Mms.Audit_Unicom_Status));
m_str_Audit_YYSStatus.Append(_T(";电信:"));
m_str_Audit_YYSStatus.Append(CCheckupMmsDlg::GetStatus(m_Mms.Audit_Telcom_Status));
GetDlgItem(IDC_CHECKUPSEE_AUDIT_YYSSTATUS)->ShowWindow(SW_SHOW);
}
UpdateData(false);
//彩信
m_Html.CreateFromStatic(IDC_CHECKUPSEE_HTML, this);
m_Html.Navigate(_T("about:blank"),navNoHistory); //默认打开空白网页
m_Html.SetSilent(true); //不弹出各种窗口。
m_bMmsOK = ReadMms();
m_MMS_CurZ =0;
Mms_Showmm();
if ( !m_pMainFrame->GetUserPurview(PURVIEW_MANAGER_ADD,false) ) //没有管理员权限,不能保存文件
{
//GetDlgItem(IDC_CHECKUPSEE_COPYTXT)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_CHECKUPSEE_SAVEMMS)->ShowWindow(SW_HIDE);
//GetDlgItem(IDC_CHECKUPSEE_SAVEBMP)->ShowWindow(SW_HIDE);
//GetDlgItem(IDC_CHECKUPSEE_SAVEMIDI)->ShowWindow(SW_HIDE);
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
BOOL DLG_CheckUp_Mms_See::ReadMms()
{
BOOL bRead=true;
BYTE * p = m_pMmsBuf;
long lmmSizeCount=0;
memset(&m_MMS_Head , 0 , sizeof(m_MMS_Head));
memset(&m_MMS_Z , 0 , sizeof(m_MMS_Z));
int lVer = 0;
memcpy(&lVer , p , sizeof(lVer));p=p+sizeof(lVer);
if ( lVer == MOBSET_MMS_VER_1 )
{
MMS_Head_1 MMS_Head;
MMS_Z_1 MMS_Z[MOBSET_MMS_MAX_Z]={0};
MMS_Head.lVer = lVer;
memcpy(((BYTE*)&MMS_Head)+sizeof(MMS_Head.lVer) , p , sizeof(MMS_Head)-sizeof(MMS_Head.lVer)); p = p+sizeof(MMS_Head)-sizeof(MMS_Head.lVer);
if ( MMS_Head.lVer == MOBSET_MMS_VER_1 && MMS_Head.lSize == m_Mms.lmmSize && MMS_Head.lZCount>=0 && MMS_Head.lZCount<=MOBSET_MMS_MAX_Z ) //数据是相同的
{
for ( int i=0 ; i
本帧空白,或彩信文件损坏!
%s" , strHtmlShow ); strHtml += strW; } } strHtml+= L""; CStringA strHtml2; #ifdef _UNICODE strHtml2=this->ConvertUnicodeToUtf8(strHtml); #else strHtml2 = strHtml; //ConvertGBKToUtf8(strHtml2); #endif; /* #ifdef _DEBUG CFile file(_T("d:\\abc.html") , CFile::modeCreate|CFile::modeReadWrite); file.Write(strHtml2,strHtml2.GetLength()); file.Close(); #endif */ IHTMLDocument2* pDoc = (IHTMLDocument2*)m_Html.GetHtmlDocument(); if ( !pDoc ) { return false; } HGLOBAL hMem; LPSTREAM pStream; IPersistStreamInit *pPersistStream; hMem = ::GlobalAlloc(GPTR, (strHtml2.GetLength() + 1)); strcpy((char *)hMem, strHtml2); HRESULT hr = ::CreateStreamOnHGlobal(hMem, TRUE, &pStream); if(FAILED(hr)) { ::GlobalFree(hMem); return false; } hr = pDoc->QueryInterface(IID_IPersistStreamInit, (void**)&pPersistStream); pDoc->Release(); if(FAILED(hr)) { ::GlobalFree(hMem); //能运行到这里,说明GetHtmlDocument()返回的对象没有IID_IPersistStreamInit接口,没道理呀! return false; } if(pPersistStream == NULL) { pStream->Release(); return false; } hr = pPersistStream->InitNew(); hr = pPersistStream->Load(pStream); hr = pPersistStream->Release(); pStream->Release(); /* CStringA strHtml2; strHtml2=this->ConvertUnicodeToUtf8(strHtml); IHTMLDocument2* pDoc = (IHTMLDocument2*)m_Html.GetHtmlDocument(); if ( !pDoc ) { return false; } HGLOBAL hMem; LPSTREAM pStream; IPersistStreamInit *pPersistStream; hMem = ::GlobalAlloc(GPTR, (strHtml.GetLength() + 1) * sizeof WCHAR); strcpy((char *)hMem, strHtml2); HRESULT hr = ::CreateStreamOnHGlobal(hMem, TRUE, &pStream); if(FAILED(hr)) { ::GlobalFree(hMem); return false; } hr = pDoc->QueryInterface(IID_IPersistStreamInit, (void**)&pPersistStream); pDoc->Release(); if(FAILED(hr)) { ::GlobalFree(hMem); //能运行到这里,说明GetHtmlDocument()返回的对象没有IID_IPersistStreamInit接口,没道理呀! return false; } if(pPersistStream == NULL) { pStream->Release(); return false; } hr = pPersistStream->InitNew(); hr = pPersistStream->Load(pStream); hr = pPersistStream->Release(); pStream->Release(); */ Mms_Showscroll(); ShowZMsg(); return true; } BOOL DLG_CheckUp_Mms_See::Mms_DeleteDirectory(CString sDirName) { CFileFind tempFind; TCHAR sTempFileFind[512] ; _stprintf(sTempFileFind,_T("%s\\*.*"),sDirName); BOOL IsFinded = tempFind.FindFile(sTempFileFind); while (IsFinded) { IsFinded = tempFind.FindNextFile(); if (!tempFind.IsDots()) { TCHAR sFoundFileName[512]; _tcscpy(sFoundFileName,tempFind.GetFileName().GetBuffer(200)); if (tempFind.IsDirectory()) { TCHAR sTempDir[512]; _stprintf(sTempDir,_T("%s\\%s"),sDirName,sFoundFileName); Mms_DeleteDirectory(sTempDir); } else { TCHAR sTempFileName[512]; _stprintf(sTempFileName,_T("%s\\%s"),sDirName,sFoundFileName); DeleteFile(sTempFileName); } } } tempFind.Close(); //if(!RemoveDirectory(sDirName)) //{ // return FALSE; //} return TRUE; } BOOL DLG_CheckUp_Mms_See::Mms_Showscroll() { HRESULT hr; IHTMLDocument2* pDoc = (IHTMLDocument2*)m_Html.GetHtmlDocument(); if ( !pDoc ) { return false; } /* IHTMLDocument3 *piDoc3 = NULL; IHTMLElement *piDocElement = NULL; IHTMLElement2 *piDocElement2 = NULL; pDoc->QueryInterface(__uuidof(IHTMLDocument3), (void**) &piDoc3); piDoc3->get_documentElement(&piDocElement); piDocElement->QueryInterface(__uuidof(IHTMLElement2), (void**) &piDocElement2); long l=0; piDocElement2->get_clientHeight(&l); */ IHTMLElement *phtmlElement = NULL; pDoc->get_body(&phtmlElement); pDoc->Release(); if ( !phtmlElement ) { return false; } IHTMLElement2 *phtmlElement2 = NULL; hr = phtmlElement->QueryInterface(IID_IHTMLElement2, (void**)&phtmlElement2); if(FAILED(hr)) { phtmlElement->Release(); return false; } if ( !phtmlElement2) { phtmlElement->Release(); return false; } long lHeight=0; long lHeight4=0; phtmlElement2->get_clientHeight(&lHeight); phtmlElement2->get_scrollHeight(&lHeight4); phtmlElement2->Release(); /* long lHeight2=0; CRect rect; m_Html.GetWindowRect(&rect); lHeight2=rect.Height(); */ IHTMLBodyElement *phtmlbody = NULL; phtmlElement->QueryInterface(IID_IHTMLBodyElement, (void**)&phtmlbody); if(phtmlbody != NULL) { if (lHeight