📄 remwiz.c
字号:
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 + -