remwiz.c
来自「wince下的源代码集合打包」· C语言 代码 · 共 1,095 行 · 第 1/3 页
C
1,095 行
/******************************************************************************Copyright (c) 1995-2000 Microsoft Corporation. All rights reserved.remwiz.c : Remote networking wizard dialogs******************************************************************************/// ----------------------------------------------------------------//// IDD_RAS_WIZ_1// ( Enter Name and Dial/Direct/Vpn)// |// +-------Dial?-------> IDD_RAS_WIZ_2 // | (Enter Modem Name, have Config+TCP settings)// | |// | |// | IDD_RAS_WIZ_3// | (Enter Phone Num, Fin)// | // |// |// +-------Direct?-----> IDD_RAS_WIZ_4// | (Enter DevName, Fin)// | (Config + TCP Settings)// |// |// |// +-------VPN?--------> IDD_RAS_WIZ_5// (Enter DevName, Fin)// (Config + TCP Settings)//////////// ----------------------------------------------------------------#include <windows.h>#include <tchar.h>#include "string.h"#include "memory.h"#include "commctrl.h"#include "remnet.h"#include "resource.h"#include "ipaddr.h"#include "tapi.h"#include "unimodem.h"#include "dbt.h"PBYTE v_pDevConfig;DWORD v_dwDevConfigSize;DWORD Device;BOOL v_EnteredAsAWizard;extern BOOL v_fPortrait;extern const TCHAR szAppName[];extern HINSTANCE v_hInst;#define COUNTRY_CODE_SIZE 16WNDPROC g_pEditProc;// // ----------------------------------------------------------------//// GetRasDevices//// Call's RasEnumDevices() to get an array of the Ras Device names// and types.//// Returns the number of devices found.//// NOTE: Caller is responsible for freeing the pRasDevInfo data.//// Example usage://// 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);// }//// ---------------------------------------------------------------- DWORDGetRasDevices (LPRASDEVINFO *pRasDevInfo){ DWORD cBytes, cNumDev, dwRetVal; *pRasDevInfo = NULL; cBytes = 0; cNumDev = 0; dwRetVal = RasEnumDevices (NULL, &cBytes, &cNumDev); if (0 == dwRetVal) { // Allocate a buffer *pRasDevInfo = (LPRASDEVINFO) LocalAlloc (LPTR, cBytes); if (pRasDevInfo) { dwRetVal = RasEnumDevices (*pRasDevInfo, &cBytes, &cNumDev); } else { DEBUGMSG (ZONE_ERROR, (TEXT("Error %d doing LocalAlloc of RasDev's\r\n"), GetLastError())); LocalFree (*pRasDevInfo); *pRasDevInfo = NULL; cNumDev = 0; } } else { DEBUGMSG (ZONE_ERROR, (TEXT("Error %d from RasEnumDevices()\r\n"), dwRetVal)); cNumDev = 0; }#ifdef DEBUG DEBUGMSG (1, (TEXT("GetRasDevices: Found %d devices\r\n"), cNumDev)); for (cBytes=0; cBytes < cNumDev; cBytes++) { DEBUGMSG (1, (TEXT("\tDev[%d] : Name='%s' Type='%s'\r\n"), cBytes, (*pRasDevInfo)[cBytes].szDeviceName, (*pRasDevInfo)[cBytes].szDeviceType)); }#endif return cNumDev;} LONG EditFullWidthConversionSubclassProc( HWND hwnd, UINT nMsg, WPARAM wparam, LPARAM lparam){ TCHAR ch, chHW; ASSERT (g_pEditProc); switch(nMsg) { case WM_CHAR: ch = (TCHAR)wparam; LCMapString(LOCALE_USER_DEFAULT, LCMAP_HALFWIDTH, &ch, 1, &chHW, 1); wparam = (WPARAM)chHW; break; } return CallWindowProc(g_pEditProc, hwnd, nMsg, wparam, lparam);}BOOLGetDialUpSettings(HWND hDlg, TCHAR CountryCode[], BOOL Validate){ TCHAR *pGet, *pPut; TCHAR szTemp[128]; UINT szTempSize = sizeof(szTemp) / sizeof(TCHAR); TCHAR szFmtStr[128]; UINT cFmtStrSize = sizeof(szFmtStr) / sizeof(TCHAR); // Area code GetWindowText (GetDlgItem (hDlg, IDC_AREA_CODE), EditItem.Entry.szAreaCode, RAS_MaxAreaCode+1); // Phone Number GetWindowText (GetDlgItem (hDlg, IDC_PHONE_NUM), EditItem.Entry.szLocalPhoneNumber, RAS_MaxPhoneNumber+1); // trim white space in phone number pGet = pPut = EditItem.Entry.szLocalPhoneNumber; while (*pPut != TEXT('\0')) { if (*pGet != TEXT(' ')) *pPut++ = *pGet; pGet++; } if (Validate) { // Validate Phone... if (TEXT('\0') == EditItem.Entry.szLocalPhoneNumber[0]) { LoadString(v_hInst, IDS_PHONEREQ, szFmtStr, cFmtStrSize); LoadString(v_hInst, (v_fPortrait) ? IDS_CONNECTIONS : IDS_REMNET, szTemp, szTempSize); MessageBox (hDlg, szFmtStr, szTemp, MB_OK | MB_ICONWARNING); // Will this make it blink? SetFocus(GetDlgItem(hDlg, IDC_PHONE_NUM)); return FALSE; } } // Country Code GetWindowText (GetDlgItem (hDlg, IDC_COUNTRY), CountryCode, COUNTRY_CODE_SIZE); if (CountryCode[0] == TEXT('\0')) EditItem.Entry.dwCountryCode = 0; else EditItem.Entry.dwCountryCode = My_atoi(CountryCode); // Country code check box if (SendMessage(GetDlgItem(hDlg, IDC_FORCELD), BM_GETCHECK, 0, 0)) { EditItem.Entry.dwfOptions |= RASEO_UseCountryAndAreaCodes; } else { EditItem.Entry.dwfOptions &= ~(RASEO_UseCountryAndAreaCodes); } if (SendMessage(GetDlgItem(hDlg, IDC_FORCELOCAL), BM_GETCHECK, 0, 0)) { EditItem.Entry.dwfOptions |= RASEO_DialAsLocalCall; } else { EditItem.Entry.dwfOptions &= ~(RASEO_DialAsLocalCall); } // -- if they have checked the force local checkbox, make sure they have entered an area code if (Validate) { if ((EditItem.Entry.dwfOptions & RASEO_DialAsLocalCall) && (TEXT('\0') == EditItem.Entry.szAreaCode[0])) { LoadString(v_hInst, IDS_AREAREQ, szFmtStr, cFmtStrSize); LoadString(v_hInst, (v_fPortrait) ? IDS_CONNECTIONS : IDS_REMNET, szTemp, szTempSize); MessageBox (hDlg, szFmtStr, szTemp, MB_OK | MB_ICONWARNING); // Will this make it blink? SetFocus(GetDlgItem(hDlg, IDC_AREA_CODE)); return FALSE; } } return TRUE;}voidFixButtons(HWND hDlg, DWORD Dialog_IDD){ LONG dwStyle; TCHAR szFmtStr[128]; UINT cFmtStrSize = sizeof(szFmtStr) / sizeof(TCHAR); if (!v_EnteredAsAWizard) { dwStyle = GetWindowLong(hDlg, GWL_STYLE); SetWindowLong(hDlg, GWL_STYLE, dwStyle | WS_SYSMENU); dwStyle = GetWindowLong(hDlg, GWL_EXSTYLE); SetWindowLong(hDlg, GWL_EXSTYLE, dwStyle | WS_EX_CAPTIONOKBTN); // Not a wizard, so hide buttons ShowWindow(GetDlgItem(hDlg, IDBACK), SW_HIDE); ShowWindow(GetDlgItem(hDlg, IDFINISH), SW_HIDE); // Rename dialog title if (Dialog_IDD == v_DialogPages[DLG_PG_2]) { LoadString(v_hInst, IDS_DIALUPTITLE, szFmtStr, cFmtStrSize); SetWindowText(hDlg, szFmtStr); } if (Dialog_IDD == v_DialogPages[DLG_PG_4]) { LoadString(v_hInst, IDS_DIRECTTITLE, szFmtStr, cFmtStrSize); SetWindowText(hDlg, szFmtStr); } if (Dialog_IDD == v_DialogPages[DLG_PG_5]) { LoadString(v_hInst, IDS_VPNTITLE, szFmtStr, cFmtStrSize); SetWindowText(hDlg, szFmtStr); } }}VOIDNextPage (HWND hDlg, DWORD NextPage){ LV_ITEM lvi; if (0 == NextPage) { RasSetEntryProperties (NULL, EditItem.EntryName, &(EditItem.Entry), sizeof(EditItem.Entry), v_pDevConfig, v_dwDevConfigSize); // Refresh the list? InitListViewItems(v_hListWnd); // Set this one as the selected one. ListView_SetItemState (v_hListWnd, 0, 0, LVIS_SELECTED|LVIS_FOCUSED); for (lvi.iItem = -1; (-1 != (lvi.iItem = ListView_GetNextItem(v_hListWnd, lvi.iItem, LVNI_ALL)));) { if (0 == lvi.iItem) { continue; } lvi.iSubItem = 0; lvi.mask = LVIF_PARAM; ListView_GetItem(v_hListWnd, &lvi); if (!_tcscmp (EditItem.EntryName, ((PITEMINFO)lvi.lParam)->EntryName)) { ListView_SetItemState (v_hListWnd, lvi.iItem, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED); break; } } // Peform Abort cleanup. NextPage = (DWORD)-1; } if ((DWORD)-1 == NextPage) { // Cancel... // Free the Device config info if (v_pDevConfig) { LocalFree (v_pDevConfig); v_pDevConfig = NULL; v_dwDevConfigSize = 0; } // Bring the SIP down PositionSIP(SIP_DOWN); DestroyWindow (hDlg); SetFocus (v_hListWnd); v_hDialogWnd = NULL; return; } // Must have a new page to display v_hDialogWnd = CreateDialog (v_hInst, MAKEINTRESOURCE(NextPage), v_hMainWnd, ConnWizDlgProc); DestroyWindow (hDlg); }VOIDDoNext (HWND hDlg){ DWORD i; TCHAR szTemp[128]; TCHAR szFmtStr[128]; int nFormatId; LPRASDEVINFO pRasDevInfo; DWORD dwRasDevices; if (v_WizDialog == v_DialogPages[DLG_PG_1]) { // Validate the input. GetWindowText (GetDlgItem (hDlg, IDC_REMNAME), EditItem.EntryName, RAS_MaxEntryName+1); if (i = RasValidateEntryName(NULL, EditItem.EntryName)) { if (i == ERROR_ALREADY_EXISTS) { nFormatId = IDS_ALREADY_EXISTS; } else if (*EditItem.EntryName) { nFormatId = IDS_BADNAME; } else { nFormatId = IDS_NULLNAME; } SetFocus (GetDlgItem(hDlg, IDC_REMNAME)); LoadString(v_hInst, nFormatId, szFmtStr, sizeof(szFmtStr) / sizeof(TCHAR)); LoadString(v_hInst, (v_fPortrait) ? IDS_CONNECTIONS : IDS_REMNET, szTemp, sizeof(szTemp) / sizeof(TCHAR));
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?