tcpprop.c
来自「wince下的源代码集合打包」· C语言 代码 · 共 395 行
C
395 行
/******************************************************************************Copyright (c) 1995-2000 Microsoft Corporation. All rights reserved.tcpprop.c : Remote networking tcp/ip properties******************************************************************************/#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 "wcommctl.h"extern BOOL v_fPortrait;// -----------------------------------------------------------------------------// -----------------------------------------------------------------------------LRESULT CALLBACKTCPGenDlgProc ( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ){ PROPSHEETPAGE *psp; NMHDR *header; PITEMINFO pItem; DWORD Flag; DEBUGMSG (ZONE_MISC, (TEXT("+TCPGenDlgProc(0x%X, 0x%X, 0x%X, 0x%X)\r\n"), hDlg, message, wParam, lParam)); switch (message) { case WM_NOTIFY : header = (NMHDR*) lParam; if (PSN_APPLY != header->code) { break; } DEBUGMSG (1, (TEXT("Apply Changes....\r\n"))); pItem = (PITEMINFO) GetWindowLong (hDlg, GWL_USERDATA); // Server assigned IP addr check box if (SendMessage(GetDlgItem(hDlg, IDC_SERVIPADDR), BM_GETCHECK, 0, 0)) { // Server assigned IP addr pItem->Entry.dwfOptions &= ~RASEO_SpecificIpAddr; } else { pItem->Entry.dwfOptions |= RASEO_SpecificIpAddr; } // Even if they want server assigned save the IP addr... SendMessage(GetDlgItem(hDlg, IDC_IP_ADDR), IP_GETADDRESS, 0, (LPARAM) ((int *) &pItem->Entry.ipaddr)); // The check boxes if (SendMessage(GetDlgItem(hDlg, IDC_USESLIP), BM_GETCHECK, 0, 0)) { pItem->Entry.dwFramingProtocol = RASFP_Slip; } else { pItem->Entry.dwFramingProtocol = RASFP_Ppp; } if (SendMessage(GetDlgItem(hDlg, IDC_SOFTCOMPCHK), BM_GETCHECK, 0,0)) { pItem->Entry.dwfOptions |= RASEO_SwCompression; } else { pItem->Entry.dwfOptions &= ~RASEO_SwCompression; } if (SendMessage(GetDlgItem(hDlg, IDC_IPCOMP), BM_GETCHECK, 0, 0)) { pItem->Entry.dwfOptions |= RASEO_IpHeaderCompression; } else { pItem->Entry.dwfOptions &= ~RASEO_IpHeaderCompression; } break; case WM_COMMAND : if (LOWORD(wParam) == IDC_SERVIPADDR) { pItem = (PITEMINFO) GetWindowLong (hDlg, GWL_USERDATA); if (SendMessage(GetDlgItem(hDlg, IDC_SERVIPADDR), BM_GETCHECK, 0, 0)) { Flag = FALSE; } else { Flag = TRUE; } EnableWindow(GetDlgItem(hDlg, IDC_IP_ADDR), Flag); EnableWindow(GetDlgItem(hDlg, IDC_IPADDRLABEL), Flag); if (Flag || *(int *) &pItem->Entry.ipaddr) { SendMessage (GetDlgItem(hDlg, IDC_IP_ADDR), IP_SETADDRESS, 0, (LPARAM) *(int *) &pItem->Entry.ipaddr); } else { SendMessage(GetDlgItem(hDlg, IDC_IP_ADDR), IP_CLEARADDRESS, 0, 0); } } break; case WM_INITDIALOG : psp = (PROPSHEETPAGE *)lParam; SetWindowLong (hDlg, GWL_USERDATA, psp->lParam); pItem = (PITEMINFO)psp->lParam; if (_tcscmp (pItem->Entry.szDeviceType, RASDT_Direct)) { // It's a dial-up, change the icon HICON hIcon; hIcon = LoadIcon(v_hInst, MAKEINTRESOURCE((v_fPortrait ? IDI_RNA2 : IDI_RNA))); SendMessage (GetDlgItem (hDlg, IDC_MYICON), STM_SETIMAGE, (WPARAM)IMAGE_ICON, (LPARAM)hIcon); DeleteObject(hIcon); } SetWindowLong (GetParent(hDlg), GWL_EXSTYLE, GetWindowLong(GetParent(hDlg), GWL_EXSTYLE) | WS_EX_NODRAG); SetWindowText (GetDlgItem (hDlg, IDC_CONNLABEL), pItem->EntryName); if (pItem->Entry.dwfOptions & RASEO_SpecificIpAddr) { Flag = 1; } else { Flag = 0; } // Set if non-zero of enabled if (Flag || *(int *) &pItem->Entry.ipaddr) { SendMessage (GetDlgItem(hDlg, IDC_IP_ADDR), IP_SETADDRESS, 0, (LPARAM) *(int *) &pItem->Entry.ipaddr); } SendMessage(GetDlgItem(hDlg, IDC_SERVIPADDR), BM_SETCHECK, !Flag, 0); EnableWindow(GetDlgItem(hDlg, IDC_IP_ADDR), Flag); EnableWindow(GetDlgItem(hDlg, IDC_IPADDRLABEL), Flag); if (pItem->Entry.dwFramingProtocol == RASFP_Slip) { SendMessage(GetDlgItem(hDlg, IDC_USESLIP), BM_SETCHECK, 1, 0); } if (pItem->Entry.dwfOptions & RASEO_SwCompression) { SendMessage(GetDlgItem(hDlg, IDC_SOFTCOMPCHK), BM_SETCHECK, 1, 0); } if (pItem->Entry.dwfOptions & RASEO_IpHeaderCompression) { SendMessage(GetDlgItem(hDlg, IDC_IPCOMP), BM_SETCHECK, 1, 0); } // If it's a VPN type then disable the SLIP option if (_tcscmp (pItem->Entry.szDeviceType, RASDT_Vpn)) { // Not VPN type, enable the control EnableWindow (GetDlgItem (hDlg, IDC_USESLIP), TRUE); } else { // VPN type, disable slip EnableWindow (GetDlgItem (hDlg, IDC_USESLIP), FALSE); } break; default : DEBUGMSG (1, (TEXT("-TCPGenDlgProc: (default) Return FALSE\r\n"))); return (FALSE); } DEBUGMSG (ZONE_MISC, (TEXT("-TCPGenDlgProc: Return TRUE\r\n"))); return TRUE; }// -----------------------------------------------------------------------------// -----------------------------------------------------------------------------LRESULT CALLBACKTCPNameServDlgProc ( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ){ PROPSHEETPAGE *psp; NMHDR *header; PITEMINFO pItem; BOOL Flag; DEBUGMSG (ZONE_MISC, (TEXT("+TCPNameServDlgProc(0x%X, 0x%X, 0x%X, 0x%X)\r\n"), hDlg, message, wParam, lParam)); switch (message) { case WM_NOTIFY : header = (NMHDR*) lParam; if (PSN_APPLY != header->code) { break; } DEBUGMSG (1, (TEXT("Apply Changes....\r\n"))); pItem = (PITEMINFO) GetWindowLong (hDlg, GWL_USERDATA); // Server assigned name server address if (SendMessage(GetDlgItem(hDlg, IDC_NAMESERVADDR), BM_GETCHECK, 0, 0)) { pItem->Entry.dwfOptions &= ~RASEO_SpecificNameServers; memset ((char *)&(pItem->Entry.ipaddrDns), 0, sizeof(RASIPADDR)); memset ((char *)&(pItem->Entry.ipaddrDnsAlt), 0, sizeof(RASIPADDR)); memset ((char *)&(pItem->Entry.ipaddrWins), 0, sizeof(RASIPADDR)); memset ((char *)&(pItem->Entry.ipaddrWinsAlt), 0, sizeof(RASIPADDR)); } else { pItem->Entry.dwfOptions |= RASEO_SpecificNameServers; SendMessage(GetDlgItem(hDlg, IDC_DNS_ADDR), IP_GETADDRESS, 0, (LPARAM) ((int *) &pItem->Entry.ipaddrDns)); SendMessage(GetDlgItem(hDlg, IDC_DNS_ALTADDR), IP_GETADDRESS, 0, (LPARAM) ((int *) &pItem->Entry.ipaddrDnsAlt)); SendMessage(GetDlgItem(hDlg, IDC_WINS_ADDR), IP_GETADDRESS, 0, (LPARAM) ((int *) &pItem->Entry.ipaddrWins)); SendMessage(GetDlgItem(hDlg, IDC_WINS_ALTADDR), IP_GETADDRESS, 0, (LPARAM) ((int *) &pItem->Entry.ipaddrWinsAlt)); } break; case WM_COMMAND : if (LOWORD(wParam) == IDC_NAMESERVADDR) { pItem = (PITEMINFO) GetWindowLong (hDlg, GWL_USERDATA); Flag = !SendMessage(GetDlgItem(hDlg, IDC_NAMESERVADDR), BM_GETCHECK, 0, 0); EnableWindow(GetDlgItem(hDlg, IDC_DNS_ADDR), Flag); EnableWindow(GetDlgItem(hDlg, IDC_DNS_ALTADDR), Flag); EnableWindow(GetDlgItem(hDlg, IDC_WINS_ADDR), Flag); EnableWindow(GetDlgItem(hDlg, IDC_WINS_ALTADDR), Flag); EnableWindow(GetDlgItem(hDlg, IDC_DNS_LABEL), Flag); EnableWindow(GetDlgItem(hDlg, IDC_DNS_ALTLABEL), Flag); EnableWindow(GetDlgItem(hDlg, IDC_WINS_LABEL), Flag); EnableWindow(GetDlgItem(hDlg, IDC_WINS_ALTLABEL), Flag); // If enabled then show the addresses. if (Flag) { SendMessage(GetDlgItem(hDlg, IDC_DNS_ADDR), IP_SETADDRESS, 0, (LPARAM) *((int *) &pItem->Entry.ipaddrDns)); SendMessage(GetDlgItem(hDlg, IDC_DNS_ALTADDR), IP_SETADDRESS, 0, (LPARAM) *((int *) &pItem->Entry.ipaddrDnsAlt)); SendMessage(GetDlgItem(hDlg, IDC_WINS_ADDR), IP_SETADDRESS, 0, (LPARAM) *((int *) &pItem->Entry.ipaddrWins)); SendMessage(GetDlgItem(hDlg, IDC_WINS_ALTADDR), IP_SETADDRESS, 0, (LPARAM) *((int *) &pItem->Entry.ipaddrWinsAlt)); } else { SendMessage(GetDlgItem(hDlg, IDC_DNS_ADDR), IP_CLEARADDRESS, 0, 0); SendMessage(GetDlgItem(hDlg, IDC_DNS_ALTADDR), IP_CLEARADDRESS, 0, 0); SendMessage(GetDlgItem(hDlg, IDC_WINS_ADDR), IP_CLEARADDRESS, 0, 0); SendMessage(GetDlgItem(hDlg, IDC_WINS_ALTADDR), IP_CLEARADDRESS, 0, 0); } } break; case WM_INITDIALOG : psp = (PROPSHEETPAGE *)lParam; SetWindowLong (hDlg, GWL_USERDATA, psp->lParam); pItem = (PITEMINFO)psp->lParam; if (_tcscmp (pItem->Entry.szDeviceType, RASDT_Direct)) { // It's a dial-up, change the icon HICON hIcon; hIcon = LoadIcon(v_hInst, MAKEINTRESOURCE((v_fPortrait ? IDI_RNA2 : IDI_RNA))); SendMessage (GetDlgItem (hDlg, IDC_MYICON), STM_SETIMAGE, (WPARAM)IMAGE_ICON, (LPARAM)hIcon); DeleteObject(hIcon); } SetWindowText (GetDlgItem (hDlg, IDC_CONNLABEL), pItem->EntryName); // Name server address if (pItem->Entry.dwfOptions & RASEO_SpecificNameServers) { Flag = 1; } else { Flag = 0; } // Invert flag for this. SendMessage(GetDlgItem(hDlg, IDC_NAMESERVADDR), BM_SETCHECK, !Flag, 0); // Server assigned name server address, so disable EnableWindow(GetDlgItem(hDlg, IDC_DNS_ADDR), Flag); EnableWindow(GetDlgItem(hDlg, IDC_DNS_ALTADDR), Flag); EnableWindow(GetDlgItem(hDlg, IDC_WINS_ADDR), Flag); EnableWindow(GetDlgItem(hDlg, IDC_WINS_ALTADDR), Flag); EnableWindow(GetDlgItem(hDlg, IDC_DNS_LABEL), Flag); EnableWindow(GetDlgItem(hDlg, IDC_DNS_ALTLABEL), Flag); EnableWindow(GetDlgItem(hDlg, IDC_WINS_LABEL), Flag); EnableWindow(GetDlgItem(hDlg, IDC_WINS_ALTLABEL), Flag); if (Flag) { SendMessage(GetDlgItem(hDlg, IDC_DNS_ADDR), IP_SETADDRESS, 0, (LPARAM) *((int *) &pItem->Entry.ipaddrDns)); SendMessage(GetDlgItem(hDlg, IDC_DNS_ALTADDR), IP_SETADDRESS, 0, (LPARAM) *((int *) &pItem->Entry.ipaddrDnsAlt)); SendMessage(GetDlgItem(hDlg, IDC_WINS_ADDR), IP_SETADDRESS, 0, (LPARAM) *((int *) &pItem->Entry.ipaddrWins)); SendMessage(GetDlgItem(hDlg, IDC_WINS_ALTADDR), IP_SETADDRESS, 0, (LPARAM) *((int *) &pItem->Entry.ipaddrWinsAlt)); } break; default : DEBUGMSG (1, (TEXT("-TCPNameServDlgProc: (default) Return FALSE\r\n"))); return (FALSE); } DEBUGMSG (ZONE_MISC, (TEXT("-TCPNameServDlgProc: Return TRUE\r\n"))); return TRUE; }int CALLBACK PropSheetProc( HWND hwndDlg, // handle to the property sheet dialog box UINT uMsg, // message identifier LPARAM lParam // message parameter ){ DEBUGMSG (1, (TEXT("PropSheetProc(0x%X, 0x%X, 0x%X)\r\n"), hwndDlg, uMsg, lParam)); return 0;} BOOLTCP_IP_Properties(HWND hWndOwner, PITEMINFO pItem){ PROPSHEETPAGE psp[2]; PROPSHEETHEADER psh; TCHAR szCaption1[30]; TCHAR szCaption2[30]; TCHAR szTitle[30]; psp[0].dwSize = sizeof(PROPSHEETPAGE); psp[0].dwFlags = PSP_USETITLE; psp[0].hInstance = v_hInst; psp[0].pszTemplate = MAKEINTRESOURCE(v_DialogPages[DLG_TCP_GEN]); psp[0].pszIcon = NULL; psp[0].pfnDlgProc = TCPGenDlgProc; LoadString(v_hInst, IDS_TCPIP_GENERAL, szCaption1, sizeof(szCaption1)/sizeof(szCaption1[0])); psp[0].pszTitle = szCaption1; psp[0].lParam = (LPARAM)pItem; psp[0].pfnCallback = NULL; psp[1].dwSize = sizeof(PROPSHEETPAGE); psp[1].dwFlags = PSP_USETITLE; psp[1].hInstance = v_hInst; psp[1].pszTemplate = MAKEINTRESOURCE(v_DialogPages[DLG_TCP_NS]); psp[1].pszIcon = NULL; psp[1].pfnDlgProc = TCPNameServDlgProc; LoadString(v_hInst, IDS_TCPIP_NAME_SERV, szCaption2, sizeof(szCaption2)/sizeof(szCaption2[0])); psp[1].pszTitle = szCaption2; psp[1].lParam = (LPARAM)pItem; psp[1].pfnCallback = NULL; psh.dwSize = sizeof(PROPSHEETHEADER); psh.dwFlags = PSH_PROPSHEETPAGE | PSH_USECALLBACK; psh.hwndParent = hWndOwner; psh.hInstance = v_hInst; psh.pszIcon = NULL; LoadString(v_hInst, IDS_TCPIP_SETTINGS, szTitle, sizeof(szTitle)/sizeof(szTitle[0])); psh.pszCaption = (LPTSTR) szTitle; psh.nPages = 2; psh.nStartPage = 0; // we will always jump to the first page psh.ppsp = (LPCPROPSHEETPAGE) &psp; psh.pfnCallback = PropSheetProc; return CallCommCtrlFunc(PropertySheetW)(&psh);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?