130 lines
4 KiB
C++
130 lines
4 KiB
C++
#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<LPHELPINFO>(lParam);
|
|
|
|
if (HELPINFO_WINDOW == lphi->iContextType)
|
|
{
|
|
::WinHelp(static_cast<HWND>(lphi->hItemHandle),
|
|
c_szNetCfgHelpFile,
|
|
HELP_WM_HELP,
|
|
(ULONG_PTR)g_aHelpIDs_IDC_WZC_DLG_VPROPS);
|
|
}
|
|
|
|
return 0;
|
|
}
|