remnet.c

来自「wince下的源代码集合打包」· C语言 代码 · 共 1,669 行 · 第 1/4 页

C
1,669
字号
/******************************************************************************Copyright (c) 1995-2000 Microsoft Corporation.  All rights reserved.remnet.c : Remote networking******************************************************************************/#include <windows.h>#include <windowsx.h>#include <tchar.h>#include "string.h"#include "memory.h"#include "commctrl.h"#include "wcommctl.h"//#include "shlobj.h"//#include "wceshell.h"//#include "aygshell.h"#ifdef USE_SIP#	include <sipapi.h>#endif#include "resource.h"#include "remnet.h"#ifdef DEBUGDBGPARAM dpCurSettings = {    TEXT("RemoteNet"), {        TEXT("Unused"),TEXT("Unused"),TEXT("Unused"),TEXT("Unused"),        TEXT("Unused"),TEXT("Unused"),TEXT("Unused"),TEXT("Unused"),        TEXT("Unused"),TEXT("Unused"),TEXT("Unused"),TEXT("Misc"),        TEXT("Alloc"),TEXT("Function"),TEXT("Warning"),TEXT("Error") },    0x0000C000    //0xFFFF}; #endif	// DEBUGITEMINFO	EditItem;HINSTANCE	v_hInst;HWND		v_hMainWnd;HWND		v_hListWnd;HWND		v_hCmdBar;HWND		v_hDialogWnd;HFONT		v_hfont;RECT		v_ClientRect;RECT		v_ListRect;DWORD		v_WizDialog;DWORD       v_PrevWizDialog;BOOL		v_fInRename;BOOL		v_fPortrait;#ifdef USE_SIPLPFNSIP		  g_pSipGetInfo, g_pSipSetInfo;LPFNSIPSTATUS g_pSipStatus;HINSTANCE	  g_hSipLib;#endifextern DWORD v_EnteredAsAWizard;DWORD		v_DialogPages[DLG_NUMDLGS] = {	IDD_RAS_WIZ_1,	IDD_RAS_WIZ_2,	IDD_RAS_WIZ_3,	IDD_RAS_WIZ_4,	IDD_RAS_WIZ_5,	IDD_RAS_TCPIP_GEN,	IDD_RAS_TCPIP_NAME_SERV};const TCHAR szAppName[] = TEXT("RemoteNet");TCHAR szTitle[36];const static TBBUTTON tbButton[] = {	{0,             0,        TBSTATE_ENABLED, TBSTYLE_SEP,    0, 0, 0, -1},  {STD_DELETE+12,ID_FILE_DELETE,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,-1},  {STD_PROPERTIES+12,ID_FILE_PROPERTIES,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,-1},  {0, 0,              TBSTATE_ENABLED, TBSTYLE_SEP,               0, 0, 0, -1},  {VIEW_LARGEICONS, ID_VIEW_LARGEICON,TBSTATE_ENABLED,TBSTYLE_CHECKGROUP,0,0,0,-1},  {VIEW_SMALLICONS, ID_VIEW_SMALLICON,TBSTATE_ENABLED,TBSTYLE_CHECKGROUP,0,0,0,-1},  {VIEW_DETAILS, ID_VIEW_DETAILS, TBSTATE_ENABLED, TBSTYLE_CHECKGROUP, 0, 0, 0, -1},};    static TBBUTTON tbButtonPortrait[] = {	{0, 0,        TBSTATE_ENABLED, TBSTYLE_SEP,    0, 0, 0, -1},	{0,ID_CONN_CONN,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,-1},	{0, 0,        TBSTATE_ENABLED, TBSTYLE_SEP,    0, 0, 0, -1},//	{0, ID_CONN_NEW,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,-1},	{STD_PROPERTIES+12,ID_CONN_EDIT,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,-1},	{STD_DELETE+12,ID_CONN_DELETE,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,-1},};    TCHAR	nonStr[10];TCHAR	deleteStr[30];TCHAR	propertiesStr[30];TCHAR	largeIconStr[30];TCHAR	smallIconStr[30];TCHAR	detailsStr[30];const LPTSTR ToolTipsTbl[] = {	nonStr,	deleteStr,	propertiesStr,	largeIconStr,	smallIconStr,	detailsStr};const LPTSTR ToolTipsTblPortrait[] = {	nonStr,	largeIconStr,	smallIconStr,	propertiesStr,	deleteStr,};// Declare the CommCtrl stuff.DECLARE_COMMCTRL_TABLE;void  FAR  PASCAL RegisterIPClass(HINSTANCE);void  FAR  PASCAL UnregisterIPClass(HINSTANCE);void PositionSIP(int nSipState){#ifdef USE_SIP    // Do we have the sip function?    if (g_pSipGetInfo && g_pSipSetInfo)    {	    SIPINFO si;        // See whether the SIP is up or down        memset(&si, 0, sizeof(SIPINFO));        si.cbSize = sizeof(SIPINFO);        if ((*g_pSipGetInfo)(&si))        {            // Has the SIP state changed?            if ((!(si.fdwFlags & SIPF_ON) && SIP_UP == nSipState) ||                (si.fdwFlags & SIPF_ON && !(SIP_UP == nSipState)))            {                si.fdwFlags ^= SIPF_ON;		        (*g_pSipSetInfo)(&si);            }        }    }#endif}BOOLCreateShortcut(TCHAR *pEntryName){    TCHAR   szFmtStr[256];    TCHAR   szPath[256];    TCHAR   szFile[256];    char    szAnsiTarget[128];	HANDLE  hFile;    int     nLinks = 1;    int     Len;		LoadString(v_hInst, IDS_DESKTOP_PATH, szFmtStr,			   sizeof(szFmtStr)/sizeof(TCHAR));        wsprintf(szPath, szFmtStr, pEntryName);    	hFile = CreateFile(szPath, GENERIC_WRITE, 0, NULL, CREATE_NEW,					   FILE_ATTRIBUTE_NORMAL, NULL);    while (hFile == INVALID_HANDLE_VALUE)    {        if (nLinks++ > 20)            return FALSE;		LoadString(v_hInst, IDS_DESKTOP_PATH2, szFmtStr,				   sizeof(szFmtStr)/sizeof(TCHAR));            wsprintf(szPath, szFmtStr,                 pEntryName, nLinks);        hFile = CreateFile(szPath, GENERIC_WRITE, 0, NULL, CREATE_NEW,                           FILE_ATTRIBUTE_NORMAL, NULL);            }    	LoadString(v_hInst, IDS_SHORTCUT_STRING, szFmtStr,			   sizeof(szFmtStr)/sizeof(TCHAR));        wsprintf(szFile, szFmtStr, pEntryName);    Len = _tcslen(szFile);    wsprintf(szPath, TEXT("%d#%s"), Len, szFile);        Len = WideCharToMultiByte(CP_ACP, 0, szPath, -1, szAnsiTarget, 128, NULL, NULL);    WriteFile(hFile, szAnsiTarget, Len, &Len, NULL);    CloseHandle(hFile);        return TRUE;}VOIDUpdateView (DWORD	What){	HMENU	hMenu;		hMenu = CallCommCtrlFunc(CommandBar_GetMenu)(v_hCmdBar, 0);    if (ID_VIEW_LARGEICON == What)         CheckMenuRadioItem(hMenu, ID_VIEW_LARGEICON,                                   ID_VIEW_DETAILS,                                   ID_VIEW_LARGEICON,                                   MF_BYCOMMAND);    if (ID_VIEW_SMALLICON == What)         CheckMenuRadioItem(hMenu, ID_VIEW_LARGEICON,                                   ID_VIEW_DETAILS,                                   ID_VIEW_SMALLICON,                                   MF_BYCOMMAND);    if (ID_VIEW_DETAILS == What)         CheckMenuRadioItem(hMenu, ID_VIEW_LARGEICON,                                   ID_VIEW_DETAILS,                                   ID_VIEW_DETAILS,                                   MF_BYCOMMAND);	SendMessage (v_hCmdBar, TB_CHECKBUTTON, ID_VIEW_LARGEICON,				 MAKELONG((ID_VIEW_LARGEICON == What) ? TRUE : FALSE, 0));	SendMessage (v_hCmdBar, TB_CHECKBUTTON, ID_VIEW_SMALLICON,				 MAKELONG((ID_VIEW_SMALLICON == What) ? TRUE : FALSE, 0));	SendMessage (v_hCmdBar, TB_CHECKBUTTON, ID_VIEW_DETAILS,				 MAKELONG((ID_VIEW_DETAILS == What) ? TRUE : FALSE, 0));}VOIDSetMenu(){	HMENU	hMenu;	DWORD		    cb;	LV_ITEM		    lvi;    MENUITEMINFO    MenuItemInfo;	TCHAR		    szTemp[128];		cb = ListView_GetSelectedCount (v_hListWnd);	lvi.iItem = ListView_GetNextItem(v_hListWnd, -1, LVNI_SELECTED);	hMenu = CallCommCtrlFunc(CommandBar_GetMenu)(v_hCmdBar, 0);	// Set the File->Connect/Create menu to connect	MenuItemInfo.cbSize = sizeof(MENUITEMINFO);	MenuItemInfo.fMask = MIIM_TYPE;	MenuItemInfo.dwTypeData = szTemp;	MenuItemInfo.cch = sizeof(szTemp)/sizeof(TCHAR);	GetMenuItemInfo(hMenu, ID_FILE_CONNECTCREATE, FALSE,					&MenuItemInfo);	MenuItemInfo.fMask = MIIM_TYPE;                        	MenuItemInfo.cch = LoadString(v_hInst, IDS_CONNECT,								  MenuItemInfo.dwTypeData,								  sizeof(szTemp)/sizeof(TCHAR));	SetMenuItemInfo(hMenu, ID_FILE_CONNECTCREATE, FALSE,					&MenuItemInfo);	EnableMenuItem (hMenu, ID_FILE_CONNECTCREATE, MF_GRAYED);	EnableMenuItem (hMenu, ID_FILE_CREATESHORTCUT, MF_GRAYED);	EnableMenuItem (hMenu, ID_FILE_DELETE, MF_GRAYED);	EnableMenuItem (hMenu, ID_FILE_RENAME, MF_GRAYED);	EnableMenuItem (hMenu, ID_FILE_PROPERTIES, MF_GRAYED);	EnableMenuItem (hMenu, ID_EDIT_CREATECOPY, MF_GRAYED);	// Portrait mode menu	EnableMenuItem (hMenu, ID_CONN_CONN, MF_GRAYED);	EnableMenuItem (hMenu, ID_CONN_EDIT, MF_GRAYED);	EnableMenuItem (hMenu, ID_CONN_DELETE, MF_GRAYED);	EnableMenuItem (hMenu, ID_CONN_RENAME, MF_GRAYED);	SendMessage (v_hCmdBar, TB_ENABLEBUTTON, ID_CONN_EDIT,				 MAKELONG(FALSE, 0));	SendMessage (v_hCmdBar, TB_ENABLEBUTTON, ID_CONN_CONN,				 MAKELONG(FALSE, 0));	SendMessage (v_hCmdBar, TB_ENABLEBUTTON, ID_CONN_DELETE,				 MAKELONG(FALSE, 0));	SendMessage (v_hCmdBar, TB_ENABLEBUTTON, ID_FILE_DELETE,				 MAKELONG(FALSE, 0));	SendMessage (v_hCmdBar, TB_ENABLEBUTTON, ID_FILE_PROPERTIES,				 MAKELONG(FALSE, 0));	if (cb == 1) {		if (lvi.iItem == 0) {			// Make new connection			// Set File->Connect/Create menu to create and enable			MenuItemInfo.fMask = MIIM_TYPE;                        			MenuItemInfo.cch = LoadString(v_hInst, IDS_CREATE,										  MenuItemInfo.dwTypeData,										  sizeof(szTemp)/sizeof(TCHAR));			SetMenuItemInfo(hMenu, ID_FILE_CONNECTCREATE, FALSE,							&MenuItemInfo);			EnableMenuItem (hMenu, ID_FILE_CONNECTCREATE,							MF_ENABLED);		} else {			EnableMenuItem (hMenu, ID_FILE_CONNECTCREATE,							MF_ENABLED);			EnableMenuItem (hMenu, ID_FILE_CREATESHORTCUT,							MF_ENABLED);			EnableMenuItem (hMenu, ID_FILE_DELETE,							MF_ENABLED);			EnableMenuItem (hMenu, ID_FILE_RENAME,							MF_ENABLED);			EnableMenuItem (hMenu, ID_FILE_PROPERTIES,							MF_ENABLED);			EnableMenuItem (hMenu, ID_EDIT_CREATECOPY,							MF_ENABLED);			EnableMenuItem (hMenu, ID_CONN_CONN, MF_ENABLED);			EnableMenuItem (hMenu, ID_CONN_EDIT, MF_ENABLED);			EnableMenuItem (hMenu, ID_CONN_DELETE, MF_ENABLED);			EnableMenuItem (hMenu, ID_CONN_RENAME, MF_ENABLED);			SendMessage (v_hCmdBar, TB_ENABLEBUTTON, ID_CONN_EDIT,						 MAKELONG(TRUE, 0));			SendMessage (v_hCmdBar, TB_ENABLEBUTTON, ID_CONN_CONN,						 MAKELONG(TRUE, 0));			SendMessage (v_hCmdBar, TB_ENABLEBUTTON, ID_CONN_DELETE,						 MAKELONG(TRUE, 0));			SendMessage (v_hCmdBar, TB_ENABLEBUTTON, ID_FILE_DELETE,						 MAKELONG(TRUE, 0));			SendMessage (v_hCmdBar, TB_ENABLEBUTTON,						 ID_FILE_PROPERTIES,						 MAKELONG(TRUE, 0));		}	} else {		if (cb != 0) {			// allow shortcuts for multiple items			if (lvi.iItem > 0) {				EnableMenuItem (hMenu, ID_EDIT_CREATECOPY,								MF_ENABLED);			}			EnableMenuItem (hMenu, ID_FILE_CONNECTCREATE,							MF_ENABLED);			EnableMenuItem (hMenu, ID_FILE_CREATESHORTCUT,							MF_ENABLED);			EnableMenuItem (hMenu, ID_FILE_DELETE,							MF_ENABLED);			SendMessage (v_hCmdBar, TB_ENABLEBUTTON, ID_CONN_CONN,						 MAKELONG(TRUE, 0));			SendMessage (v_hCmdBar, TB_ENABLEBUTTON, ID_CONN_DELETE,						 MAKELONG(TRUE, 0));			SendMessage (v_hCmdBar, TB_ENABLEBUTTON, ID_FILE_DELETE,						 MAKELONG(TRUE, 0));			EnableMenuItem (hMenu, ID_CONN_DELETE, MF_ENABLED);		}	}}// ----------------------------------------------------------------//// NotifyHandler ()//// Handle Notification events for the ListView//// ----------------------------------------------------------------LRESULTNotifyHandler (HWND hWnd, NM_LISTVIEW *pnm, LV_DISPINFO *plvdi){	LV_ITEM		    lvi;	PITEMINFO		pItemInfo;	HWND			hwndEdit;	DWORD		    dwTemp;    int             nFormatId;	TCHAR		    szTemp[128];	TCHAR			szFmtStr[128];	DEBUGMSG (ZONE_MISC, (TEXT("Got WM_NOTIFY hdr.code=%d\r\n"),						  pnm->hdr.code));	switch (pnm->hdr.code) {	case LVN_DELETEALLITEMS :		DEBUGMSG (ZONE_MISC, (TEXT("Got LVN_DELETEALLITEMS\r\n")));		return FALSE;	case LVN_DELETEITEM :		if (0 != pnm->iItem) {			DEBUGMSG (ZONE_MISC, (TEXT("Got LVN_DELETEITEM %d\r\n"), pnm->iItem));			LocalFree ((HLOCAL)pnm->lParam);		}		break;	case LVN_GETDISPINFO :		DEBUGMSG (ZONE_MISC, (TEXT("LVN_GETDISPINFO\r\n")));		if (!(plvdi->item.mask & LVIF_TEXT)) {			DEBUGMSG (ZONE_MISC, (TEXT("LVN_GETDISPINFO: Not Text? Mask=0x%X\r\n"),								  plvdi->item.mask));			break;		}		SetMenu();		if (0 == plvdi->item.iItem) {			if (0 == plvdi->item.iSubItem) {				LoadString(v_hInst, IDS_MAKE_NEW,						   plvdi->item.pszText,						   plvdi->item.cchTextMax);			}			break;		}		pItemInfo = (PITEMINFO)plvdi->item.lParam;		switch (plvdi->item.iSubItem) {		case 0 :			_tcsncpy (plvdi->item.pszText,					  pItemInfo->EntryName,					  plvdi->item.cchTextMax);			break;		case 1 :			_tcsncpy (plvdi->item.pszText,					  pItemInfo->szPhone,					  plvdi->item.cchTextMax);			break;		case 2 :			_tcsncpy (plvdi->item.pszText,					  ((PITEMINFO)plvdi->item.lParam)->Entry.szDeviceName,					  plvdi->item.cchTextMax);			break;		}		DEBUGMSG (ZONE_MISC, (TEXT("LVN_GETDISPINFO: Returning string '%s'\r\n"),

⌨️ 快捷键说明

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