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

📄 remwiz.c

📁 See Hanoi.cpp for the implementation of this cla
💻 C
📖 第 1 页 / 共 3 页
字号:
			MessageBox (hDlg, szFmtStr, szTemp, MB_OK | MB_ICONWARNING);
			// Will this make it blink?
			return;
		}

		// Validate the input.
		if (SendMessage (GetDlgItem (hDlg, IDC_DIALUPCONN),
						 BM_GETCHECK, 0, 0)) {
			_tcscpy (EditItem.Entry.szDeviceType,
					 RASDT_Modem);

			dwRasDevices = GetRasDevices (&pRasDevInfo);
			for (i=0; i < dwRasDevices; i++) {
				if (!_tcscmp (pRasDevInfo[i].szDeviceType, RASDT_Modem)) {
					_tcscpy (EditItem.Entry.szDeviceName, pRasDevInfo[0].szDeviceName);
					break;
				}
			}
			if (pRasDevInfo) {
				LocalFree (pRasDevInfo);
			}
			
			// Follow Dial-Up path.
			v_WizDialog = v_DialogPages[DLG_PG_2];
		} else if (SendMessage (GetDlgItem (hDlg, IDC_DIRECTCONN),
								BM_GETCHECK, 0, 0)) {
			// They want a direct connection.
			_tcscpy (EditItem.Entry.szDeviceType,
					 RASDT_Direct);

			// Set the IP address for Replication
			EditItem.Entry.ipaddr.d = 192;
			EditItem.Entry.ipaddr.c = 168;
			EditItem.Entry.ipaddr.b = 55;
			EditItem.Entry.ipaddr.a = 100;

			// Follow Direct-Connect path
			v_WizDialog = v_DialogPages[DLG_PG_4];
		} else if (SendMessage (GetDlgItem (hDlg, IDC_VPNCONN),
								BM_GETCHECK, 0, 0)) {
			// They want a direct connection.
			_tcscpy (EditItem.Entry.szDeviceType,
					 RASDT_Vpn);
			v_WizDialog = v_DialogPages[DLG_PG_5];
		} else {
			ASSERT(0);
			DEBUGMSG (1, (TEXT("Wrong page?\r\n")));
		}
	} else if (v_WizDialog == v_DialogPages[DLG_PG_2]) {

		GetWindowText (GetDlgItem (hDlg, IDC_MODEM),
					   EditItem.Entry.szDeviceName,
					   RAS_MaxDeviceName+1);
		v_WizDialog = v_DialogPages[DLG_PG_3];
	}
	NextPage (hDlg, v_WizDialog);
}
void CALLBACK 
lineCallbackFunc(DWORD dwDevice, DWORD dwMsg, DWORD dwCallbackInstance, 
				 DWORD dwParam1, DWORD dwParam2, DWORD dwParam3)
{
	// NULL function.  I can't do a lineInitialize without this function.
	// Since I never dial I don't actually care about any of the state changes
	return;
}
LPLINETRANSLATECAPS
GetTranslateCaps ()
{
	LPLINETRANSLATECAPS pLineTranCaps = NULL;
	DWORD				dwNeededSize;
	long				lReturn;
	HLINEAPP			hLineApp;
	DWORD				dwVersion = TAPI_CURRENT_VERSION;
	DWORD				dwNumDevs;

	DEBUGMSG (ZONE_FUNCTION,
			  (TEXT("+GetTranslateCaps()\r\n")));

	lReturn = lineInitialize (&hLineApp, v_hInst, lineCallbackFunc, szAppName, &dwNumDevs);

	if (lReturn) {
		DEBUGMSG (ZONE_FUNCTION | ZONE_ERROR,
				  (TEXT("-GetTranslateCaps(): Error %d from lineInitialize\r\n"),
				   lReturn));
		return NULL;
	}
	
	dwNeededSize = sizeof(LINETRANSLATECAPS);

	while (1) {
		pLineTranCaps = LocalAlloc (LPTR, dwNeededSize);
		if (NULL == pLineTranCaps) {
			DEBUGMSG (ZONE_ERROR|ZONE_ALLOC,
					 (TEXT("!GetTranslateCaps: Alloc failed\r\n")));
			break;
		}
		pLineTranCaps->dwTotalSize = dwNeededSize;
		lReturn = lineGetTranslateCaps (hLineApp, dwVersion, pLineTranCaps);

		if (lReturn) {
			DEBUGMSG (ZONE_ERROR, (TEXT(" GetTranslateCaps:lineGetTranslateCaps returned 0x%X\r\n"),
								   lReturn));
			LocalFree (pLineTranCaps);
			pLineTranCaps = NULL;
			break;
		}
		if (pLineTranCaps->dwNeededSize > pLineTranCaps->dwTotalSize) {
			dwNeededSize = pLineTranCaps->dwNeededSize;
			LocalFree (pLineTranCaps);
			pLineTranCaps = NULL;
			continue;
		}
		break;
	}

	lineShutdown (hLineApp);

	DEBUGMSG (ZONE_FUNCTION, (TEXT("-TapiLineGetTranslateCaps Returning 0x%X\r\n"), 
							  pLineTranCaps));
	return pLineTranCaps;
	
}
DWORD
GetDefaultCountryCode ()
{
	LPLINETRANSLATECAPS pCaps;
	LPLINELOCATIONENTRY	pLocEntry;
	int	i;
	DWORD	CountryCode = 0;

	pCaps = GetTranslateCaps();
	
	if (pCaps) {
        if( pCaps->dwLocationListSize ) {
            pLocEntry = (LPLINELOCATIONENTRY) ((LPBYTE)pCaps + pCaps->dwLocationListOffset);
            for( i=0; i < (int)pCaps->dwNumLocations; i++ ) {
                if( pLocEntry[i].dwPermanentLocationID ==
					pCaps->dwCurrentLocationID ) {
					CountryCode = pLocEntry[i].dwCountryCode;
				}
			}
		}
		LocalFree (pCaps);
	}
	return CountryCode;
}
VOID
GetDefaultAreaCode (PTCHAR szAreaCode, DWORD cMaxLen)
{
	LPLINETRANSLATECAPS pCaps;
	LPLINELOCATIONENTRY	pLocEntry;
	int	i;
	DWORD	CountryCode = 0;

	szAreaCode[0] = TEXT('\0');
	
	pCaps = GetTranslateCaps();
	
	if (pCaps) {
        if( pCaps->dwLocationListSize ) {
            pLocEntry = (LPLINELOCATIONENTRY) ((LPBYTE)pCaps + pCaps->dwLocationListOffset);
            for( i=0; i < (int)pCaps->dwNumLocations; i++ ) {
                if( pLocEntry[i].dwPermanentLocationID ==
					pCaps->dwCurrentLocationID ) {
					_tcsncpy (szAreaCode, (LPTSTR)((LPBYTE)pCaps +
						pLocEntry[i].dwCityCodeOffset),
							  cMaxLen);
				}
			}
		}
		LocalFree (pCaps);
	}
	return;
}

