windows-nt/Source/XPSP1/NT/net/layer2svc/dialog/quickcfg.h
2020-09-26 16:20:57 +08:00

131 lines
5 KiB
C++

#include "resource.h"
#include "xpsp1res.h"
#include "wzcdata.h"
#pragma once
// utility macro to convert a hexa digit into its value
#define HEX(c) ((c)<='9'?(c)-'0':(c)<='F'?(c)-'A'+0xA:(c)-'a'+0xA)
// flags indicating various operational actions.
// flags are used in:
// AddUniqueConfig()
#define WZCADD_HIGROUP 0x00000001 // add in front of its group
#define WZCADD_OVERWRITE 0x00000002 // overwrite data
#define WZCOP_VLIST 0x00000004 // operate on the visible list
#define WZCOP_PLIST 0x00000008 // operate on the preferred list
// defines legal lengths for the WEP Key material
#define WZC_WEPKMAT_40_ASC 5
#define WZC_WEPKMAT_40_HEX 10
#define WZC_WEPKMAT_104_ASC 13
#define WZC_WEPKMAT_104_HEX 26
#define WZC_WEPKMAT_128_ASC 16
#define WZC_WEPKMAT_128_HEX 32
class CWZCQuickCfg:
public CDialogImpl<CWZCQuickCfg>
{
protected:
// handles to the controls
HWND m_hLblInfo;
HWND m_hLblNetworks;
HWND m_hLstNetworks;
HWND m_hWarnIcon;
HWND m_hLblNoWepKInfo;
HWND m_hChkNoWepK;
HWND m_hLblWepKInfo;
HWND m_hLblWepK;
HWND m_hEdtWepK;
HWND m_hLblWepK2;
HWND m_hEdtWepK2;
HWND m_hChkOneX;
HWND m_hBtnAdvanced;
HWND m_hBtnConnect;
// Handle to the images
HIMAGELIST m_hImgs; // list items images
BEGIN_MSG_MAP(CWZCQuickCfg)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
MESSAGE_HANDLER(WM_CONTEXTMENU, OnContextMenu)
MESSAGE_HANDLER(WM_HELP, OnHelp)
MESSAGE_HANDLER(WM_TIMER, OnTimer)
NOTIFY_CODE_HANDLER(LVN_ITEMCHANGED, OnItemChanged)
NOTIFY_CODE_HANDLER(NM_DBLCLK, OnDbClick);
COMMAND_ID_HANDLER(IDC_WZCQCFG_CONNECT, OnConnect)
COMMAND_ID_HANDLER(IDCANCEL, OnCancel)
COMMAND_ID_HANDLER(IDCLOSE, OnCancel)
COMMAND_ID_HANDLER(IDC_WZCQCFG_ADVANCED, OnAdvanced)
COMMAND_ID_HANDLER(IDC_WZCQCFG_WEPK, OnWepKMatCmd)
COMMAND_ID_HANDLER(IDC_WZCQCFG_CHK_NOWK, OnCheckConfirmNoWep)
END_MSG_MAP()
enum {IDD = IDD_WZCQCFG };
// GUID on which we're operating
GUID m_Guid;
// zero conf data on the interface
BOOL m_bHaveWZCData;
INTF_ENTRY m_IntfEntry;
DWORD m_dwOIDFlags;
UINT m_nTimer;
HCURSOR m_hCursor;
BOOL m_bKMatTouched; // tells whether the user changed the wep key
// internal lists
CWZCConfig *m_pHdVList; // list of visible configs
CWZCConfig *m_pHdPList; // list of preferred configs
DWORD GetWepKMaterial(UINT *pnKeyLen, LPBYTE *ppszKMat, DWORD *pdwCtlFlags);
BOOL IsConfigInList(CWZCConfig *pHdList, PWZC_WLAN_CONFIG pwzcConfig, CWZCConfig **ppMatchingConfig = NULL);
DWORD InitListView();
DWORD GetOIDs(DWORD dwInFlags, LPDWORD pdwOutFlags);
DWORD SavePreferredConfigs(PINTF_ENTRY pIntf, CWZCConfig *pStartCfg = NULL);
DWORD FillVisibleList(PWZC_802_11_CONFIG_LIST pwzcVList);
DWORD FillPreferredList(PWZC_802_11_CONFIG_LIST pwzcPList);
DWORD RefreshListView();
DWORD RefreshControls();
// calls operating only on the internal lists (m_pHdVList or m_pHdPList)
DWORD AddUniqueConfig(
DWORD dwOpFlags, // operation specific flags (see WZCADD_* flags)
DWORD dwEntryFlags, // flags for the config to be inserted
PWZC_WLAN_CONFIG pwzcConfig, // WZC Configuration
CWZCConfig **ppNewNode = NULL); // [out] gives the pointer of the newly created config object
public:
LPWSTR m_wszTitle;
// class constructor
CWZCQuickCfg(const GUID * pGuid);
// class destructor
~CWZCQuickCfg();
// Dialog related members
LRESULT OnInitDialog (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnItemChanged(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
LRESULT OnDbClick(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
LRESULT OnConnect(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnAdvanced(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnWepKMatCmd(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
LRESULT OnCheckConfirmNoWep(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
public:
INT_PTR SpDoModal(HWND hWndParent = ::GetActiveWindow(), LPARAM dwInitParam = NULL)
{
_Module.AddCreateWndData(&m_thunk.cd, (CDialogImplBaseT<CWindow>*)this);
#ifdef _DEBUG
m_bModal = true;
#endif //_DEBUG
return ::DialogBoxParam(
WZCGetSPResModule(),
MAKEINTRESOURCE(CWZCQuickCfg::IDD),
::GetActiveWindow(),
(DLGPROC)CWZCQuickCfg::StartDialogProc,
NULL);
}
BOOL SpEndDialog(INT_PTR nRetCode)
{
return ::EndDialog(m_hWnd, nRetCode);
}
};