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

📄 proppagefileshareurl.cpp

📁 ftpserver very good sample
💻 CPP
字号:
#include "StdAfx.h"#include "WarServerSnapin.h"#include "WarSvrSnapin.h"#include "WarMmcNodeFileShare.h"#include "PropPageFileSharePermissions.h"#include "PropPageFileShareUrl.h"PropPageFileShareUrl::PropPageFileShareUrl(warmmc_file_share_data_ptr_t& dataPtr,                                           long lNotifyHandle,                                            bool bDeleteHandle,                                            TCHAR* pTitle)                                            : CSnapInPropertyPageImpl<PropPageFileShareUrl> (pTitle),m_lNotifyHandle(lNotifyHandle),m_bDeleteHandle(bDeleteHandle), // Should be true for only page.mDataPtr(dataPtr){}PropPageFileShareUrl::~PropPageFileShareUrl(){    if (m_bDeleteHandle)        MMCFreeNotifyHandle(m_lNotifyHandle);}BOOL PropPageFileShareUrl::OnSetActive(){    UpdateUrl(mDataPtr->GetUrl().GetUrl().c_str());    return TRUE;}LRESULT PropPageFileShareUrl::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled){    // Get file types from registry    // Get existing URL    UpdateUrl(mDataPtr->GetUrl().GetUrl().c_str());        return TRUE;}BOOL PropPageFileShareUrl::OnApply(){    // Write the changes back to the registry    RebuildUrl();    mDataPtr->Apply(m_lNotifyHandle, (1 << 2));        return TRUE;}#define ITEM(a) (WarCollector<TCHAR>(my_url.a()).GetValue().c_str())void PropPageFileShareUrl::UpdateUrl(LPCSTR str) throw(WarException){    // Use a tmp buffer to prevent making url from self    std::string str_buffer = str;    WarUrl my_url;    try    {        my_url = str_buffer.c_str();                SetDlgItemText(IDC_TYPE,ITEM(GetDriverName));        SetDlgItemText(IDC_PATH,ITEM(GetUrlPath));        SetDlgItemText(IDC_HOST,ITEM(GetHostName));        SetDlgItemText(IDC_USER,ITEM(GetUserName));        SetDlgItemText(IDC_PASSWORD,ITEM(GetPassword));        SetDlgItemText(IDC_URL,ITEM(GetUrl));    }    catch(WarException)    {        SetDlgItemText(IDC_TYPE,_T("file"));        SetDlgItemText(IDC_PATH,_T(""));        SetDlgItemText(IDC_HOST,_T(""));        SetDlgItemText(IDC_USER,_T(""));        SetDlgItemText(IDC_PASSWORD,_T(""));        SetDlgItemText(IDC_URL,_T(""));    }        mDataPtr->SetUrl(my_url);    DWORD flags = PSWIZB_BACK;    if (!mDataPtr->GetUrl().GetUrlPath().empty())        flags |= PSWIZB_NEXT;    ::PostMessage(GetParent(), PSM_SETWIZBUTTONS, 0, flags);}#undef ITEM#define FETCH(id, str) GetDlgItemText(id, buffer, sizeof(buffer) / sizeof(TCHAR));\    str = buffer;\*buffer = 0;void PropPageFileShareUrl::RebuildUrl() throw(WarException){    WarCollector<char> type_name, path_name, host_name, user_name, password;    TCHAR buffer[1024];        // Server name    FETCH(IDC_TYPE, type_name);    FETCH(IDC_PATH, path_name);    FETCH(IDC_HOST, host_name);    FETCH(IDC_USER, user_name);    FETCH(IDC_PASSWORD, password);        WarUrl my_url;    my_url.Create(WarUrlType(type_name.GetValue().c_str()),        user_name.GetValue().c_str(),        password.GetValue().c_str(),        0, // port        host_name.GetValue().c_str(),        path_name.GetValue().c_str());    mDataPtr->SetUrl(my_url);}#undef FETCHvoid PropPageFileShareUrl::UpdateUrlItem(){    try    {        RebuildUrl();        UpdateUrl(mDataPtr->GetUrl().GetUrl().c_str());    }    catch(WarException& e)    {        WarCollector<TCHAR> err_msg = e.Explain();        CString msg;                msg.Format(_T("Failed to build a valid URL from input data.\n%s"),            err_msg.GetValue().c_str());        AfxMessageBox(msg);    }    mDataPtr->AddMask((1 << 2));}LRESULT PropPageFileShareUrl::OnClickedBrowse(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled){    BROWSEINFO bi;    memset(&bi, 0, sizeof(bi));        TCHAR pszDisplayName[MAX_PATH];    *pszDisplayName = 0;    bi.hwndOwner = m_hWnd;    bi.pszDisplayName = pszDisplayName;    bi.lpszTitle = _T("Select a folder");    bi.ulFlags  = BIF_NEWDIALOGSTYLE;        LPITEMIDLIST pbi = SHBrowseForFolder(&bi);        if (NULL != pbi)    {           TCHAR my_path[MAX_PATH];        if (SHGetPathFromIDList(pbi, my_path))        {            std::basic_string<TCHAR> host_name, path_name;            if ((my_path[0] == '\\')                && (my_path[1] == '\\')                && _istalpha(my_path[2]))            {                // Deparse hostname                LPCTSTR p = my_path;                p += 2;                while(*p && (*p != '\\'))                    host_name += *p++;                                if (*p == '\\')                    ++p;                                path_name = p;            }            else                path_name = my_path;                        SetDlgItemText(IDC_PATH,path_name.c_str());            SetDlgItemText(IDC_HOST,                host_name.empty() ? _T("") : host_name.c_str());        }                LPMALLOC mp;        if (SUCCEEDED(SHGetMalloc(&mp)))            mp->Free(pbi);                UpdateUrlItem();    }        return 0;}LRESULT PropPageFileShareUrl::OnKillfocusHost(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled){    UpdateUrlItem();    return 0;}LRESULT PropPageFileShareUrl::OnKillfocusPassword(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled){    UpdateUrlItem();    return 0;}LRESULT PropPageFileShareUrl::OnKillfocusPath(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled){    UpdateUrlItem();    return 0;}LRESULT PropPageFileShareUrl::OnKillfocusType(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled){    UpdateUrlItem();    return 0;}LRESULT PropPageFileShareUrl::OnKillfocusUser(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled){    UpdateUrlItem();    return 0;}

⌨️ 快捷键说明

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