Files
Sun1602/Client/GameClient/SystemChatDialog.h
T
2022-10-26 12:25:11 +08:00

106 lines
2.5 KiB
C++

#pragma once
#include "uiBase.h"
#include "ChatMsg.h"
#include "VScrollDialog.h"
class InterfaceManager;
#define MAX_SYSTEM_CHATMESSAGE_LENGTH 256
#define MAX_LIST_LINE 150
#ifdef _NA_008800_20160510_COMBAT_RECORD_SYSTEM
#define MAX_SHOW_LINE 11
#else
#define MAX_SHOW_LINE 6
#endif // _NA_008800_20160510_COMBAT_RECORD_SYSTEM
enum SYSTEMCHAT_POS
{
SYSTEMCHAT_LIST,
SYSTEMCHAT_VSCROLL,
SYSTEMCHAT_BTN_EXIT,
SYSTEMCHAT_MAX
};
class SystemChatDialog : public uiBase, public VScrollDialog
{
public:
SystemChatDialog(InterfaceManager* pUIMan);
~SystemChatDialog();
VOID Init( CDrawBase * pDrawBase );
virtual VOID Release();
virtual VOID MessageProc( SI_MESSAGE * pMessage );
virtual VOID NetworkProc( MSG_BASE * pMsg );
virtual VOID Process(DWORD dwTick);
virtual VOID OnUpdateSolarDialog();
virtual VOID OnShowWindow(BOOL val);
//virtual BOOL InterSectRect( POINT point );
//virtual void UpdatePosition();
int GetGapOfDialogYPosition(){ return m_iGapOfDialogYPosition; }
void SetGapOfDialogYPosition(int value){ m_iGapOfDialogYPosition = value; }
void MoveDefaultPosition();
void AddString(TCHAR * pszMessage);
void UpdateScrollBar();
void UpdateScrollPosition();
void PushBackChatMsg( ChatMsg * pChatMsg );
protected:
void InitControll();
BOOL CheckControll();
CControlWZ * getControl( POSTYPE AtPos );
POSTYPE getCtrlIDToPos( WzID wzId );
protected:
CCtrlVScrollWZ* vscroll_control();
bool GetScrollArea(RECT& area);
bool OnVScrollThumb(SI_MESSAGE* message);
bool OnVScrollUp(SI_MESSAGE* message);
bool OnVScrollDown(SI_MESSAGE* message);
protected:
static WzID m_wzId[SYSTEMCHAT_MAX];
CCtrlListWZ * m_pChatListCtrl;
CCtrlVScrollWZ * m_pChatVScrollCtrl;
BOOL m_bInitControll;
int m_iCurScrollValue;
int m_iMaxScrollValue;
std::deque<ChatMsg *> m_ChatSystemMsg;
RECT m_Rect;
int m_iGapOfDialogYPosition;
};
//------------------------------------------------------------------------------
/**
*/
inline
POSTYPE
SystemChatDialog::getCtrlIDToPos( WzID wzId )
{
for( POSTYPE i = 0 ; i < SYSTEMCHAT_MAX ; ++i )
{
if( m_wzId[i] == wzId )
{
return i;
}
}
return SYSTEMCHAT_MAX;
}
//------------------------------------------------------------------------------
/**
*/
inline
CControlWZ *
SystemChatDialog::getControl( POSTYPE AtPos )
{
ASSERT( AtPos < SYSTEMCHAT_MAX );
return GetControlWZ( m_wzId[AtPos] );
}