2025-02-27 16:58:16 +08:00
|
|
|
|
// DLG_QXBox_Group_Chat.cpp : ʵ<><CAB5><EFBFBD>ļ<EFBFBD>
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
#include "stdafx.h"
|
|
|
|
|
#include "CorpSms.h"
|
|
|
|
|
#include "DLG_QXBox_Group_Chat.h"
|
|
|
|
|
#include "afxdialogex.h"
|
|
|
|
|
#include "FQXBox_Group.h"
|
|
|
|
|
#include "MainFrm.h"
|
|
|
|
|
// DLG_QXBox_Group_Chat <20>Ի<EFBFBD><D4BB><EFBFBD>
|
|
|
|
|
#include "..\public\ProxySocket\CBase64Coding.hpp"
|
|
|
|
|
|
|
|
|
|
IMPLEMENT_DYNAMIC(DLG_QXBox_Group_Chat, CDialogEx)
|
|
|
|
|
|
|
|
|
|
DLG_QXBox_Group_Chat::DLG_QXBox_Group_Chat(CWnd* pParent /*=NULL*/)
|
|
|
|
|
: CDialogEx(DLG_QXBox_Group_Chat::IDD, pParent)
|
|
|
|
|
{
|
|
|
|
|
m_pSendData = NULL;
|
|
|
|
|
m_lSendDataCount = 0;
|
|
|
|
|
m_pSendMsg = NULL;
|
|
|
|
|
memset(&m_GroupPro,0,sizeof(m_GroupPro));
|
|
|
|
|
|
|
|
|
|
m_pDlgGroup = (CFQXBox_Group *)pParent;
|
|
|
|
|
m_strSend = _T("");
|
|
|
|
|
m_bFirstSend = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DLG_QXBox_Group_Chat::~DLG_QXBox_Group_Chat()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void DLG_QXBox_Group_Chat::DoDataExchange(CDataExchange* pDX)
|
|
|
|
|
{
|
|
|
|
|
CDialogEx::DoDataExchange(pDX);
|
|
|
|
|
DDX_Control(pDX, IDC_QXBOX_GROUP_CHAT_LOG, m_wndLog);
|
|
|
|
|
DDX_Text(pDX, IDC_QXBOX_GROUP_CHAT_SEND, m_strSend);
|
|
|
|
|
DDV_MaxChars(pDX, m_strSend, 800);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(DLG_QXBox_Group_Chat, CDialogEx)
|
|
|
|
|
ON_WM_DESTROY()
|
|
|
|
|
ON_BN_CLICKED(IDOK, &DLG_QXBox_Group_Chat::OnBnClickedOk)
|
|
|
|
|
ON_WM_SIZE()
|
|
|
|
|
ON_WM_CLOSE()
|
|
|
|
|
ON_BN_CLICKED(IDC_QXBOX_GROUP_CHAT_SENDBMP, &DLG_QXBox_Group_Chat::OnBnClickedQxboxGroupChatSendbmp)
|
|
|
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// DLG_QXBox_Group_Chat <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void DLG_QXBox_Group_Chat::SetParam(REQ_QXBox_Group_SendData GroupPro,REQ_QXBox_Group_SendData * pSendData,CString * pMsgData , long lCount)
|
|
|
|
|
{
|
|
|
|
|
if ( m_pSendData )
|
|
|
|
|
{delete [] m_pSendData ; m_pSendData = NULL;}
|
|
|
|
|
if ( m_pSendMsg )
|
|
|
|
|
{delete [] m_pSendMsg ; m_pSendMsg = NULL;}
|
|
|
|
|
|
|
|
|
|
m_GroupPro = GroupPro;
|
|
|
|
|
m_pSendData = pSendData;
|
|
|
|
|
m_pSendMsg = pMsgData;
|
|
|
|
|
m_lSendDataCount = lCount;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOL DLG_QXBox_Group_Chat::OnInitDialog()
|
|
|
|
|
{
|
|
|
|
|
CDialogEx::OnInitDialog();
|
|
|
|
|
|
|
|
|
|
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD>ij<EFBFBD>ʼ<EFBFBD><CABC>
|
|
|
|
|
|
|
|
|
|
CString str;
|
|
|
|
|
CString strTemp;
|
|
|
|
|
if ( _tcslen(m_GroupPro.szMobile)>0 )
|
|
|
|
|
str.Format(_T("<EFBFBD><EFBFBD> %s(%s) <20><><EFBFBD><EFBFBD>") , m_GroupPro.szSender,m_GroupPro.szMobile );
|
|
|
|
|
else
|
|
|
|
|
str.Format(_T("<EFBFBD><EFBFBD> %s <20><><EFBFBD><EFBFBD>") , m_GroupPro.szGroupName );
|
|
|
|
|
this->SetWindowText(str);
|
|
|
|
|
|
|
|
|
|
ShowChatLog();
|
|
|
|
|
|
|
|
|
|
m_bInit = true;
|
|
|
|
|
AddItemToResize(); //<2F><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
|
|
|
// <20>쳣: OCX <20><><EFBFBD><EFBFBD>ҳӦ<D2B3><D3A6><EFBFBD><EFBFBD> FALSE
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void DLG_QXBox_Group_Chat::ShowChatLog2(REQ_QXBox_Group_SendData SendData , CString strMsg , BOOL bShowEnd)
|
|
|
|
|
{
|
|
|
|
|
CString str;
|
|
|
|
|
CString strTemp;
|
|
|
|
|
|
|
|
|
|
if ( _tcslen(SendData.szMobile)>0 && SendData.lMsgType==4)
|
|
|
|
|
strTemp.Format(_T("%s(%s)"),SendData.szSender,SendData.szMobile);
|
|
|
|
|
else
|
|
|
|
|
strTemp = SendData.szSender;
|
|
|
|
|
|
|
|
|
|
str.Format(_T("%s %04d.%02d.%02d %02d:%02d:%02d\r\n") , strTemp,SendData.tSubTime.wYear,SendData.tSubTime.wMonth,SendData.tSubTime.wDay,SendData.tSubTime.wHour,SendData.tSubTime.wMinute,SendData.tSubTime.wSecond);
|
|
|
|
|
m_wndLog.StartIndent2(0);
|
|
|
|
|
m_wndLog.SetColor2(RGB(0,0,255) );
|
|
|
|
|
m_wndLog.SetSel(-1,-1); //ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
m_wndLog.ReplaceSel(str);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
m_wndLog.StartIndent2(200); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
m_wndLog.SetColor2(RGB(0,0,0) );
|
|
|
|
|
if ( SendData.lMsgDataType==0 ) //<2F>ı<EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
m_wndLog.ReplaceSel(strMsg);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
#ifdef _UNICODE
|
|
|
|
|
CStringA strD = CW2A(strMsg);
|
|
|
|
|
#else
|
|
|
|
|
CStringA strD = strMsg;
|
|
|
|
|
#endif
|
|
|
|
|
long lSize = strD.GetLength();
|
|
|
|
|
CByteArray array;
|
|
|
|
|
CBase64Coding base64coding;
|
|
|
|
|
base64coding.Decode(strD,array);
|
|
|
|
|
|
|
|
|
|
long nSize = array.GetCount() + 8;
|
|
|
|
|
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, nSize);
|
|
|
|
|
void* pData = GlobalLock(hGlobal);
|
|
|
|
|
memcpy(pData, array.GetData(), array.GetCount());
|
|
|
|
|
GlobalUnlock(hGlobal);
|
|
|
|
|
|
|
|
|
|
IStream* pStream = NULL;
|
|
|
|
|
if (CreateStreamOnHGlobal(hGlobal, TRUE, &pStream) == S_OK)
|
|
|
|
|
{
|
|
|
|
|
HRESULT hr;
|
|
|
|
|
LPPICTURE gpPicture=NULL;
|
|
|
|
|
HBITMAP hBitmap=NULL;
|
|
|
|
|
//OLE_HANDLE m_picHandle;
|
|
|
|
|
if ((hr = OleLoadPicture(pStream, nSize, FALSE, IID_IPicture, (LPVOID *)&gpPicture)) == S_OK)
|
|
|
|
|
{
|
|
|
|
|
gpPicture->get_Handle((OLE_HANDLE*)&hBitmap);
|
|
|
|
|
if ( hBitmap )
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
HBITMAP hAbc = CopyBitmap(hBitmap);
|
|
|
|
|
m_wndLog.InsertGraph(hAbc);
|
|
|
|
|
//CImageDataObject::InsertBitmap(m_wndLog.GetIRichEditOle(),hBitmap);
|
|
|
|
|
}
|
|
|
|
|
catch(...)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
/*
|
|
|
|
|
//<2F><><EFBFBD>ˣ<EFBFBD>IPicture<72>ӿڽ<D3BF><DABD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD>濪ʼ<E6BFAA><CABC>ͼƬ
|
|
|
|
|
//hDC<44><43><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD>ͼ<EFBFBD>豸
|
|
|
|
|
HDC hDC = ::GetDC(this->GetSafeHwnd());
|
|
|
|
|
long hmWidth=0;
|
|
|
|
|
long hmHeight=0;
|
|
|
|
|
gpPicture->get_Width(&hmWidth);
|
|
|
|
|
gpPicture->get_Height(&hmHeight);
|
|
|
|
|
//ת<><D7AA>himetric<69><63><EFBFBD><EFBFBD>Ϊpixels<6C><73><EFBFBD>룬1Ӣ<31><D3A2>=25.4<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
int nWidth = MulDiv(hmWidth, GetDeviceCaps(hDC, LOGPIXELSX), 2540);
|
|
|
|
|
int nHeight = MulDiv(hmHeight, GetDeviceCaps(hDC, LOGPIXELSY), 2540);
|
|
|
|
|
RECT rc;
|
|
|
|
|
GetClientRect(&rc);
|
|
|
|
|
//IPicture::Render<65><72>ʾͼƬ
|
|
|
|
|
gpPicture->Render(hDC, 0, 0, nWidth, nHeight, 0, hmHeight, hmWidth, -hmHeight, &rc);
|
|
|
|
|
*/
|
|
|
|
|
}
|
|
|
|
|
gpPicture->Release();
|
|
|
|
|
}
|
|
|
|
|
pStream->Release();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
str = _T("\r\n\r\n");
|
|
|
|
|
m_wndLog.SetSel(-1,-1);
|
|
|
|
|
m_wndLog.ReplaceSel(str);
|
|
|
|
|
|
|
|
|
|
if ( bShowEnd )
|
|
|
|
|
m_wndLog.PostMessage(WM_VSCROLL, SB_BOTTOM,0); //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʾ
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void DLG_QXBox_Group_Chat::ShowChatLog()
|
|
|
|
|
{
|
|
|
|
|
CString str;
|
|
|
|
|
CString strTemp;
|
|
|
|
|
for ( int i=m_lSendDataCount-1 ; i>=0 ; i-- )
|
|
|
|
|
{
|
|
|
|
|
if ( i==0 )
|
|
|
|
|
ShowChatLog2(m_pSendData[i],m_pSendMsg[i],true);
|
|
|
|
|
else
|
|
|
|
|
ShowChatLog2(m_pSendData[i],m_pSendMsg[i],false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void DLG_QXBox_Group_Chat::OnDestroy()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if ( m_pSendData )
|
|
|
|
|
{delete [] m_pSendData ; m_pSendData = NULL;}
|
|
|
|
|
if ( m_pSendMsg )
|
|
|
|
|
{delete [] m_pSendMsg ; m_pSendMsg = NULL;}
|
|
|
|
|
|
|
|
|
|
CDialogEx::OnDestroy();
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
delete this;
|
|
|
|
|
}
|
|
|
|
|
catch(...)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
HBITMAP DLG_QXBox_Group_Chat::CopyBitmap(HBITMAP hSourceHbitmap)
|
|
|
|
|
{
|
|
|
|
|
CDC sourceDC;
|
|
|
|
|
CDC destDC;
|
|
|
|
|
sourceDC.CreateCompatibleDC(NULL);
|
|
|
|
|
destDC.CreateCompatibleDC(NULL);
|
|
|
|
|
//The bitmap information.
|
|
|
|
|
BITMAP bm = {0};
|
|
|
|
|
//Get the bitmap information.
|
|
|
|
|
::GetObject(hSourceHbitmap, sizeof(bm), &bm);
|
|
|
|
|
// Create a bitmap to hold the result
|
|
|
|
|
HBITMAP hbmResult = ::CreateCompatibleBitmap(CClientDC(NULL), bm.bmWidth, bm.bmHeight);
|
|
|
|
|
HBITMAP hbmOldSource = (HBITMAP)::SelectObject(sourceDC.m_hDC, hSourceHbitmap);
|
|
|
|
|
HBITMAP hbmOldDest = (HBITMAP)::SelectObject(destDC.m_hDC, hbmResult);
|
|
|
|
|
destDC.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &sourceDC, 0, 0, SRCCOPY );
|
|
|
|
|
// Restore DCs
|
|
|
|
|
::SelectObject(sourceDC.m_hDC, hbmOldSource);
|
|
|
|
|
::SelectObject(destDC.m_hDC, hbmOldDest);
|
|
|
|
|
|
|
|
|
|
sourceDC.DeleteDC();
|
|
|
|
|
destDC.DeleteDC();
|
|
|
|
|
|
|
|
|
|
return hbmResult;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOL DLG_QXBox_Group_Chat::ShowFirstSend()
|
|
|
|
|
{
|
|
|
|
|
CString str;
|
|
|
|
|
if ( _ttol(m_GroupPro.szGroupID)<=0 && _tcslen(m_GroupPro.szMobile)>0 )
|
|
|
|
|
{
|
|
|
|
|
str.Format(_T("<EFBFBD>㽫<EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD>%s(%s)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>!") , m_GroupPro.szSender,m_GroupPro.szMobile);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
str.Format(_T("<EFBFBD>㽫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥ<EFBFBD><EFBFBD>(%s)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>!") , m_GroupPro.szGroupName);
|
|
|
|
|
}
|
|
|
|
|
int iRet = MessageBox(str,_T("ѡ<EFBFBD><EFBFBD>") , MB_ICONQUESTION|MB_YESNO);
|
|
|
|
|
if ( iRet!= IDYES )
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
m_bFirstSend = false;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void DLG_QXBox_Group_Chat::OnBnClickedOk()
|
|
|
|
|
{
|
|
|
|
|
//CDialogEx::OnOK();
|
|
|
|
|
if(!UpdateData(true) )
|
|
|
|
|
return ;
|
|
|
|
|
|
|
|
|
|
if ( m_strSend.GetLength()<=0 )
|
|
|
|
|
{
|
|
|
|
|
MessageBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>") ,_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), MB_ICONWARNING );
|
|
|
|
|
GetDlgItem(IDC_QXBOX_GROUP_CHAT_SEND)->SetFocus();
|
|
|
|
|
return ;
|
|
|
|
|
}
|
|
|
|
|
m_GroupPro.lMsgDataType = 0;
|
|
|
|
|
m_GroupPro.lMsgType = 0; //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
_tcscpy(m_GroupPro.szMsgImageName,_T(""));
|
|
|
|
|
_tcscpy(m_GroupPro.szSender,m_pDlgGroup->m_pMainFrame->m_pCurUser->szUser);
|
|
|
|
|
if ( m_bFirstSend )
|
|
|
|
|
{
|
|
|
|
|
if (!ShowFirstSend() )
|
|
|
|
|
return ;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( m_pDlgGroup->SendMsgData(m_GroupPro,m_strSend,_T(""),1)) //<2F><><EFBFBD>ͷ<EFBFBD>ʽΪ1
|
|
|
|
|
{
|
|
|
|
|
ShowChatLog2(m_GroupPro,m_strSend,true);
|
|
|
|
|
m_strSend = _T("");
|
|
|
|
|
UpdateData(false);
|
|
|
|
|
GetDlgItem(IDC_QXBOX_GROUP_CHAT_SEND)->SetFocus();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void DLG_QXBox_Group_Chat::OnSize(UINT nType, int cx, int cy)
|
|
|
|
|
{
|
|
|
|
|
CDialogEx::OnSize(nType, cx, cy);
|
|
|
|
|
//if ( !m_bInit ) return;
|
|
|
|
|
|
|
|
|
|
m_Resizer.Resize(this); //<2F>ƶ<EFBFBD><C6B6>ؼ<EFBFBD>
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void DLG_QXBox_Group_Chat::AddItemToResize()
|
|
|
|
|
{
|
|
|
|
|
m_Resizer.Add(this, IDC_QXBOX_GROUP_CHAT_LOG, RESIZE_LOCKRIGHT|RESIZE_LOCKLEFT|RESIZE_LOCKBOTTOM|RESIZE_LOCKTOP);
|
|
|
|
|
|
|
|
|
|
m_Resizer.Add(this, IDC_QXBOX_GROUP_CHAT_SEND, RESIZE_LOCKRIGHT|RESIZE_LOCKBOTTOM|RESIZE_LOCKLEFT);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
m_Resizer.Add(this, IDOK, RESIZE_LOCKRIGHT|RESIZE_LOCKBOTTOM);
|
|
|
|
|
m_Resizer.Add(this, IDC_QXBOX_GROUP_CHAT_SENDBMP, RESIZE_LOCKRIGHT|RESIZE_LOCKBOTTOM);
|
|
|
|
|
m_Resizer.Add(this, IDCANCEL, RESIZE_LOCKRIGHT|RESIZE_LOCKBOTTOM);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void DLG_QXBox_Group_Chat::OnCancel()
|
|
|
|
|
{
|
|
|
|
|
CDialogEx::OnCancel();
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
this->m_pDlgGroup->ChatPop_Del(this);
|
|
|
|
|
}
|
|
|
|
|
catch(...)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DestroyWindow();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void DLG_QXBox_Group_Chat::OnClose()
|
|
|
|
|
{
|
|
|
|
|
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ
|
|
|
|
|
|
|
|
|
|
CDialogEx::OnClose();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void DLG_QXBox_Group_Chat::OnBnClickedQxboxGroupChatSendbmp()
|
|
|
|
|
{
|
|
|
|
|
long m_lMaxImageSize = 1024*1024; //ͼƬ<CDBC>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>4M
|
|
|
|
|
|
|
|
|
|
TCHAR szFile[ 256 ]={0};
|
|
|
|
|
TCHAR szFileB[ 256 ]={0};
|
|
|
|
|
*szFileB = NULL;
|
|
|
|
|
|
|
|
|
|
OPENFILENAME sOpen;
|
|
|
|
|
sOpen.lStructSize = sizeof( sOpen );
|
|
|
|
|
sOpen.hwndOwner = this->m_hWnd ;
|
|
|
|
|
sOpen.Flags = OFN_EXPLORER|OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY;
|
|
|
|
|
sOpen.lpstrFilter = _T("ͼƬ<EFBFBD>ļ<EFBFBD>\0*.jpg*;*.bmp*;*.gif*\0");
|
|
|
|
|
sOpen.lpstrDefExt = _T("");
|
|
|
|
|
sOpen.lpstrCustomFilter = NULL;
|
|
|
|
|
sOpen.nMaxCustFilter = 0;
|
|
|
|
|
sOpen.lpstrFile = szFile;
|
|
|
|
|
sOpen.nMaxFile = sizeof( szFile );
|
|
|
|
|
sOpen.lpstrFileTitle = szFileB;
|
|
|
|
|
sOpen.nMaxFileTitle = sizeof( szFileB );
|
|
|
|
|
sOpen.lpstrInitialDir = NULL;
|
|
|
|
|
sOpen.lpstrTitle = _T("ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ͼƬ<EFBFBD>ļ<EFBFBD>");
|
|
|
|
|
if ( ::GetOpenFileName( &sOpen ) )
|
|
|
|
|
{
|
|
|
|
|
CString strName = sOpen.lpstrFile;
|
|
|
|
|
CString strTemp = strName;
|
|
|
|
|
CString strTemp2;
|
|
|
|
|
strTemp.MakeUpper();
|
|
|
|
|
//<2F>ж<EFBFBD><D0B6>ļ<EFBFBD><C4BC><EFBFBD>չ<EFBFBD><D5B9><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
|
|
|
|
|
if ( !(strTemp.Find(_T(".BMP"))>0 || strTemp.Find(_T(".JPG"))>0 || strTemp.Find(_T(".GIF"))>0) ) //ΪExcel<65><6C>ʽ<EFBFBD><CABD><EFBFBD>ļ<EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
MessageBox(_T("ֻ֧<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ͼƬ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>"),_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"),MB_ICONWARNING);
|
|
|
|
|
return ;
|
|
|
|
|
}
|
|
|
|
|
//<2F>ж<EFBFBD><D0B6>ļ<EFBFBD><C4BC><EFBFBD>С<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
|
|
|
|
|
CFileStatus status;
|
|
|
|
|
CFile::GetStatus(strName,status);
|
|
|
|
|
if ( status.m_size > m_lMaxImageSize)
|
|
|
|
|
{
|
|
|
|
|
MessageBox(_T("ͼƬ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>") , _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"),MB_ICONWARNING);
|
|
|
|
|
return ;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
m_GroupPro.lMsgDataType = 1; //ͼƬ
|
|
|
|
|
m_GroupPro.lMsgType = 0; //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
_tcscpy(m_GroupPro.szMsgImageName,strName);
|
|
|
|
|
_tcscpy(m_GroupPro.szSender,m_pDlgGroup->m_pMainFrame->m_pCurUser->szUser);
|
|
|
|
|
if ( m_bFirstSend )
|
|
|
|
|
{
|
|
|
|
|
if (!ShowFirstSend() )
|
|
|
|
|
return ;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( m_pDlgGroup->SendMsgData(m_GroupPro,_T(""),strName,1)) //<2F><><EFBFBD>ͷ<EFBFBD>ʽΪ1
|
|
|
|
|
{
|
|
|
|
|
CFile file;
|
|
|
|
|
CString strDataMsg=strName;
|
|
|
|
|
if ( file.Open(strName , CFile::modeRead|CFile::shareDenyNone ) )
|
|
|
|
|
{
|
2025-04-14 17:24:47 +08:00
|
|
|
|
DWORD lSize = (DWORD)file.GetLength();
|
2025-02-27 16:58:16 +08:00
|
|
|
|
if ( lSize<200 * 1024 )
|
|
|
|
|
{
|
|
|
|
|
BYTE * pData = new BYTE[lSize];
|
|
|
|
|
file.Read(pData , lSize);
|
|
|
|
|
CBase64Coding base64coding;
|
|
|
|
|
base64coding.Encode(pData,lSize,strDataMsg);
|
|
|
|
|
delete pData;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
ShowChatLog2(m_GroupPro,strDataMsg,true);
|
|
|
|
|
GetDlgItem(IDC_QXBOX_GROUP_CHAT_SEND)->SetFocus();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|