⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 proppagefilesharepermissions.cpp

📁 ftpserver very good sample
💻 CPP
字号:
#include "StdAfx.h"#include "WarServerSnapin.h"#include "WarSvrSnapin.h"#include "WarMmcNodeFileShare.h"#include "PropPageFileSharePermissions.h"#include "PropPageFileShareUrl.h"PropPageFileSharePermissions::PropPageFileSharePermissions(    warmmc_file_share_data_ptr_t dataPtr,     long lNotifyHandle,     bool bDeleteHandle,     TCHAR* pTitle) : CSnapInPropertyPageImpl<PropPageFileSharePermissions> (pTitle),m_lNotifyHandle(lNotifyHandle),m_bDeleteHandle(bDeleteHandle), // Should be true for only page.mDataPtr(dataPtr){}PropPageFileSharePermissions::~PropPageFileSharePermissions(){    if (m_bDeleteHandle)        MMCFreeNotifyHandle(m_lNotifyHandle);}LRESULT PropPageFileSharePermissions::OnInitDialog(UINT uMsg,                                                    WPARAM wParam,                                                    LPARAM lParam,                                                    BOOL& bHandled){           SendDlgItemMessage(IDC_SYMLINKS, CB_INSERTSTRING, 0, (LPARAM)_T("Nowhere (denied)"));    SendDlgItemMessage(IDC_SYMLINKS, CB_INSERTSTRING, 1, (LPARAM)_T("Within this path (safe)"));    SendDlgItemMessage(IDC_SYMLINKS, CB_INSERTSTRING, 2, (LPARAM)_T("Within defined paths (safe)"));    SendDlgItemMessage(IDC_SYMLINKS, CB_INSERTSTRING, 3, (LPARAM)_T("Everywhere (DANGEROUS!!!)"));        return TRUE;}BOOL PropPageFileSharePermissions::OnSetActive(){    UpdatePermsOnScreen(true);    ::PostMessage(GetParent(), PSM_SETWIZBUTTONS, 0, PSWIZB_FINISH | PSWIZB_BACK);    return TRUE;}BOOL PropPageFileSharePermissions::OnApply(){    mDataPtr->Apply(m_lNotifyHandle, (1 << 3));    return TRUE;}BOOL PropPageFileSharePermissions::OnWizardFinish(){    mDataPtr->Apply(m_lNotifyHandle, -1);    return TRUE;}#define CHECK(id, flag) CheckDlgButton(id, \    IsPermissionSet(perms, flag) ? BST_CHECKED : BST_UNCHECKED)void PropPageFileSharePermissions::UpdatePermsOnScreen(bool doFullUpdate){    war_uint32_t perms = mDataPtr->GetPermissions();    CHECK(IDC_DENY,DENY_ALL);    CHECK(IDC_HIDE,HIDE_ALL);    CHECK(IDC_RECURSIVE,RECURSIVE);    CHECK(IDC_FREE,SHARE_FREE);    CHECK(IDC_SHARED_UPLOAD,SHARED_UPLOAD);    CHECK(IDC_LIST,ALLOW_LIST);    CHECK(IDC_CWD,ALLOW_CWD);    CHECK(IDC_CREATE,ALLOW_DIR_CREATE);    CHECK(IDC_REMOVE,ALLOW_DIR_DELETE);    CHECK(IDC_READ,ALLOW_READ);    CHECK(IDC_WRITE,ALLOW_WRITE);    CHECK(IDC_APPEND,ALLOW_APPEND);    CHECK(IDC_DELETE,ALLOW_DELETE);    CHECK(IDC_EXECUTE,ALLOW_EXEC);    CHECK(IDC_MK_SYMLINK,ALLOW_SYMLINK);    CHECK(IDC_MAP_SYMLINKS,MAP_SYMLINK);        SendDlgItemMessage(IDC_SYMLINKS,CB_SETCURSEL,        (perms & SYMLINK_ALL),        0);    #define DEF_SHOW ((perms & (DENY_ALL | SHARED_UPLOAD)) == 0)    ::EnableWindow(GetDlgItem(IDC_HIDE), (perms & DENY_ALL) != 0);    ::EnableWindow(GetDlgItem(IDC_FREE), (perms & DENY_ALL) == 0);    ::EnableWindow(GetDlgItem(IDC_SHARED_UPLOAD), (perms & DENY_ALL) == 0);    ::EnableWindow(GetDlgItem(IDC_LIST), DEF_SHOW);    ::EnableWindow(GetDlgItem(IDC_CWD), DEF_SHOW);    ::EnableWindow(GetDlgItem(IDC_FREE), (perms & DENY_ALL) == 0);    ::EnableWindow(GetDlgItem(IDC_CREATE), (perms & DENY_ALL) == 0);    ::EnableWindow(GetDlgItem(IDC_REMOVE), (perms & DENY_ALL) == 0);    ::EnableWindow(GetDlgItem(IDC_READ), DEF_SHOW);    ::EnableWindow(GetDlgItem(IDC_WRITE), DEF_SHOW);    ::EnableWindow(GetDlgItem(IDC_APPEND), DEF_SHOW);    ::EnableWindow(GetDlgItem(IDC_DELETE), DEF_SHOW);    ::EnableWindow(GetDlgItem(IDC_EXECUTE), (perms & DENY_ALL) == 0);    ::EnableWindow(GetDlgItem(IDC_MK_SYMLINK), (perms & DENY_ALL) == 0);    ::EnableWindow(GetDlgItem(IDC_SYMLINKS), (perms & DENY_ALL) == 0);    ::EnableWindow(GetDlgItem(IDC_MAP_SYMLINKS), ((perms & DENY_ALL) == 0)        && IsSymlink(perms));        ReloadStyles(doFullUpdate);}#undef CHECK#undef DEF_SHOW#define CHKD(id, flag) perms |= ((IsDlgButtonChecked(id) == BST_CHECKED) ? flag : 0)void PropPageFileSharePermissions::ReloadStyles(bool doFullUpdate){    WarMmcFileTypes::GetObject().UpdateComboBox(        GetDlgItem(IDC_STYLE),        WarCollector<TCHAR>(            mDataPtr->GetUrl().GetDriverName()).GetValue().c_str(),         mDataPtr->GetPermissions(),        doFullUpdate);}void PropPageFileSharePermissions::UpdatePermsFromScreen(){    war_uint32_t perms = 0;        CHKD(IDC_DENY, DENY_ALL);    CHKD(IDC_HIDE, HIDE_ALL);    CHKD(IDC_RECURSIVE, RECURSIVE);    CHKD(IDC_FREE, SHARE_FREE);    CHKD(IDC_SHARED_UPLOAD, SHARED_UPLOAD);    CHKD(IDC_LIST, ALLOW_LIST);    CHKD(IDC_CWD, ALLOW_CWD);    CHKD(IDC_CREATE, ALLOW_DIR_CREATE);    CHKD(IDC_REMOVE, ALLOW_DIR_DELETE);    CHKD(IDC_READ, ALLOW_READ);    CHKD(IDC_WRITE, ALLOW_WRITE);    CHKD(IDC_APPEND, ALLOW_APPEND);    CHKD(IDC_DELETE, ALLOW_DELETE);    CHKD(IDC_EXECUTE, ALLOW_EXEC);    CHKD(IDC_MK_SYMLINK, ALLOW_SYMLINK);    CHKD(IDC_MAP_SYMLINKS, MAP_SYMLINK);        int index = SendDlgItemMessage(IDC_SYMLINKS, CB_GETCURSEL, 0, 0);    if (index != CB_ERR)        perms |= (index & SYMLINK_ALL);        mDataPtr->SetPermissions(GetSanePerms(perms));    mDataPtr->AddMask((1 << 3));}#undef CHKDLRESULT PropPageFileSharePermissions::OnClickedDeny(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled){    UpdatePermsFromScreen();    UpdatePermsOnScreen();    return 0;}LRESULT PropPageFileSharePermissions::OnSelchangeSymlinks(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled){    UpdatePermsFromScreen();    UpdatePermsOnScreen();    return 0;}LRESULT PropPageFileSharePermissions::OnClicked(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled){    UpdatePermsFromScreen();    UpdatePermsOnScreen();    return 0;}LRESULT PropPageFileSharePermissions::OnSelchangeStyle(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled){    try    {        int index = SendDlgItemMessage(IDC_STYLE, CB_GETCURSEL, 0, 0);        if (index != CB_ERR)        {            mDataPtr->SetPermissions(                SendDlgItemMessage(IDC_STYLE, CB_GETITEMDATA, index, 0));        }    }    catch(WarException)    {    }    UpdatePermsOnScreen();        return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -