You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
3.1 KiB
118 lines
3.1 KiB
// File: roomlist.h
|
|
|
|
#ifndef _ROOMLIST_H_
|
|
#define _ROOMLIST_H_
|
|
|
|
#include "GenWindow.h"
|
|
|
|
class CParticipant;
|
|
|
|
void TileBltWatermark(UINT x, UINT y, UINT cx, UINT cy, UINT xOff, UINT yOff, HDC hdcDst, HDC hdcSrc,
|
|
UINT cxWatermark, UINT cyWatermark);
|
|
|
|
class CRoomListView : public CWindowImpl<CRoomListView>, public IGenWindow
|
|
{
|
|
private:
|
|
enum
|
|
{
|
|
COLUMN_INDEX_NAME = 0,
|
|
NUM_COLUMNS
|
|
};
|
|
|
|
// Member Variables:
|
|
enum { m_iSortColumn = COLUMN_INDEX_NAME };
|
|
|
|
BOOL m_fSortAscending;
|
|
LPARAM m_lUserData;
|
|
|
|
LRESULT OnClick(LV_HITTESTINFO* plvhi, BOOL fLeftClick);
|
|
|
|
// static methods
|
|
static int CALLBACK RoomListViewCompareProc(LPARAM lParam1,
|
|
LPARAM lParam2,
|
|
LPARAM lParamSort);
|
|
LPARAM GetSelectedLParam();
|
|
VOID GetDispInfo(LV_DISPINFO * pLvdi);
|
|
int LParamToPos(LPARAM lParam);
|
|
|
|
BOOL Add(int iPosition, CParticipant * pPart);
|
|
VOID Remove(LPARAM lParam);
|
|
|
|
public:
|
|
// Methods:
|
|
CRoomListView();
|
|
~CRoomListView();
|
|
|
|
// begin IGenWindow interface
|
|
virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFGUID iid, LPVOID *pObj)
|
|
{ return(E_NOTIMPL); }
|
|
virtual ULONG STDMETHODCALLTYPE AddRef(void) { return(3); }
|
|
virtual ULONG STDMETHODCALLTYPE Release(void) { return(2); }
|
|
|
|
virtual void GetDesiredSize(SIZE *ppt);
|
|
virtual HBRUSH GetBackgroundBrush() { return(NULL); }
|
|
virtual HPALETTE GetPalette() { return(NULL); }
|
|
virtual void OnDesiredSizeChanged() {}
|
|
|
|
// Get the LPARAM of user data
|
|
virtual LPARAM GetUserData() { return(m_lUserData); }
|
|
|
|
// end IGenWindow interface
|
|
|
|
void SetUserData(LPARAM lUserData) { m_lUserData = lUserData; }
|
|
|
|
// CView
|
|
BOOL Create(HWND hwndParent);
|
|
VOID Show(BOOL fVisible);
|
|
VOID ShiftFocus(HWND hwndCur, BOOL fForward);
|
|
VOID Redraw(void);
|
|
VOID SaveSettings(RegEntry * pre) {}
|
|
BOOL LoadSettings(RegEntry * pre);
|
|
|
|
HWND GetHwnd() const {return m_hWnd;}
|
|
BOOL IsChildWindow(HWND hwnd)
|
|
{
|
|
return ((hwnd == m_hWnd) || ::IsChild(m_hWnd, hwnd));
|
|
}
|
|
|
|
VOID ForwardSysChangeMsg(UINT uMsg, WPARAM wParam, LPARAM lParam);
|
|
BOOL OnPopup(POINT pt);
|
|
|
|
VOID OnChangeParticipant(CParticipant * pPart, NM_MEMBER_NOTIFY uNotify);
|
|
|
|
CParticipant * GetParticipant();
|
|
|
|
// Handlers:
|
|
LRESULT OnNotify(WPARAM wParam, LPARAM lParam);
|
|
|
|
//////////////////////////////////
|
|
// ATLWin stuff
|
|
|
|
// This is a superclass of a SysListTreeView32
|
|
DECLARE_WND_SUPERCLASS(NULL,_T("SysListView32"))
|
|
|
|
// Message map
|
|
BEGIN_MSG_MAP(CComponentWnd)
|
|
MESSAGE_HANDLER(c_msgFromHandle,OnFromHandle)
|
|
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
|
|
MESSAGE_HANDLER(WM_SIZE, OnSize)
|
|
END_MSG_MAP()
|
|
|
|
private:
|
|
// Message Map Handlers
|
|
LRESULT OnFromHandle(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
|
{
|
|
return(reinterpret_cast<LRESULT>(static_cast<IGenWindow*>(this)));
|
|
}
|
|
|
|
LRESULT OnSetFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
|
{
|
|
CGenWindow::SetHotControl(NULL);
|
|
bHandled = FALSE;
|
|
return(0);
|
|
}
|
|
|
|
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
|
};
|
|
|
|
#endif // _ROOMLIST_H_
|