VOID InsertColumnToListView(HWND hDlgCtrl, UINT ResId, UINT SubItem, UINT Size);
INT_PTR StoreTcpipBasicSettings(HWND hwndDlg, TcpipConfNotifyImpl * This, BOOL bApply);
HRESULT Initialize(TcpipConfNotifyImpl * This);
+UINT GetIpAddressFromStringW(WCHAR *szBuffer);
VOID
DisplayError(UINT ResTxt, UINT ResTitle, UINT Type)
}
}
+static
+VOID
+EnableIpButtons(
+ HWND hwndDlg)
+{
+ BOOL bEnable;
+
+ bEnable = (ListView_GetItemCount(GetDlgItem(hwndDlg, IDC_IPLIST)) != 0);
+
+ EnableWindow(GetDlgItem(hwndDlg, IDC_IPMOD), bEnable);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_IPDEL), bEnable);
+}
+
+static
+VOID
+EnableGwButtons(
+ HWND hwndDlg)
+{
+ BOOL bEnable;
+
+ bEnable = (ListView_GetItemCount(GetDlgItem(hwndDlg, IDC_GWLIST)) != 0);
+
+ EnableWindow(GetDlgItem(hwndDlg, IDC_GWMOD), bEnable);
+ EnableWindow(GetDlgItem(hwndDlg, IDC_GWDEL), bEnable);
+}
VOID
InitializeTcpipAdvancedIpDlg(
else
{
InsertIpAddressToListView(GetDlgItem(hwndDlg, IDC_IPLIST), This->pCurrentConfig->Ip, TRUE);
+ EnableIpButtons(hwndDlg);
}
InsertColumnToListView(GetDlgItem(hwndDlg, IDC_GWLIST), IDS_GATEWAY, 0, 100);
InsertColumnToListView(GetDlgItem(hwndDlg, IDC_GWLIST), IDS_METRIC, 1, (rect.right - rect.left - 100));
InsertIpAddressToListView(GetDlgItem(hwndDlg, IDC_GWLIST), This->pCurrentConfig->Gw, FALSE);
+ EnableGwButtons(hwndDlg);
+
SendDlgItemMessageW(hwndDlg, IDC_METRIC, EM_LIMITTEXT, 4, 0);
}
case WM_INITDIALOG:
pGwSettings = (TcpipGwSettings *)lParam;
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)lParam);
+
+ SendDlgItemMessageW(hwndDlg, IDC_IPADDR, IPM_SETRANGE, 0, MAKEIPRANGE(1, 223));
+ SendDlgItemMessageW(hwndDlg, IDC_IPADDR, IPM_SETRANGE, 1, MAKEIPRANGE(0, 255));
+ SendDlgItemMessageW(hwndDlg, IDC_IPADDR, IPM_SETRANGE, 2, MAKEIPRANGE(0, 255));
+ SendDlgItemMessageW(hwndDlg, IDC_IPADDR, IPM_SETRANGE, 3, MAKEIPRANGE(0, 255));
+
if (pGwSettings->bAdd)
{
if (LoadStringW(netcfgx_hInstance, IDS_ADD, szBuffer, sizeof(szBuffer)/sizeof(WCHAR)))
szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0';
SendDlgItemMessageW(hwndDlg, IDC_OK, WM_SETTEXT, 0, (LPARAM)szBuffer);
}
- SendDlgItemMessageW(hwndDlg, IDC_IPADDR, WM_SETTEXT, 0, (LPARAM)pGwSettings->szIP);
+
+ SendDlgItemMessageW(hwndDlg, IDC_IPADDR, IPM_SETADDRESS, 0, (LPARAM)GetIpAddressFromStringW(pGwSettings->szIP));
+
if (pGwSettings->Metric)
{
SetDlgItemInt(hwndDlg, IDC_METRIC, pGwSettings->Metric, FALSE);
EnableWindow(GetDlgItem(hwndDlg, IDC_METRICTXT), FALSE);
}
}
- SendDlgItemMessageW(hwndDlg, IDC_IPADDR, IPM_SETRANGE, 0, MAKEIPRANGE(1, 223));
- SendDlgItemMessageW(hwndDlg, IDC_IPADDR, IPM_SETRANGE, 1, MAKEIPRANGE(0, 255));
- SendDlgItemMessageW(hwndDlg, IDC_IPADDR, IPM_SETRANGE, 2, MAKEIPRANGE(0, 255));
- SendDlgItemMessageW(hwndDlg, IDC_IPADDR, IPM_SETRANGE, 3, MAKEIPRANGE(0, 255));
return TRUE;
case WM_COMMAND:
if (LOWORD(wParam) == IDC_USEMETRIC)
szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0';
SendDlgItemMessageW(hwndDlg, IDC_OK, WM_SETTEXT, 0, (LPARAM)szBuffer);
}
- SendDlgItemMessageW(hwndDlg, IDC_IPADDR, WM_SETTEXT, 0, (LPARAM)pIpSettings->szIP);
- SendDlgItemMessageW(hwndDlg, IDC_SUBNETMASK, WM_SETTEXT, 0, (LPARAM)pIpSettings->szMask);
+
+ SendDlgItemMessageW(hwndDlg, IDC_IPADDR, IPM_SETADDRESS, 0, (LPARAM)GetIpAddressFromStringW(pIpSettings->szIP));
+ SendDlgItemMessageW(hwndDlg, IDC_SUBNETMASK, IPM_SETADDRESS, 0, (LPARAM)GetIpAddressFromStringW(pIpSettings->szMask));
}
return TRUE;
case WM_NOTIFY:
if (!This->pCurrentConfig->DhcpEnabled && ListView_GetItemCount(GetDlgItem(hwndDlg, IDC_IPLIST)) == 0)
{
DisplayError(IDS_NO_IPADDR_SET, IDS_TCPIP, MB_ICONWARNING);
- SetWindowLongPtr(hwndDlg, DWL_MSGRESULT, TRUE);
+ SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, TRUE);
return TRUE;
}
}
This->pCurrentConfig->Ip = NULL;
StoreIPSettings(GetDlgItem(hwndDlg, IDC_IPLIST), This, TRUE);
StoreIPSettings(GetDlgItem(hwndDlg, IDC_GWLIST), This, FALSE);
- SetWindowLong(hwndDlg, DWL_MSGRESULT, PSNRET_NOERROR);
+ SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, PSNRET_NOERROR);
return TRUE;
}
break;
li.pszText = Ip.szMask;
SendDlgItemMessageW(hwndDlg, IDC_IPLIST, LVM_SETITEMW, 0, (LPARAM)&li);
}
+
+ EnableIpButtons(hwndDlg);
}
}
else if (LOWORD(wParam) == IDC_IPMOD)
else if (LOWORD(wParam) == IDC_IPDEL)
{
DeleteItemFromList(GetDlgItem(hwndDlg, IDC_IPLIST));
+ EnableIpButtons(hwndDlg);
break;
}
else if (LOWORD(wParam) == IDC_GWADD)
}
}
}
+
+ EnableGwButtons(hwndDlg);
}
break;
}
else if (LOWORD(wParam) == IDC_GWDEL)
{
DeleteItemFromList(GetDlgItem(hwndDlg, IDC_GWLIST));
+ EnableGwButtons(hwndDlg);
break;
}
}
SendDlgItemMessageW(hwndDlg, IDC_DNSSUFFIXLIST, LB_GETCOUNT, 0, 0) == 0)
{
DisplayError(IDS_NO_SUFFIX, IDS_TCPIP, MB_ICONWARNING);
- SetWindowLongPtr(hwndDlg, DWL_MSGRESULT, TRUE);
+ SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, TRUE);
return TRUE;
}
if (SendDlgItemMessageW(hwndDlg, IDC_SUFFIX, WM_GETTEXT, sizeof(szSuffix)/sizeof(WCHAR), (LPARAM)szSuffix))
szFormat[0] = L'\0';
MessageBoxW(hwndDlg, szBuffer, szFormat, MB_ICONWARNING);
- SetWindowLongPtr(hwndDlg, DWL_MSGRESULT, TRUE);
+ SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, TRUE);
SetFocus(GetDlgItem(hwndDlg, IDC_SUFFIX));
return TRUE;
}
return FALSE;
}
+static int CALLBACK
+PropSheetProc(HWND hwndDlg, UINT uMsg, LPARAM lParam)
+{
+ // NOTE: This callback is needed to set large icon correctly.
+ HICON hIcon;
+ switch (uMsg)
+ {
+ case PSCB_INITIALIZED:
+ {
+ hIcon = LoadIconW(netcfgx_hInstance, MAKEINTRESOURCEW(IDI_NETWORK));
+ SendMessageW(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)hIcon);
+ break;
+ }
+ }
+ return 0;
+}
+
VOID
LaunchAdvancedTcpipSettings(
HWND hwndDlg,
ZeroMemory(&pinfo, sizeof(PROPSHEETHEADERW));
pinfo.dwSize = sizeof(PROPSHEETHEADERW);
- pinfo.dwFlags = PSH_NOCONTEXTHELP | PSH_PROPTITLE | PSH_NOAPPLYNOW;
+ pinfo.dwFlags = PSH_NOCONTEXTHELP | PSH_PROPTITLE | PSH_NOAPPLYNOW |
+ PSH_USEICONID | PSH_USECALLBACK;
pinfo.u3.phpage = hppages;
pinfo.nPages = 3;
pinfo.hwndParent = hwndDlg;
+ pinfo.hInstance = netcfgx_hInstance;
pinfo.pszCaption = szBuffer;
+ pinfo.u.pszIcon = MAKEINTRESOURCEW(IDI_NETWORK);
+ pinfo.pfnCallback = PropSheetProc;
StoreTcpipBasicSettings(hwndDlg, This, FALSE);
- PropertySheetW(&pinfo);
-
- InitializeTcpipBasicDlgCtrls(hwndDlg, This->pCurrentConfig);
- PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
+ if (PropertySheetW(&pinfo) > 0)
+ {
+ InitializeTcpipBasicDlgCtrls(hwndDlg, This->pCurrentConfig);
+ PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
+ }
}
INT_PTR
{
This = (TcpipConfNotifyImpl*)GetWindowLongPtr(hwndDlg, DWLP_USER);
if (SUCCEEDED(StoreTcpipBasicSettings(hwndDlg, This, TRUE)))
- SetWindowLong(hwndDlg, DWL_MSGRESULT, PSNRET_NOERROR);
+ SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, PSNRET_NOERROR);
else
- SetWindowLong(hwndDlg, DWL_MSGRESULT, PSNRET_INVALID);
+ SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, PSNRET_INVALID);
return TRUE;
}
RegQueryValueExW(hKey, L"RegisterAdapterName", NULL, NULL, (LPBYTE)&This->pCurrentConfig->pDNS->RegisterAdapterName, &dwSize);
RegQueryValueExW(hKey, L"RegistrationEnabled", NULL, NULL, (LPBYTE)&This->pCurrentConfig->pDNS->RegistrationEnabled, &dwSize);
- dwSize = sizeof(This->pCurrentConfig->pDNS->szDomain) / sizeof(WCHAR);
- RegQueryValueExW(hKey, L"Domain", NULL, NULL, (LPBYTE)szBuffer, &dwSize);
+ dwSize = sizeof(This->pCurrentConfig->pDNS->szDomain);
+ RegQueryValueExW(hKey, L"Domain", NULL, NULL, (LPBYTE)This->pCurrentConfig->pDNS->szDomain, &dwSize);
RegCloseKey(hKey);
}