298 lines
6.9 KiB
C++
298 lines
6.9 KiB
C++
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Microsoft Windows
|
||
|
// Copyright (C) Microsoft Corporation, 1997.
|
||
|
//
|
||
|
// File: rasui.cpp
|
||
|
//
|
||
|
// Contents: helper functions for showing Ras UI
|
||
|
//
|
||
|
// Classes:
|
||
|
//
|
||
|
// Notes:
|
||
|
//
|
||
|
// History: 08-Dec-97 rogerg Created.
|
||
|
//
|
||
|
//--------------------------------------------------------------------------
|
||
|
|
||
|
#include "precomp.h"
|
||
|
|
||
|
extern TCHAR szSyncMgrHelp[];
|
||
|
extern ULONG g_aContextHelpIds[];
|
||
|
|
||
|
extern HINSTANCE g_hmodThisDll;
|
||
|
|
||
|
|
||
|
//+---------------------------------------------------------------------------
|
||
|
//
|
||
|
// Member: CRasUI::CRasUI, public
|
||
|
//
|
||
|
// Synopsis:
|
||
|
//
|
||
|
// Arguments:
|
||
|
//
|
||
|
// Returns:
|
||
|
//
|
||
|
// Modifies:
|
||
|
//
|
||
|
// History: 08-Nov-97 rogerg Created.
|
||
|
//
|
||
|
//----------------------------------------------------------------------------
|
||
|
|
||
|
CRasUI::CRasUI()
|
||
|
{
|
||
|
m_pNetApi = NULL;
|
||
|
|
||
|
m_cEntries = 0;
|
||
|
m_lprasentry = 0;
|
||
|
}
|
||
|
|
||
|
//+---------------------------------------------------------------------------
|
||
|
//
|
||
|
// Member: CRasUI::~CRasUI, public
|
||
|
//
|
||
|
// Synopsis:
|
||
|
//
|
||
|
// Arguments:
|
||
|
//
|
||
|
// Returns:
|
||
|
//
|
||
|
// Modifies:
|
||
|
//
|
||
|
// History: 08-Nov-97 rogerg Created.
|
||
|
//
|
||
|
//----------------------------------------------------------------------------
|
||
|
|
||
|
CRasUI::~CRasUI()
|
||
|
{
|
||
|
|
||
|
// clear out any cached enum
|
||
|
m_cEntries = 0; // make sure on error our enum cash is reset.
|
||
|
if (m_lprasentry)
|
||
|
{
|
||
|
FREE(m_lprasentry);
|
||
|
m_lprasentry = NULL;
|
||
|
}
|
||
|
|
||
|
m_pNetApi->Release();
|
||
|
}
|
||
|
|
||
|
|
||
|
//+---------------------------------------------------------------------------
|
||
|
//
|
||
|
// Member: CRasUI::Initialize, public
|
||
|
//
|
||
|
// Synopsis:
|
||
|
//
|
||
|
// Arguments:
|
||
|
//
|
||
|
// Returns:
|
||
|
//
|
||
|
// Modifies:
|
||
|
//
|
||
|
// History: 08-Nov-97 rogerg Created.
|
||
|
//
|
||
|
//----------------------------------------------------------------------------
|
||
|
|
||
|
BOOL CRasUI::Initialize()
|
||
|
{
|
||
|
|
||
|
if (NOERROR != MobsyncGetClassObject(MOBSYNC_CLASSOBJECTID_NETAPI,
|
||
|
(void **) &m_pNetApi))
|
||
|
{
|
||
|
m_pNetApi = NULL;
|
||
|
}
|
||
|
|
||
|
return TRUE; // always return true, let other ras calls fail since need
|
||
|
// to handle LAN.
|
||
|
}
|
||
|
|
||
|
|
||
|
//+---------------------------------------------------------------------------
|
||
|
//
|
||
|
// Member: CRasUI::IsConnectionLan, public
|
||
|
//
|
||
|
// Synopsis:
|
||
|
//
|
||
|
// Arguments:
|
||
|
//
|
||
|
// Returns:
|
||
|
//
|
||
|
// Modifies:
|
||
|
//
|
||
|
// History: 08-Nov-97 rogerg Created.
|
||
|
//
|
||
|
//----------------------------------------------------------------------------
|
||
|
|
||
|
BOOL CRasUI::IsConnectionLan(int iConnectionNum)
|
||
|
{
|
||
|
|
||
|
// ui always puts the LAN connection as the first item
|
||
|
// Need to add logic to get if truly lan if add support
|
||
|
// for multiple LAN cards and/or not show if no LAN
|
||
|
// card.
|
||
|
|
||
|
if (iConnectionNum ==0)
|
||
|
{
|
||
|
return TRUE;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
return FALSE;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
//+---------------------------------------------------------------------------
|
||
|
//
|
||
|
// Member: CRasUI::FillRasCombo, public
|
||
|
//
|
||
|
// Synopsis:
|
||
|
//
|
||
|
// Arguments: hwndCtrl - Combo Ctrl to fill items with
|
||
|
// fForceEnum - reenum rasphonebook instead of using cache
|
||
|
// fShowRasEntries - true if should include ras entries
|
||
|
// in combo, if false, only LAN Connection is shown.
|
||
|
//
|
||
|
// Returns:
|
||
|
//
|
||
|
// Modifies:
|
||
|
//
|
||
|
// History: 08-Nov-97 rogerg Created.
|
||
|
//
|
||
|
//----------------------------------------------------------------------------
|
||
|
|
||
|
void CRasUI::FillRasCombo(HWND hwndCtl,BOOL fForceEnum,BOOL fShowRasEntries)
|
||
|
{
|
||
|
DWORD dwSize;
|
||
|
DWORD dwError;
|
||
|
COMBOBOXEXITEM comboItem;
|
||
|
DWORD cEntryIndex;
|
||
|
int iItem = 0;
|
||
|
HIMAGELIST himage;
|
||
|
HICON hIcon;
|
||
|
TCHAR szBuf[MAX_PATH + 1];
|
||
|
UINT ImageListflags;
|
||
|
|
||
|
ImageListflags = ILC_COLOR | ILC_MASK;
|
||
|
if (IsHwndRightToLeft(hwndCtl))
|
||
|
{
|
||
|
ImageListflags |= ILC_MIRROR;
|
||
|
}
|
||
|
|
||
|
himage = ImageList_Create(16,16,ImageListflags ,5,20);
|
||
|
if (himage)
|
||
|
{
|
||
|
SendMessage(hwndCtl,CBEM_SETIMAGELIST,0,(LPARAM) himage);
|
||
|
}
|
||
|
|
||
|
|
||
|
if (LoadString(g_hmodThisDll, IDS_LAN_CONNECTION, szBuf, MAX_PATH))
|
||
|
{
|
||
|
|
||
|
hIcon = LoadIcon(g_hmodThisDll,MAKEINTRESOURCE(IDI_LANCONNECTION));
|
||
|
comboItem.iImage = ImageList_AddIcon(himage,hIcon);
|
||
|
|
||
|
comboItem.mask = CBEIF_TEXT | CBEIF_IMAGE | CBEIF_LPARAM | CBEIF_INDENT
|
||
|
| CBEIF_SELECTEDIMAGE;
|
||
|
|
||
|
comboItem.iItem = iItem;
|
||
|
comboItem.pszText = szBuf;
|
||
|
comboItem.cchTextMax = lstrlen(szBuf) + 1;
|
||
|
comboItem.iIndent = 0;
|
||
|
comboItem.iSelectedImage = comboItem.iImage;
|
||
|
comboItem.lParam = SYNCSCHEDINFO_FLAGS_CONNECTION_LAN;
|
||
|
|
||
|
iItem = ComboEx_InsertItem(hwndCtl,&comboItem);
|
||
|
++iItem;
|
||
|
}
|
||
|
|
||
|
dwError = 0; // if dont' show ras there are now errors
|
||
|
|
||
|
if (fShowRasEntries)
|
||
|
{
|
||
|
// if we are forced to reenum the Rasconnections then free any existing cache
|
||
|
|
||
|
if (fForceEnum)
|
||
|
{
|
||
|
m_cEntries = 0;
|
||
|
if (m_lprasentry)
|
||
|
{
|
||
|
FREE(m_lprasentry);
|
||
|
m_lprasentry = NULL;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
// if RAS couldn't be loaded, just have LAN connection.
|
||
|
if (NULL == m_lprasentry) // if don't already have an enum cached then enum now.
|
||
|
{
|
||
|
|
||
|
dwSize = sizeof(RASENTRYNAME);
|
||
|
|
||
|
m_lprasentry = (LPRASENTRYNAME) ALLOC(dwSize);
|
||
|
if(!m_lprasentry)
|
||
|
goto error;
|
||
|
|
||
|
m_lprasentry->dwSize = sizeof(RASENTRYNAME);
|
||
|
m_cEntries = 0;
|
||
|
dwError = m_pNetApi->RasEnumEntries(NULL, NULL,
|
||
|
m_lprasentry, &dwSize, &m_cEntries);
|
||
|
|
||
|
if (dwError == ERROR_BUFFER_TOO_SMALL)
|
||
|
{
|
||
|
FREE(m_lprasentry);
|
||
|
m_lprasentry = (LPRASENTRYNAME) ALLOC(dwSize);
|
||
|
if(!m_lprasentry)
|
||
|
goto error;
|
||
|
|
||
|
m_lprasentry->dwSize = sizeof(RASENTRYNAME);
|
||
|
m_cEntries = 0;
|
||
|
dwError = m_pNetApi->RasEnumEntries(NULL, NULL,
|
||
|
m_lprasentry, &dwSize, &m_cEntries);
|
||
|
|
||
|
Assert(0 == dwError);
|
||
|
}
|
||
|
|
||
|
if (dwError)
|
||
|
goto error;
|
||
|
}
|
||
|
|
||
|
cEntryIndex = m_cEntries;
|
||
|
|
||
|
comboItem.mask = CBEIF_DI_SETITEM | CBEIF_TEXT | CBEIF_IMAGE | CBEIF_LPARAM | CBEIF_INDENT
|
||
|
| CBEIF_SELECTEDIMAGE ;
|
||
|
|
||
|
hIcon = LoadIcon(g_hmodThisDll,MAKEINTRESOURCE(IDI_RASCONNECTION));
|
||
|
comboItem.iImage = ImageList_AddIcon(himage,hIcon);
|
||
|
comboItem.iItem = iItem;
|
||
|
comboItem.iIndent = 0;
|
||
|
comboItem.iSelectedImage = comboItem.iImage;
|
||
|
comboItem.lParam = SYNCSCHEDINFO_FLAGS_CONNECTION_WAN;
|
||
|
|
||
|
while(cEntryIndex)
|
||
|
{
|
||
|
comboItem.pszText = m_lprasentry[cEntryIndex-1].szEntryName;
|
||
|
|
||
|
iItem = ComboEx_InsertItem(hwndCtl,&comboItem);
|
||
|
|
||
|
cEntryIndex--;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
error:
|
||
|
SendMessage(hwndCtl, CB_SETCURSEL,0, 0);
|
||
|
|
||
|
if (dwError)
|
||
|
{
|
||
|
m_cEntries = 0; // make sure on error our enum cash is reset.
|
||
|
if (m_lprasentry)
|
||
|
{
|
||
|
FREE(m_lprasentry);
|
||
|
m_lprasentry = NULL;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|