DWORD WINAPI
DevConfigThread (LPVOID pvarg)
{
	DWORD	dwNeededSize;
	LPVARSTRING	pVarString;
	HWND	hDlg = (HWND)pvarg;
	DWORD	RetVal;
	
	dwNeededSize = sizeof(VARSTRING);
	while (1) {
		pVarString = (LPVARSTRING)LocalAlloc (LPTR, dwNeededSize);
		pVarString->dwTotalSize = dwNeededSize;
		if (NULL == v_pDevConfig) {
			v_dwDevConfigSize = 0;
		}

		RetVal = RasDevConfigDialogEdit (EditItem.Entry.szDeviceName,
										 EditItem.Entry.szDeviceType,
										 hDlg, v_pDevConfig, v_dwDevConfigSize,
										 pVarString);
		if (STATUS_SUCCESS != RetVal) {
			DEBUGMSG (ZONE_ERROR, (TEXT("RemNet: Error 0x%X(%d) from RasDevConfigDialogEdit\r\n"),
								   RetVal, RetVal));
			LocalFree (pVarString);
			break;
		} else if (pVarString->dwNeededSize > pVarString->dwTotalSize) {
			// Structure not large enough.  Get new size and free original
			dwNeededSize = pVarString->dwNeededSize;
			LocalFree (pVarString);
		} else {
			// Free the original.
			if (v_pDevConfig) {
				v_dwDevConfigSize = 0;
				LocalFree (v_pDevConfig);
			}
			v_pDevConfig = (PBYTE)LocalAlloc (LMEM_FIXED, pVarString->dwStringSize);
			if (NULL == v_pDevConfig) {
				DEBUGMSG (ZONE_ERROR, (TEXT("RemNet: Unable to allocate v_pDevConfig\r\n")));
			} else {
				memcpy (v_pDevConfig, (LPBYTE)pVarString + pVarString->dwStringOffset, pVarString->dwStringSize);
				v_dwDevConfigSize = pVarString->dwStringSize;
			}
			LocalFree (pVarString);
			break;
		}
	}
	return 0;
}

