573 lines
11 KiB
C++
573 lines
11 KiB
C++
|
#include "stdafx.h"
|
||
|
#include "t3test.h"
|
||
|
#include "t3testD.h"
|
||
|
#include "calldlg.h"
|
||
|
#include "callnot.h"
|
||
|
#include "externs.h"
|
||
|
|
||
|
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
|
||
|
//
|
||
|
// AddListen
|
||
|
//
|
||
|
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
|
||
|
void CT3testDlg::AddListen( long lMediaType )
|
||
|
{
|
||
|
WCHAR szName[256];
|
||
|
TV_INSERTSTRUCT tvi;
|
||
|
|
||
|
//
|
||
|
// map the mediatype bstr to
|
||
|
// a string name (like "audio in")
|
||
|
//
|
||
|
GetMediaTypeName(
|
||
|
lMediaType,
|
||
|
szName
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// insert that string into the
|
||
|
// listen window
|
||
|
//
|
||
|
tvi.hParent = ghListenRoot;
|
||
|
tvi.hInsertAfter = TVI_LAST;
|
||
|
tvi.item.mask = TVIF_TEXT | TVIF_PARAM;
|
||
|
tvi.item.pszText = szName;
|
||
|
tvi.item.lParam = (LPARAM) lMediaType;
|
||
|
|
||
|
TreeView_InsertItem(
|
||
|
ghListenWnd,
|
||
|
&tvi
|
||
|
);
|
||
|
|
||
|
|
||
|
//
|
||
|
// select the first item
|
||
|
//
|
||
|
SelectFirstItem(
|
||
|
ghListenWnd,
|
||
|
ghListenRoot
|
||
|
);
|
||
|
}
|
||
|
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
|
||
|
//
|
||
|
// AddAddressToTree
|
||
|
//
|
||
|
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
|
||
|
void CT3testDlg::AddAddressToTree( ITAddress * pAddress )
|
||
|
{
|
||
|
BSTR bstrName;
|
||
|
TV_INSERTSTRUCT tvi;
|
||
|
|
||
|
//
|
||
|
// get the name of the address
|
||
|
//
|
||
|
pAddress->get_AddressName( &bstrName );
|
||
|
|
||
|
|
||
|
//
|
||
|
// set up struct
|
||
|
//
|
||
|
tvi.hParent = ghAddressesRoot;
|
||
|
tvi.hInsertAfter = TVI_LAST;
|
||
|
tvi.item.mask = TVIF_TEXT | TVIF_PARAM;
|
||
|
tvi.item.pszText = bstrName;
|
||
|
tvi.item.lParam = (LPARAM) pAddress;
|
||
|
|
||
|
|
||
|
//
|
||
|
// addref
|
||
|
//
|
||
|
pAddress->AddRef();
|
||
|
|
||
|
|
||
|
//
|
||
|
// insert it
|
||
|
//
|
||
|
TreeView_InsertItem(
|
||
|
ghAddressesWnd,
|
||
|
&tvi
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// free name
|
||
|
//
|
||
|
SysFreeString( bstrName );
|
||
|
}
|
||
|
|
||
|
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
|
||
|
//
|
||
|
// AddMediaType
|
||
|
//
|
||
|
// Add a mediatype to the mediatype tree
|
||
|
//
|
||
|
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
|
||
|
void CT3testDlg::AddMediaType( long lMediaType )
|
||
|
{
|
||
|
WCHAR szString[256];
|
||
|
TV_INSERTSTRUCT tvi;
|
||
|
|
||
|
//
|
||
|
// get the displayable name
|
||
|
//
|
||
|
GetMediaTypeName(
|
||
|
lMediaType,
|
||
|
szString
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// set up struct
|
||
|
//
|
||
|
tvi.hParent = ghMediaTypesRoot;
|
||
|
tvi.hInsertAfter = TVI_LAST;
|
||
|
tvi.item.mask = TVIF_TEXT | TVIF_PARAM;
|
||
|
tvi.item.pszText = szString;
|
||
|
tvi.item.lParam = (LPARAM) lMediaType;
|
||
|
|
||
|
//
|
||
|
// add the item
|
||
|
//
|
||
|
TreeView_InsertItem(
|
||
|
ghMediaTypesWnd,
|
||
|
&tvi
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// select the first item
|
||
|
//
|
||
|
SelectFirstItem(
|
||
|
ghMediaTypesWnd,
|
||
|
ghMediaTypesRoot
|
||
|
);
|
||
|
}
|
||
|
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
|
||
|
//
|
||
|
// AddCall
|
||
|
//
|
||
|
// Add a call to the call tree
|
||
|
//
|
||
|
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
|
||
|
void CT3testDlg::AddCall( ITCallInfo * pCall )
|
||
|
{
|
||
|
TV_INSERTSTRUCT tvi;
|
||
|
HTREEITEM hItem;
|
||
|
CALL_PRIVILEGE cp;
|
||
|
CALL_STATE cs;
|
||
|
WCHAR pszName[16];
|
||
|
|
||
|
//
|
||
|
// for the name of the call, use
|
||
|
// the pointer!
|
||
|
//
|
||
|
wsprintf(
|
||
|
pszName,
|
||
|
L"0x%lx",
|
||
|
pCall
|
||
|
);
|
||
|
|
||
|
|
||
|
//
|
||
|
// set up struct
|
||
|
//
|
||
|
tvi.hParent = ghCallsRoot;
|
||
|
tvi.hInsertAfter = TVI_LAST;
|
||
|
tvi.item.mask = TVIF_TEXT | TVIF_PARAM;
|
||
|
tvi.item.pszText = pszName;
|
||
|
tvi.item.lParam = (LPARAM) pCall;
|
||
|
|
||
|
//
|
||
|
// save a reference
|
||
|
//
|
||
|
pCall->AddRef();
|
||
|
|
||
|
|
||
|
//
|
||
|
// insert the item
|
||
|
//
|
||
|
hItem = TreeView_InsertItem(
|
||
|
ghCallsWnd,
|
||
|
&tvi
|
||
|
);
|
||
|
|
||
|
if (NULL != hItem)
|
||
|
{
|
||
|
//
|
||
|
// select the item
|
||
|
//
|
||
|
TreeView_SelectItem(
|
||
|
ghCallsWnd,
|
||
|
hItem
|
||
|
);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
|
||
|
//
|
||
|
// AddTerminal
|
||
|
//
|
||
|
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
|
||
|
void CT3testDlg::AddTerminal( ITTerminal * pTerminal )
|
||
|
{
|
||
|
BSTR bstrName;
|
||
|
BSTR bstrClass;
|
||
|
TV_INSERTSTRUCT tvi;
|
||
|
TERMINAL_DIRECTION td;
|
||
|
WCHAR szName[256];
|
||
|
|
||
|
//
|
||
|
// get the name of the terminal
|
||
|
//
|
||
|
pTerminal->get_Name( &bstrName );
|
||
|
|
||
|
pTerminal->get_Direction( &td );
|
||
|
|
||
|
if (td == TD_RENDER)
|
||
|
{
|
||
|
wsprintfW(szName, L"%s [Playback]", bstrName);
|
||
|
}
|
||
|
else if (td == TD_CAPTURE)
|
||
|
{
|
||
|
wsprintfW(szName, L"%s [Record]", bstrName);
|
||
|
}
|
||
|
else //if (TD == TD_BOTH)
|
||
|
{
|
||
|
lstrcpyW(szName, bstrName);
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// set up the structure
|
||
|
//
|
||
|
tvi.hParent = ghTerminalsRoot;
|
||
|
tvi.hInsertAfter = TVI_LAST;
|
||
|
tvi.item.mask = TVIF_TEXT | TVIF_PARAM;
|
||
|
tvi.item.pszText = szName;
|
||
|
tvi.item.lParam = (LPARAM) pTerminal;
|
||
|
|
||
|
|
||
|
//
|
||
|
// keep a refence to the terminal
|
||
|
//
|
||
|
pTerminal->AddRef();
|
||
|
|
||
|
//
|
||
|
// add it
|
||
|
//
|
||
|
TreeView_InsertItem(
|
||
|
ghTerminalsWnd,
|
||
|
&tvi
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// free the name
|
||
|
//
|
||
|
SysFreeString( bstrName );
|
||
|
|
||
|
|
||
|
//
|
||
|
// select
|
||
|
//
|
||
|
SelectFirstItem(
|
||
|
ghTerminalsWnd,
|
||
|
ghTerminalsRoot
|
||
|
);
|
||
|
|
||
|
}
|
||
|
|
||
|
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
|
||
|
//
|
||
|
// AddPhone
|
||
|
//
|
||
|
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
|
||
|
void CT3testDlg::AddPhone( ITPhone * pPhone )
|
||
|
{
|
||
|
BSTR bstrName;
|
||
|
TV_INSERTSTRUCT tvi;
|
||
|
TERMINAL_DIRECTION td;
|
||
|
WCHAR szName[256];
|
||
|
|
||
|
//
|
||
|
// get the name of the phone
|
||
|
//
|
||
|
pPhone->get_PhoneCapsString ( PCS_PHONENAME, &bstrName );
|
||
|
|
||
|
lstrcpyW(szName, bstrName);
|
||
|
|
||
|
//
|
||
|
// set up the structure
|
||
|
//
|
||
|
tvi.hParent = ghPhonesRoot;
|
||
|
tvi.hInsertAfter = TVI_LAST;
|
||
|
tvi.item.mask = TVIF_TEXT | TVIF_PARAM;
|
||
|
tvi.item.pszText = szName;
|
||
|
tvi.item.lParam = (LPARAM) pPhone;
|
||
|
|
||
|
|
||
|
//
|
||
|
// keep a refence to the phone
|
||
|
//
|
||
|
pPhone->AddRef();
|
||
|
|
||
|
//
|
||
|
// add it
|
||
|
//
|
||
|
TreeView_InsertItem(
|
||
|
ghPhonesWnd,
|
||
|
&tvi
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// free the name
|
||
|
//
|
||
|
SysFreeString( bstrName );
|
||
|
|
||
|
|
||
|
//
|
||
|
// select
|
||
|
//
|
||
|
SelectFirstItem(
|
||
|
ghPhonesWnd,
|
||
|
ghPhonesRoot
|
||
|
);
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
|
||
|
//
|
||
|
// AddTerminalClass
|
||
|
//
|
||
|
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
|
||
|
void CT3testDlg::AddTerminalClass( GUID * pguid )
|
||
|
{
|
||
|
TV_INSERTSTRUCT tvi;
|
||
|
|
||
|
//
|
||
|
// get the name
|
||
|
//
|
||
|
tvi.item.pszText = GetTerminalClassName( pguid );
|
||
|
|
||
|
//
|
||
|
// set up the struct
|
||
|
//
|
||
|
tvi.hParent = ghClassesRoot;
|
||
|
tvi.hInsertAfter = TVI_LAST;
|
||
|
tvi.item.mask = TVIF_TEXT | TVIF_PARAM;
|
||
|
tvi.item.lParam = (LPARAM) pguid;
|
||
|
|
||
|
//
|
||
|
// insert the item
|
||
|
//
|
||
|
TreeView_InsertItem(
|
||
|
ghClassesWnd,
|
||
|
&tvi
|
||
|
);
|
||
|
|
||
|
SysFreeString( tvi.item.pszText );
|
||
|
|
||
|
//
|
||
|
// select item
|
||
|
//
|
||
|
SelectFirstItem(
|
||
|
ghClassesWnd,
|
||
|
ghClassesRoot
|
||
|
);
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
|
||
|
//
|
||
|
// AddCreatedTerminal
|
||
|
//
|
||
|
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
|
||
|
void CT3testDlg::AddCreatedTerminal( ITTerminal * pTerminal )
|
||
|
{
|
||
|
BSTR bstrName;
|
||
|
TV_INSERTSTRUCT tvi;
|
||
|
|
||
|
|
||
|
//
|
||
|
// get the name
|
||
|
//
|
||
|
pTerminal->get_Name( &bstrName );
|
||
|
|
||
|
//
|
||
|
// set up the structure
|
||
|
//
|
||
|
tvi.hParent = ghCreatedRoot;
|
||
|
tvi.hInsertAfter = TVI_LAST;
|
||
|
tvi.item.mask = TVIF_TEXT | TVIF_PARAM;
|
||
|
|
||
|
if ( ( NULL == bstrName ) || (NULL == bstrName[0] ))
|
||
|
{
|
||
|
tvi.item.pszText = L"<No Name Given>";
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
tvi.item.pszText = bstrName;
|
||
|
}
|
||
|
|
||
|
tvi.item.lParam = (LPARAM) pTerminal;
|
||
|
|
||
|
|
||
|
//
|
||
|
// keep reference
|
||
|
//
|
||
|
pTerminal->AddRef();
|
||
|
|
||
|
//
|
||
|
// insert
|
||
|
//
|
||
|
TreeView_InsertItem(
|
||
|
ghCreatedWnd,
|
||
|
&tvi
|
||
|
);
|
||
|
|
||
|
SysFreeString( bstrName );
|
||
|
|
||
|
//
|
||
|
// select
|
||
|
//
|
||
|
SelectFirstItem(
|
||
|
ghCreatedWnd,
|
||
|
ghCreatedRoot
|
||
|
);
|
||
|
|
||
|
}
|
||
|
|
||
|
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
|
||
|
//
|
||
|
// AddSelectedTerminal
|
||
|
//
|
||
|
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
|
||
|
void CT3testDlg::AddSelectedTerminal(
|
||
|
ITTerminal * pTerminal
|
||
|
)
|
||
|
{
|
||
|
BSTR bstrName;
|
||
|
BSTR pMediaType;
|
||
|
TV_INSERTSTRUCT tvi;
|
||
|
TERMINAL_DIRECTION td;
|
||
|
WCHAR szName[256];
|
||
|
|
||
|
|
||
|
//
|
||
|
// get the name
|
||
|
//
|
||
|
pTerminal->get_Name( &bstrName );
|
||
|
|
||
|
pTerminal->get_Direction( &td );
|
||
|
|
||
|
if (td == TD_RENDER)
|
||
|
{
|
||
|
wsprintfW(szName, L"%s [Playback]", bstrName);
|
||
|
}
|
||
|
else if (td == TD_CAPTURE)
|
||
|
{
|
||
|
wsprintfW(szName, L"%s [Record]", bstrName);
|
||
|
}
|
||
|
else //if (TD == TD_BOTH)
|
||
|
{
|
||
|
lstrcpyW(szName, bstrName);
|
||
|
}
|
||
|
|
||
|
|
||
|
//
|
||
|
// set up the struct
|
||
|
//
|
||
|
tvi.hParent = ghSelectedRoot;
|
||
|
tvi.hInsertAfter = TVI_LAST;
|
||
|
tvi.item.mask = TVIF_TEXT | TVIF_PARAM;
|
||
|
tvi.item.pszText = szName;
|
||
|
tvi.item.lParam = (LPARAM) pTerminal;
|
||
|
|
||
|
//
|
||
|
// keep reference
|
||
|
//
|
||
|
pTerminal->AddRef();
|
||
|
|
||
|
//
|
||
|
// insert item
|
||
|
//
|
||
|
TreeView_InsertItem(
|
||
|
ghSelectedWnd,
|
||
|
&tvi
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// free name
|
||
|
//
|
||
|
SysFreeString( bstrName );
|
||
|
|
||
|
|
||
|
//
|
||
|
// select
|
||
|
//
|
||
|
SelectFirstItem(
|
||
|
ghSelectedWnd,
|
||
|
ghSelectedRoot
|
||
|
);
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
|
||
|
//
|
||
|
// AddSelectedCall
|
||
|
//
|
||
|
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
|
||
|
void CT3testDlg::AddSelectedCall(
|
||
|
ITCallInfo * pCall
|
||
|
)
|
||
|
{
|
||
|
TV_INSERTSTRUCT tvi;
|
||
|
WCHAR pszName[16];
|
||
|
|
||
|
//
|
||
|
// for the name of the call, use
|
||
|
// the pointer!
|
||
|
//
|
||
|
wsprintf(
|
||
|
pszName,
|
||
|
L"0x%lx",
|
||
|
pCall
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// set up the struct
|
||
|
//
|
||
|
tvi.hParent = ghSelectedCallsRoot;
|
||
|
tvi.hInsertAfter = TVI_LAST;
|
||
|
tvi.item.mask = TVIF_TEXT | TVIF_PARAM;
|
||
|
tvi.item.pszText = pszName;
|
||
|
tvi.item.lParam = (LPARAM) pCall;
|
||
|
|
||
|
//
|
||
|
// keep reference
|
||
|
//
|
||
|
pCall->AddRef();
|
||
|
|
||
|
//
|
||
|
// insert item
|
||
|
//
|
||
|
TreeView_InsertItem(
|
||
|
ghSelectedCallsWnd,
|
||
|
&tvi
|
||
|
);
|
||
|
|
||
|
|
||
|
//
|
||
|
// select
|
||
|
//
|
||
|
SelectFirstItem(
|
||
|
ghSelectedCallsWnd,
|
||
|
ghSelectedCallsRoot
|
||
|
);
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
|