//---------------------------------------------------------------------------- // // Copyright (c) 1997-1999 Microsoft Corporation // All rights reserved. // // File Name: // tcpipdns.c // // Description: ISSUE-2002/02/28-stelo- fill description // //---------------------------------------------------------------------------- #include "pch.h" #include "resource.h" #include "tcpip.h" //---------------------------------------------------------------------------- // // Function: OnTcpipDnsInitDialog // // Purpose: // // Arguments: // // Returns: // //---------------------------------------------------------------------------- VOID OnTcpipDnsInitDialog( IN HWND hwnd ) { HWND hServerEditButton, hServerRemoveButton; HWND hSuffixAddButton, hSuffixEditButton, hSuffixRemoveButton; // // Place up/down arrow icons on buttons // SendDlgItemMessage( hwnd, IDC_DNS_SERVER_UP, BM_SETIMAGE, (WPARAM)IMAGE_ICON, (LPARAM) g_hIconUpArrow ); SendDlgItemMessage( hwnd, IDC_DNS_SERVER_DOWN, BM_SETIMAGE, (WPARAM)IMAGE_ICON, (LPARAM) g_hIconDownArrow ); SendDlgItemMessage( hwnd, IDC_DNS_SUFFIX_UP, BM_SETIMAGE, (WPARAM)IMAGE_ICON, (LPARAM) g_hIconUpArrow ); SendDlgItemMessage( hwnd, IDC_DNS_SUFFIX_DOWN, BM_SETIMAGE, (WPARAM)IMAGE_ICON, (LPARAM) g_hIconDownArrow ); hServerEditButton = GetDlgItem( hwnd, IDC_DNS_SERVER_EDIT ); hServerRemoveButton = GetDlgItem( hwnd, IDC_DNS_SERVER_REMOVE ); hSuffixAddButton = GetDlgItem( hwnd, IDC_DNS_SUFFIX_ADD ); hSuffixEditButton = GetDlgItem( hwnd, IDC_DNS_SUFFIX_EDIT ); hSuffixRemoveButton = GetDlgItem( hwnd, IDC_DNS_SUFFIX_REMOVE ); SetWindowText( GetDlgItem( hwnd, IDC_DNS_DOMAIN ), NetSettings.pCurrentAdapter->szDNSDomainName ); // // fill the DNS Server list box with the appropriate initial value(s) // AddValuesToListBox( GetDlgItem( hwnd, IDC_DNS_SERVER_LIST ), &NetSettings.pCurrentAdapter->Tcpip_DnsAddresses, 0 ); // // select the first entry in the DNS Server list box // SendDlgItemMessage( hwnd, IDC_DNS_SERVER_LIST, LB_SETCURSEL, 0, 0 ); // // initialize the Edit and Remove buttons to the proper states // SetButtons( GetDlgItem( hwnd, IDC_DNS_SERVER_LIST ), hServerEditButton, hServerRemoveButton ); // // Have to "figure out" what DNS radio button to set // if( NetSettings.bIncludeParentDomains ) { CheckRadioButton( hwnd, IDC_DNS_SEARCH_DOMAIN, IDC_DNS_USE_SUFFIX_LIST, IDC_DNS_SEARCH_DOMAIN ); EnableWindow( hSuffixAddButton, FALSE ); CheckDlgButton( hwnd, IDC_DNS_SEARCH_PARENT_DOMAIN, BST_CHECKED ); } else if( GetNameListSize( &NetSettings.TCPIP_DNS_Domains ) > 0 ) { CheckRadioButton( hwnd, IDC_DNS_SEARCH_DOMAIN, IDC_DNS_USE_SUFFIX_LIST, IDC_DNS_USE_SUFFIX_LIST ); EnableWindow( hSuffixAddButton, TRUE ); EnableWindow( GetDlgItem( hwnd, IDC_DNS_SEARCH_PARENT_DOMAIN), FALSE ); // // fill the DNS Suffix list box with the appropriate initial value(s) // AddValuesToListBox( GetDlgItem( hwnd, IDC_DNS_SUFFIX_LIST ), &NetSettings.TCPIP_DNS_Domains, 0 ); } else { CheckRadioButton( hwnd, IDC_DNS_SEARCH_DOMAIN, IDC_DNS_USE_SUFFIX_LIST, IDC_DNS_SEARCH_DOMAIN ); EnableWindow( hSuffixAddButton, FALSE ); } // // initialize the Edit and Remove buttons to the proper states // SetButtons( GetDlgItem( hwnd, IDC_DNS_SUFFIX_LIST ), hSuffixEditButton, hSuffixRemoveButton ); SetArrows( hwnd, IDC_DNS_SERVER_LIST, IDC_DNS_SERVER_UP, IDC_DNS_SERVER_DOWN ); SetArrows( hwnd, IDC_DNS_SUFFIX_LIST, IDC_DNS_SUFFIX_UP, IDC_DNS_SUFFIX_DOWN ); } //---------------------------------------------------------------------------- // // Function: OnTcpipDnsApply // // Purpose: stores the contents on the TCP/IP advanced DNS page into // the global variables // // Arguments: IN HWND hwnd - handle to the dialog // // Returns: VOID // //---------------------------------------------------------------------------- VOID OnTcpipDnsApply( IN HWND hwnd ) { INT_PTR i; INT_PTR iCount; TCHAR szDns[IPSTRINGLENGTH + 1]; // // delete any old settings in the Namelists // ResetNameList( &NetSettings.pCurrentAdapter->Tcpip_DnsAddresses ); // // pull the IP address out of the DNS list box and put them in the // DNS Namelist // iCount = SendDlgItemMessage( hwnd, IDC_DNS_SERVER_LIST, LB_GETCOUNT, 0, 0 ); for( i = 0; i < iCount; i++ ) { // // get the DNS string from the list box // SendDlgItemMessage( hwnd, IDC_DNS_SERVER_LIST, LB_GETTEXT, i, (LPARAM) szDns ); // // store the DNS string in to the Namelist // TcpipAddNameToNameList( &NetSettings.pCurrentAdapter->Tcpip_DnsAddresses, szDns ); } ResetNameList( &NetSettings.TCPIP_DNS_Domains ); iCount = SendDlgItemMessage( hwnd, IDC_DNS_SUFFIX_LIST, LB_GETCOUNT, 0, 0 ); for( i = 0; i < iCount; i++ ) { // ISSUE-2002/02/28-stelo- DNS suffix is going to get truncated // because szIPString is a short string so fix this // // get the IP string from the list box // SendDlgItemMessage( hwnd, IDC_DNS_SUFFIX_LIST, LB_GETTEXT, i, (LPARAM)szIPString ); // // store the IP string in to the Namelist // AddNameToNameList( &NetSettings.TCPIP_DNS_Domains, szIPString ); } GetWindowText( GetDlgItem( hwnd, IDC_DNS_DOMAIN ), NetSettings.pCurrentAdapter->szDNSDomainName, MAX_STRING_LEN ); if( IsDlgButtonChecked( hwnd, IDC_DNS_SEARCH_PARENT_DOMAIN ) ) { NetSettings.bIncludeParentDomains = TRUE; } else { NetSettings.bIncludeParentDomains = FALSE; } } //---------------------------------------------------------------------------- // // Function: TCPIP_DNSPageProc // // Purpose: Required function for the property sheet page to function properly. // The important thing is to give the return value of 1 to the // message PSPCB_CREATE and 0 for PSPCB_RELEASE // // Arguments: // // Returns: // //---------------------------------------------------------------------------- UINT CALLBACK TCPIP_DNSPageProc( HWND hwnd, UINT uMsg, LPPROPSHEETPAGE ppsp ) { switch( uMsg ) { case PSPCB_CREATE: return( 1 ); // needed for property sheet page to initialize correctly case PSPCB_RELEASE: return( 0 ); default: return( -1 ); } } //---------------------------------------------------------------------------- // // Function: TCPIP_DNSDlgProc // // Purpose: Dialog procedure for the DNS page of the property sheet // handles all the messages sent to this window // // Arguments: // // Returns: // //---------------------------------------------------------------------------- INT_PTR CALLBACK TCPIP_DNSDlgProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam ) { switch( uMsg ) { case WM_INITDIALOG: { OnTcpipDnsInitDialog( hwndDlg ); return( TRUE ); } case WM_COMMAND: { WORD wNotifyCode = HIWORD( wParam ); WORD wButtonId = LOWORD( wParam ); if( wNotifyCode == LBN_SELCHANGE ) { if( wButtonId == IDC_DNS_SERVER_LIST ) { SetArrows( hwndDlg, IDC_DNS_SERVER_LIST, IDC_DNS_SERVER_UP, IDC_DNS_SERVER_DOWN ); } else { SetArrows( hwndDlg, IDC_DNS_SUFFIX_LIST, IDC_DNS_SUFFIX_UP, IDC_DNS_SUFFIX_DOWN ); } } switch ( wButtonId ) { case IDC_DNS_SEARCH_DOMAIN: if( wNotifyCode == BN_CLICKED ) { CheckRadioButton( hwndDlg, IDC_DNS_SEARCH_DOMAIN, IDC_DNS_USE_SUFFIX_LIST, IDC_DNS_SEARCH_DOMAIN ); EnableWindow( GetDlgItem( hwndDlg, IDC_DNS_SEARCH_PARENT_DOMAIN ), TRUE ); EnableWindow( GetDlgItem( hwndDlg, IDC_DNS_SUFFIX_ADD ), FALSE ); SetArrows( hwndDlg, IDC_DNS_SUFFIX_LIST, IDC_DNS_SUFFIX_UP, IDC_DNS_SUFFIX_DOWN ); } return( TRUE ); case IDC_DNS_USE_SUFFIX_LIST: if( wNotifyCode == BN_CLICKED ) { CheckRadioButton( hwndDlg, IDC_DNS_SEARCH_DOMAIN, IDC_DNS_USE_SUFFIX_LIST, IDC_DNS_USE_SUFFIX_LIST ); EnableWindow( GetDlgItem( hwndDlg, IDC_DNS_SEARCH_PARENT_DOMAIN ), FALSE ); EnableWindow( GetDlgItem( hwndDlg, IDC_DNS_SUFFIX_ADD), TRUE ); } return( TRUE ); // // DNS Server Buttons // case IDC_DNS_SERVER_ADD: g_CurrentEditBox = DNS_SERVER_EDITBOX; OnAddButtonPressed( hwndDlg, IDC_DNS_SERVER_LIST, IDC_DNS_SERVER_EDIT, IDC_DNS_SERVER_REMOVE, (LPCTSTR) IDD_DNS_SERVER, GenericIPDlgProc ); SetArrows( hwndDlg, IDC_DNS_SERVER_LIST, IDC_DNS_SERVER_UP, IDC_DNS_SERVER_DOWN ); return( TRUE ); case IDC_DNS_SERVER_EDIT: g_CurrentEditBox = DNS_SERVER_EDITBOX; OnEditButtonPressed( hwndDlg, IDC_DNS_SERVER_LIST, (LPCTSTR) IDD_DNS_SERVER, GenericIPDlgProc ); SetArrows( hwndDlg, IDC_DNS_SERVER_LIST, IDC_DNS_SERVER_UP, IDC_DNS_SERVER_DOWN ); return( TRUE ); case IDC_DNS_SERVER_REMOVE: OnRemoveButtonPressed( hwndDlg, IDC_DNS_SERVER_LIST, IDC_DNS_SERVER_EDIT, IDC_DNS_SERVER_REMOVE ); SetArrows( hwndDlg, IDC_DNS_SERVER_LIST, IDC_DNS_SERVER_UP, IDC_DNS_SERVER_DOWN ); return( TRUE ); case IDC_DNS_SERVER_UP: OnUpButtonPressed( hwndDlg, IDC_DNS_SERVER_LIST ); SetArrows( hwndDlg, IDC_DNS_SERVER_LIST, IDC_DNS_SERVER_UP, IDC_DNS_SERVER_DOWN ); return( TRUE ); case IDC_DNS_SERVER_DOWN: OnDownButtonPressed( hwndDlg, IDC_DNS_SERVER_LIST ); SetArrows( hwndDlg, IDC_DNS_SERVER_LIST, IDC_DNS_SERVER_UP, IDC_DNS_SERVER_DOWN ); return( TRUE ); // // DNS Suffix Buttons // case IDC_DNS_SUFFIX_ADD: g_CurrentEditBox = DNS_SUFFIX_EDITBOX; OnAddButtonPressed( hwndDlg, IDC_DNS_SUFFIX_LIST, IDC_DNS_SUFFIX_EDIT, IDC_DNS_SUFFIX_REMOVE, (LPCTSTR) IDD_DNS_SUFFIX, GenericIPDlgProc ); SetArrows( hwndDlg, IDC_DNS_SUFFIX_LIST, IDC_DNS_SUFFIX_UP, IDC_DNS_SUFFIX_DOWN ); return( TRUE ); case IDC_DNS_SUFFIX_EDIT: g_CurrentEditBox = DNS_SUFFIX_EDITBOX; OnEditButtonPressed( hwndDlg, IDC_DNS_SUFFIX_LIST, (LPCTSTR) IDD_DNS_SUFFIX, GenericIPDlgProc ); SetArrows( hwndDlg, IDC_DNS_SUFFIX_LIST, IDC_DNS_SUFFIX_UP, IDC_DNS_SUFFIX_DOWN ); return( TRUE ); case IDC_DNS_SUFFIX_REMOVE: OnRemoveButtonPressed( hwndDlg, IDC_DNS_SUFFIX_LIST, IDC_DNS_SUFFIX_EDIT, IDC_DNS_SUFFIX_REMOVE ); SetArrows( hwndDlg, IDC_DNS_SUFFIX_LIST, IDC_DNS_SUFFIX_UP, IDC_DNS_SUFFIX_DOWN ); return( TRUE ); case IDC_DNS_SUFFIX_UP: OnUpButtonPressed( hwndDlg, IDC_DNS_SUFFIX_LIST ); SetArrows( hwndDlg, IDC_DNS_SUFFIX_LIST, IDC_DNS_SUFFIX_UP, IDC_DNS_SUFFIX_DOWN ); return( TRUE ); case IDC_DNS_SUFFIX_DOWN: OnDownButtonPressed( hwndDlg, IDC_DNS_SUFFIX_LIST ); SetArrows( hwndDlg, IDC_DNS_SUFFIX_LIST, IDC_DNS_SUFFIX_UP, IDC_DNS_SUFFIX_DOWN ); return( TRUE ); } // end switch return( FALSE ); } case WM_NOTIFY: { LPNMHDR pnmh = (LPNMHDR) lParam ; switch( pnmh->code ) { case PSN_APPLY: { // // user clicked the OK button on the property sheet // OnTcpipDnsApply( hwndDlg ); return( TRUE ); } default: return( FALSE ); } } default: return( FALSE ); } }