⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 childview.cpp

📁 三汇CTI示例程序源码
💻 CPP
字号:

#include "StdAfx.h"
#include "App.h"
#include "ChildView.h"

IMPLEMENT_DYNCREATE(ChildView, CListView)

BEGIN_MESSAGE_MAP(ChildView, CListView)
	ON_WM_LBUTTONDOWN()
	ON_WM_RBUTTONDOWN()
	ON_WM_TIMER()
END_MESSAGE_MAP()

ChildView::ChildView()
{
	IsInitialUpdate = FALSE;
}

BOOL ChildView::PreCreateWindow(CREATESTRUCT& cs) 
{
	CListView::PreCreateWindow(cs);

	cs.style &= ~LVS_TYPEMASK;
	cs.style |= LVS_REPORT | LVS_SORTASCENDING | LVS_SINGLESEL | LVS_SHOWSELALWAYS;

	return TRUE;
}

enum
{
	MEMBER_ID_COLUMN,
	MEMBER_APP_CH_COLUMN,
	MEMBER_JOIN_MODE_COLUMN,
	MEMBER_IS_SPEAKING_COLUMN,
	MEMBER_SILENCE_TIME_COLUMN,
	MEMBER_N_COLUMNS
};

void ChildView::OnInitialUpdate()
{
	if (IsInitialUpdate == FALSE)
	{
		CListCtrl& ListCtrl = GetListCtrl();
		_TCHAR *ColumnLabel[MEMBER_N_COLUMNS] =
		{
			_T("ID"), _T("Channel"), _T("Join mode"), _T("Speaking"), _T("Silence time")
		};
		int i;

		ListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT);

		for(i = 0; i < MEMBER_N_COLUMNS; i++)
		{
			ListCtrl.InsertColumn(i, ColumnLabel[i], LVCFMT_LEFT, 100);
		}

		SetTimer(0, 500, NULL);
		child_hwnd = GetSafeHwnd();

		IsInitialUpdate = TRUE;
	}
}

int last_active;

void ChildView::OnTimer(UINT nIDEvent)
{
	CListCtrl& ListCtrl = GetListCtrl();
	LVFINDINFO item_find;
	int active;
	char str[10] = "";
	int i;

	if (nIDEvent == 0)
	{
		if (conf_active >=0 || conf_active == -1 && last_active == -1)
		{
			// ENG: Retrieve selection
			// CHS: 获取选择
			for (i = 0; i < ListCtrl.GetItemCount(); i++)
			{
				if (ListCtrl.GetItemState(i, LVIS_SELECTED))
					ListCtrl.GetItemText(i, 0, str, 10);
			}

			ListCtrl.DeleteAllItems();
			if (SsmValidateGrpId(conf_active))
			{
				// ENG: Refresh
				// CHS: 刷新
				WORD TotalMember, TotalSpeaker, TotalSpeaking;
				SsmGetConfGrpInfo(conf_active, &TotalMember, &TotalSpeaker, &TotalSpeaking);

				char temp[10];
				DWORD SilenceTime;
				WORD JoinMode, IsSpeaking;
				int AppCh;
				int index;
				int * member = (int *)malloc(sizeof(int) * TotalMember);
				SsmGetConfGrpMmbrId(conf_active, member);
				for (i = 0; i < TotalMember; i++)
				{
					SsmGetConfGrpMmbrInfo(conf_active, member[i], &AppCh, & JoinMode, &IsSpeaking, &SilenceTime);
					index = ListCtrl.InsertItem(0, itoa(member[i], temp, 10), IDI_ICON_MEMBER);
					ListCtrl.SetItemText(index, 1, itoa(AppCh, temp, 10));
					ListCtrl.SetItemText(index, 2, itoa(JoinMode, temp, 10));
					ListCtrl.SetItemText(index, 3, itoa(IsSpeaking, temp, 10));
					ListCtrl.SetItemText(index, 4, itoa(SilenceTime, temp, 10));
				}


				// ENG: Restore selection
				// CHS: 还原选择
				item_find.flags = LVFI_STRING;
				item_find.psz = str;
				active = ListCtrl.FindItem(&item_find);
				if (active < 0)
					active = 0;
				if (ListCtrl.GetItemCount() >= 0)
					ListCtrl.SetItemState(active, LVIS_SELECTED, LVIS_SELECTED);
			}
		}
		last_active = conf_active;
	}

}

void ChildView::OnRButtonDown(UINT nFlags, CPoint point)
{
	int index;
	PostMessage(WM_TIMER);
	CListCtrl& ListCtrl = GetListCtrl();
	if ((index = ListCtrl.HitTest(point)) >= 0)
		ListCtrl.SetItemState(index, LVIS_SELECTED, LVIS_SELECTED);
	else if(ListCtrl.GetItemCount() > 0)
		ListCtrl.SetItemState(ListCtrl.GetItemCount() - 1, LVIS_SELECTED, LVIS_SELECTED);
}

void ChildView::OnLButtonDown(UINT nFlags, CPoint point)
{
	int index;
	PostMessage(WM_TIMER);
	CListCtrl& ListCtrl = GetListCtrl();
	if ((index = ListCtrl.HitTest(point)) >= 0)
		ListCtrl.SetItemState(index, LVIS_SELECTED, LVIS_SELECTED);
	else if(ListCtrl.GetItemCount() > 0)
		ListCtrl.SetItemState(ListCtrl.GetItemCount() - 1, LVIS_SELECTED, LVIS_SELECTED);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -