#pragma once #include "SImRichEdit.h" // SChatEditLog command target typedef struct tagSTKWaitImage { SStringT strMsgID; DWORD dwWaitImageIndex; SStringT strFileID; SStringT strFileImage; SStringT strImageExt; SStringT strFileSFlag; }stSTKWaitImage; typedef enum { e_TipsType_Info, e_TipsType_Error, e_TipsType_Ok, e_TipsType_Help, e_TipsType_NULL }eTipsType; typedef enum { e_CustomImage_Error, e_CustomImage_Wait, } eCustomImageType; typedef struct tagSTKReoData { eCustomImageType customType; int nInsertPos; DWORD dwData; SStringT strFileName; //ËùµÈ´ýµÄͼƬ tagSTKReoData() { customType = e_CustomImage_Wait; nInsertPos = -1; dwData = 0; } }stSTKReoData; typedef CMap CMapSTKWaitImage; typedef struct _stMBChatFile { SStringT strFileName; SStringT strFilePath; SStringT strFileID; SStringT strFileSFlag; SStringT strMsgFlag; __int64 nFileSize; _stMBChatFile(): nFileSize(0){}; }stMBChatFile; typedef SArray SArrayChatFile; typedef CMap CMapAttachInfo; class CChatUserInfo { public: CChatUserInfo() : Name(L""), Account(L""), AvatarId(L""), AvatarPath(L""), Title(L"") { } CChatUserInfo(LPCWSTR pName, LPCWSTR pAccount, LPCWSTR pAvatarId, LPCWSTR pAvatarPath, LPCWSTR pTitle,CHighTime &tTime) : Name(pName), Account(pAccount), AvatarId(pAvatarId), AvatarPath(pAvatarPath), Title(pTitle), tDateTime(tTime) { } CHighTime tDateTime; SStringT Name; SStringT Account; SStringT AvatarId; SStringT AvatarPath; SStringT Title; }; class AFX_EXT_CLASS SChatEditLog : public SImRichEdit { public: SOUI_CLASS_NAME(SChatEditLog,L"chateditlog") public: SChatEditLog(); virtual ~SChatEditLog(); public: SStringT m_strChatTitle; SStringT m_strTitleFormat; SStringT m_strMyNick; vector m_vecReoData; BOOL m_bWaitingImage; CMapSTKWaitImage m_mapWaitImage; CMBImageInfoArray m_arImageInfo; // ͼƬÊý¾Ý SWindow *m_pButtonCopy; // ¸´Öư´Å¥ SWindow *m_pButtonSaveAs; // Áí´æÎª°´Å¥ CString m_strSaveAsImage; BOOL m_bShowUserName; public: void SetMyNick( LPCTSTR strNick);//Setting the user name in IM void SetShowUserName( BOOL bShowUserName);//Setting the user name in IM void SetChatTitle( LPCTSTR strChatTitle);//Setting the user name in IM virtual SStringT GetImageFolder(); virtual SStringT GetCustomImageFolder(); void WriteNewLine(); static BOOL LoadEmotions(LPCTSTR strFolder = NULL,LPCTSTR strExtrenFolder = NULL); void AddFetchMoreBlock(); void AddSeparatorBar(); UINT AddCenterMessage(SStringT body, UINT insertTo = RECONTENT_LAST); UINT AddCenterMessageWhitoutBuggle(const SStringT body, UINT insertTo = RECONTENT_LAST); UINT AddLeftMessage(CChatUserInfo& info, const SStringT& msgid, const SStringT& body, UINT insertTo = RECONTENT_LAST); UINT AddRightMessage(CChatUserInfo& info, const SStringT& msgid, const SStringT& body,const SStringT msgdata = _T(""),bool bMsgSending =false, UINT insertTo = RECONTENT_LAST); UINT AddSendFileMessage(CChatUserInfo& info, SStringT &strFilePath,SStringT &strFileSFlag,SStringT &strSendFlag,SStringT &strChatId,__int64 nFileSize,const SStringT& msgdata, UINT insertTo = RECONTENT_LAST); UINT AddShareFileMessage(CChatUserInfo& info, SStringT &strFileName,SStringT &strShareID,SStringT &strChatId,__int64 nFileSize, UINT insertTo = RECONTENT_LAST); void AddCustomCenterMessageTip(const SStringT& body,eTipsType nTipsType = e_TipsType_Info); void ClearLog(); UINT AddXMLMessage( CChatUserInfo& info, const SStringT& msgid, const SStringT& body,SStringT &strChatId, UINT insertTo = RECONTENT_LAST); SStringT GetSouiFormatText(const SStringT msgid,SStringT strContent ,SStringT strChatId); SStringT GungHoMsgToSouiFormat(const SStringT& msgid,SStringT strUrl,SStringT strContent ,SStringT &strChatId, SStringT strSubject); SStringT GetFileSouiFormatText(const SStringT& msgid,SArrayChatFile &arFile,SStringT &strChatId,SStringT strFrom,bool bSendMsg = true ); SStringT GetShareFileSouiFormatText(const SStringT& msgid,SStringT &strFileName,SStringT &strFilePath,SStringT &strChatId,__int64 nFileSize ); SStringT GetSouiCharFormat(IXMLDOMElementPtr ptrBody/*,CString strMainCharFormat =_T("")*/); SStringT GetAllContent(); BOOL ReplaceCustomImage( CString strFileID, eCustomImageType nType, LPCTSTR strWantedImage); BOOL SetTransferSize(CString strSendFlag, CString strSendFileFlag, __int64 nSizeFile,__int64 nSzeTransfer); BOOL StartTransferFile(CString strSendFlag, CString strSendFileFlag,long nTrID); BOOL SetTransferSpeed(CString strSendFlag, CString strSendFileFlag,CString strSpeed); BOOL SetTransferFinsish(CString strSendFlag, CString strSendFileFlag, CString strFileID); BOOL SetDownloadFinsish(CString strSendFlag, CString strSendFileFlag, CString strFilePath); BOOL CancelFileTransfer(CString strSendFlag, CString strSendFileFlag); BOOL SetTransferFailed(CString strSendFlag, CString strSendFileFlag,CString strErrorInfo = _T("")); BOOL SendMsgFailed(CString strSendFlag,CString strErrorInfo = _T("")); BOOL ResendMsg(CString strSendFlag ); BOOL SendMsgSuccess(CString strSendFlag,CString strMsgID ); BOOL CheckTransferFileCancel(CString strSendFlag, CString strSendFileFlag); BOOL SetTransferFileContinue(CString strSendFlag, CString strSendFileFlag); BOOL SetSendMsgSuccess(CString strSendFlag, CString strMsgID,CString strState = _T("")); BOOL SetTransferFileDeleted(CString strSendFlag, CString strSendFileFlag,CString strTipInfo = _T("")); SStringT GetSOUIContent(SStringT strSendFlag); SStringT TransferFormatText(SArrayChatFile &arFileInfo,SStringT strSouiText,SStringT &strMsgData); BOOL CheckMsgIsLoad(CString strMsgID); float GetFontSize( int nFontHeight); void ParseImageInfo(CString strMsg, UINT insertTo=RECONTENT_LAST); void GetImageArrayWithCurIndex(CMBImageInfoArray & arImage,int &nCurIndex,CString strKey); void AppendRTF(CString strRTF); public: virtual UINT OnGetDlgCode(); virtual SStringW GetSelectedContent(CHARRANGE* lpchrg/*=NULL*/); protected: void ClearReoVector(); BOOL IsReoIndexValid( int nIndex); SStringT GetSysFaceShortCut(int nIndex); int GetSysFaceIndex(CString strShortCut); SStringT GetSysFaceDesc(SStringT strShortCut); SStringT GetSysFacePath(int nIndex); BOOL CheckMsgIsOneFileOrImage(CString strMsg); BOOL GetLineRect(int nLineNo, SOUI::CRect& rcLine); protected: SOUI_MSG_MAP_BEGIN() MSG_WM_LBUTTONDOWN(OnLButtonDown) MSG_WM_LBUTTONDBLCLK(OnLButtonDblClick) MSG_WM_MOUSEMOVE(OnMouseMove) //MSG_WM_MOUSELEAVE(OnMouseLeave) SOUI_MSG_MAP_END() void OnLButtonDown(UINT nFlags, SOUI::CPoint point); void OnLButtonDblClick(UINT nFlags, SOUI::CPoint point); void OnMouseMove(UINT nFlags, SOUI::CPoint point); // void OnMouseLeave(); private: SStringT GetSelectedText(CHARRANGE* lpchrg/*=NULL*/, bool bIsFirst, bool bIsLast); SStringT GetOneMsgSelectedContent(CHARRANGE* lpchrg/*=NULL*/); BOOL CheckCharFormatFontSame(CHARFORMAT &cfCharFormat,CHARFORMAT &cfCharFormat2); void GetCharFormatFont(CHARFORMAT &cfCharFormat,CString& strFontName,COLORREF &clrTextColor,int& nFontSize,BOOL &bFontBold,BOOL &bFontUnderline,BOOL &bFontItalic); SStringT GetMsgContent(int nIndex); SStringT GetMsgText(int nIndex); SStringT GetGungHoMsgType(int nMsgType); SStringT GetFormatFontText(CString strFontName = _T("΢ÈíÑźÚ"),COLORREF clrTextColor=0,int nFontSize = 10,BOOL bFontBold = FALSE,BOOL bFontUnderline= FALSE,BOOL bFontItalic= FALSE); SStringT GetFormatTextBody(SStringT strText,SStringT strCharFormat); };