|
|
//+-------------------------------------------------------------------------
//
// 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; } } }
|