LRESULT CALLBACK
ConnWizDlgProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    TCHAR   CountryCode[COUNTRY_CODE_SIZE];
	DWORD	dwStyle;
	DWORD	i;
    int     nDefFocus;
	long	lResult;
	TCHAR   szTemp[128];
    UINT    cTempStrSize = sizeof(szTemp) / sizeof(TCHAR);
	LPRASDEVINFO	pRasDevInfo;
	DWORD	dwRasDevices;
	DWORD	RetVal;

    
    switch (message) {
	case WM_HELP :
		RETAILMSG (1, (TEXT("PegHelp file:rnetw.htm#Main_Contents\r\n")));
		CreateProcess(TEXT("peghelp"),TEXT("file:rnetw.htm#Main_Contents"),
					  NULL,NULL,FALSE,0,NULL,NULL,NULL,NULL);
		break;
		
	case WM_DEVICECHANGE :

		// Are we on Wiz2?
		if (v_WizDialog == v_DialogPages[DLG_PG_2]) {
			GetWindowText (GetDlgItem (hDlg, IDC_MODEM),
						   EditItem.Entry.szDeviceName,
						   RAS_MaxDeviceName+1);

			// Clear the list...
			SendMessage(GetDlgItem (hDlg, IDC_MODEM),
						CB_RESETCONTENT, 0, 0);

			dwRasDevices = GetRasDevices (&pRasDevInfo);

			for (i=0; i < dwRasDevices; i++) {
				if (!_tcscmp (pRasDevInfo[i].szDeviceType, RASDT_Modem)) {
					SendMessage(GetDlgItem (hDlg, IDC_MODEM),
								CB_ADDSTRING,
								0, (LPARAM)pRasDevInfo[i].szDeviceName);
				}
			}
			if (pRasDevInfo) {
				LocalFree (pRasDevInfo);
			}
			
			// Try to find the modem in the list.
			lResult = SendMessage (GetDlgItem (hDlg, IDC_MODEM),
								   CB_FINDSTRINGEXACT,
								   0,
								   (LPARAM)EditItem.Entry.szDeviceName);

			if (lResult == CB_ERR) {
				// Couldn't find it, just set to first entry
				SendMessage (GetDlgItem (hDlg, IDC_MODEM),
							 CB_SETCURSEL, 0, 0);
			} else {
				// Set to the correct device.
				SendMessage (GetDlgItem (hDlg, IDC_MODEM),
							 CB_SETCURSEL, (WPARAM)lResult, 0);
			}
		} else if (v_WizDialog == v_DialogPages[DLG_PG_4]) {
			// Save the users current value
			GetWindowText (GetDlgItem (hDlg, IDC_MODEM),
						   EditItem.Entry.szDeviceName,
						   RAS_MaxDeviceName+1);

			// Clear the list...
			SendMessage(GetDlgItem (hDlg, IDC_MODEM),
						CB_RESETCONTENT, 0, 0);

			dwRasDevices = GetRasDevices (&pRasDevInfo);

			for (i=0; i < dwRasDevices; i++) {
				if (!_tcscmp (pRasDevInfo[i].szDeviceType, RASDT_Direct)) {
					SendMessage(GetDlgItem (hDlg, IDC_MODEM),
								CB_ADDSTRING,
								0, (LPARAM)pRasDevInfo[i].szDeviceName);
				}
			}
			if (pRasDevInfo) {
				LocalFree (pRasDevInfo);
			}

			// Try to find the modem in the list.
			lResult = SendMessage (GetDlgItem (hDlg, IDC_MODEM),
								   CB_FINDSTRINGEXACT, 0,
								   (LPARAM)EditItem.Entry.szDeviceName);

			if (lResult == CB_ERR) {
				// Couldn't find it, just set to first entry
				SendMessage (GetDlgItem (hDlg, IDC_MODEM),
							 CB_SETCURSEL, 0, 0);
			} else {
				// Set to the correct device.
				SendMessage (GetDlgItem (hDlg, IDC_MODEM),
							 CB_SETCURSEL, (WPARAM)lResult, 0);
			}
		}
		break;
	case WM_INITDIALOG :
		dwStyle = GetWindowLong (hDlg, GWL_EXSTYLE);
        if (!v_fPortrait) {
            dwStyle |= WS_EX_CONTEXTHELP;
        }
		SetWindowLong (hDlg, GWL_EXSTYLE, dwStyle | WS_EX_NODRAG |
					   WS_EX_WINDOWEDGE | WS_EX_CAPTIONOKBTN);
		
		if (NULL == v_pDevConfig) {
			RASENTRY	RasEntry;
			DWORD		dwSize;

			// Read in the previous DevConfig if any
			dwSize = sizeof(RasEntry);
			RasEntry.dwSize = dwSize;
			v_dwDevConfigSize = 0;
			RetVal = RasGetEntryProperties (NULL, EditItem.EntryName, &(RasEntry),
											&dwSize, NULL,
											&v_dwDevConfigSize);

			if (v_dwDevConfigSize && (ERROR_BUFFER_TOO_SMALL == RetVal)) {
				v_pDevConfig = (PBYTE)LocalAlloc (LPTR, v_dwDevConfigSize);
				if (v_pDevConfig) {
					RetVal = RasGetEntryProperties (NULL, EditItem.EntryName,
						&(RasEntry), &dwSize, v_pDevConfig,
						&v_dwDevConfigSize);
					DEBUGMSG (RetVal, (TEXT("Error %d from RasGetEntryProperties\r\n")));
					ASSERT (RetVal == 0);
				}
			}
		}
			
		if (v_WizDialog == v_DialogPages[DLG_PG_1]) {

			// Set the connection name.
			SetWindowText (GetDlgItem (hDlg, IDC_REMNAME),EditItem.EntryName);

			// Restrict them to 20 characters
			SendMessage (GetDlgItem (hDlg, IDC_REMNAME), EM_LIMITTEXT,
						 RAS_MaxEntryName, 0);

⌨️ 快捷键说明

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