#include "pch.h" #pragma hdrstop #include "ncui.h" #include "lanui.h" #include "lanhelp.h" #include "wzcprops.h" #include "wzcui.h" //////////////////////////////////////////////////////////////////////// // CWZCConfigProps related stuff // //+--------------------------------------------------------------------------- // class constructor CWZCConfigProps::CWZCConfigProps() { ZeroMemory(&m_wzcConfig, sizeof(WZC_WLAN_CONFIG)); m_wzcConfig.Length = sizeof(WZC_WLAN_CONFIG); m_wzcConfig.InfrastructureMode = Ndis802_11Infrastructure; } //+--------------------------------------------------------------------------- // Uploads the configuration into the dialog's internal data DWORD CWZCConfigProps::UploadWzcConfig(CWZCConfig *pwzcConfig) { CopyMemory(&m_wzcConfig, &(pwzcConfig->m_wzcConfig), sizeof(WZC_WLAN_CONFIG)); return ERROR_SUCCESS; } //+--------------------------------------------------------------------------- // INIT_DIALOG handler LRESULT CWZCConfigProps::OnInitDialog (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { DWORD dwStyle; HRESULT hr = S_OK; // get all the controls handles m_hwndEdSSID = GetDlgItem(IDC_WZC_EDIT_SSID); m_hwndChkAdhoc = GetDlgItem(IDC_ADHOC); m_hwndUsePW = GetDlgItem(IDC_USEPW); // initialize the SSID field with the SSID, if one is given if (m_wzcConfig.Ssid.SsidLength != 0) { // ugly but this is life. In order to convert the SSID to LPWSTR we need a buffer. // We know an SSID can't exceed 32 chars (see NDIS_802_11_SSID from ntddndis.h) so // make room for the null terminator and that's it. We could do mem alloc but I'm // not sure it worth the effort (at runtime). WCHAR wszSSID[33]; UINT nLenSSID = 0; // convert the LPSTR (original SSID format) to LPWSTR (needed in List Ctrl) nLenSSID = MultiByteToWideChar( CP_ACP, 0, (LPCSTR)m_wzcConfig.Ssid.Ssid, m_wzcConfig.Ssid.SsidLength, wszSSID, celems(wszSSID)); if (nLenSSID != 0) { wszSSID[nLenSSID] = L'\0'; ::SetWindowText(m_hwndEdSSID, wszSSID); } } // Check the "this network is adhoc" box if neccessary. ::SendMessage(m_hwndChkAdhoc, BM_SETCHECK, (m_wzcConfig.InfrastructureMode == Ndis802_11IBSS) ? BST_CHECKED : BST_UNCHECKED, 0); // the SSID can't be under any circumstances larger than 32 chars ::SendMessage(m_hwndEdSSID, EM_LIMITTEXT, 32, 0); ::SendMessage(m_hwndUsePW, BM_SETCHECK, (m_wzcConfig.Privacy == 1) ? BST_CHECKED : BST_UNCHECKED, 0); return LresFromHr(hr); } //+--------------------------------------------------------------------------- // OK button handler LRESULT CWZCConfigProps::OnOK(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { bHandled = TRUE; EndDialog(IDOK); return 0; } //+--------------------------------------------------------------------------- // Cancel button handler LRESULT CWZCConfigProps::OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { // return S_FALSE on cancel bHandled = TRUE; EndDialog(IDCANCEL); return 0; } //+--------------------------------------------------------------------------- // Context sensitive help handler extern const WCHAR c_szNetCfgHelpFile[]; LRESULT CWZCConfigProps::OnContextMenu( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& fHandled) { ::WinHelp(m_hWnd, c_szNetCfgHelpFile, HELP_CONTEXTMENU, (ULONG_PTR)g_aHelpIDs_IDC_WZC_DLG_VPROPS); return 0; } LRESULT CWZCConfigProps::OnHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { LPHELPINFO lphi = reinterpret_cast(lParam); if (HELPINFO_WINDOW == lphi->iContextType) { ::WinHelp(static_cast(lphi->hItemHandle), c_szNetCfgHelpFile, HELP_WM_HELP, (ULONG_PTR)g_aHelpIDs_IDC_WZC_DLG_VPROPS); } return 0; }