qf_share.cpp
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 4k
Category:

Windows Kernel

Development Platform:

Visual C++

  1. #include "pch.h"
  2. #pragma hdrstop
  3. /*-----------------------------------------------------------------------------
  4. / Local functions / data
  5. /----------------------------------------------------------------------------*/
  6. static WCHAR c_szQueryPrefix[] = L"(uncName=*)(objectCategory=volume)";
  7. static LPWSTR c_szClassList[] =
  8. {
  9.     L"volume",
  10. };
  11. static PAGECTRL ctrls[] =
  12. {
  13.     IDC_VOLNAME,     c_szName,     FILTER_CONTAINS,
  14.     IDC_VOLKEYWORDS, c_szKeywords, FILTER_CONTAINS,
  15. };
  16. static COLUMNINFO columns[] = 
  17. {
  18.     0, 0, IDS_CN,       0, c_szName,          
  19.     0, 0, IDS_UNCNAME,  0, c_szUNCName,
  20.     0, 0, IDS_KEYWORDS, 0, c_szKeywords,
  21. };
  22. //
  23. // Control help meppings
  24. // 
  25. static DWORD const aFormHelpIDs[] =
  26. {
  27.     IDC_VOLNAME, IDH_SHARED_FOLDER_NAMED,
  28.     IDC_VOLKEYWORDS, IDH_KEYWORDS,
  29.     0, 0
  30. };
  31. /*-----------------------------------------------------------------------------
  32. / PageProc_Volume
  33. / ---------------
  34. /   PageProc for handling the messages for this object.
  35. /
  36. / In:
  37. /   pForm -> instance data for this form
  38. /   hwnd = window handle for the form dialog
  39. /   uMsg, wParam, lParam = message parameters
  40. /
  41. / Out:
  42. /   HRESULT (E_NOTIMPL) if not handled
  43. /----------------------------------------------------------------------------*/
  44. HRESULT CALLBACK PageProc_Volume(LPCQPAGE pForm, HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
  45. {
  46.     HRESULT hr = S_OK;
  47.     LPWSTR pQuery = NULL;
  48.     TraceEnter(TRACE_FORMS, "PageProc_Volume");
  49.     switch ( uMsg )
  50.     {
  51.         case CQPM_INITIALIZE:
  52.         case CQPM_RELEASE:
  53.             break;
  54.             
  55.         case CQPM_ENABLE:
  56.             EnablePageControls(hwnd, ctrls, ARRAYSIZE(ctrls), (BOOL)wParam);
  57.             break;
  58.         case CQPM_GETPARAMETERS:
  59.         {
  60.             hr = GetQueryString(&pQuery, c_szQueryPrefix, hwnd, ctrls, ARRAYSIZE(ctrls));
  61.             if ( SUCCEEDED(hr) )
  62.             {
  63.                 hr = QueryParamsAlloc((LPDSQUERYPARAMS*)lParam, pQuery, GLOBAL_HINSTANCE, ARRAYSIZE(columns), columns);
  64.                 LocalFreeStringW(&pQuery);
  65.             }
  66.             FailGracefully(hr, "Failed to build DS argument block");            
  67.             break;
  68.         }
  69.         case CQPM_CLEARFORM:
  70.             ResetPageControls(hwnd, ctrls, ARRAYSIZE(ctrls));
  71.             break;
  72.     
  73.         case CQPM_PERSIST:
  74.         {
  75.             BOOL fRead = (BOOL)wParam;
  76.             IPersistQuery* pPersistQuery = (IPersistQuery*)lParam;
  77.             hr = PersistQuery(pPersistQuery, fRead, c_szMsVolume, hwnd, ctrls, ARRAYSIZE(ctrls));
  78.             FailGracefully(hr, "Failed to persist page");
  79.             break;
  80.         }
  81.         case CQPM_HELP:
  82.         {
  83.             LPHELPINFO pHelpInfo = (LPHELPINFO)lParam;
  84.             WinHelp((HWND)pHelpInfo->hItemHandle,
  85.                     DSQUERY_HELPFILE,
  86.                     HELP_WM_HELP,
  87.                     (DWORD_PTR)aFormHelpIDs);
  88.             break;
  89.         }
  90.         case DSQPM_GETCLASSLIST:
  91.         {
  92.             hr = ClassListAlloc((LPDSQUERYCLASSLIST*)lParam, c_szClassList, ARRAYSIZE(c_szClassList));
  93.             FailGracefully(hr, "Failed to allocate class list");
  94.             break;
  95.         }
  96.         case DSQPM_HELPTOPICS:
  97.         {
  98.             HWND hwndFrame = (HWND)lParam;
  99.             HtmlHelp(hwndFrame, TEXT("omc.chm"), HH_HELP_FINDER, 0);
  100.             break;
  101.         }
  102.         default:
  103.             hr = E_NOTIMPL;
  104.             break;
  105.     }
  106. exit_gracefully:
  107.     TraceLeaveResult(hr);
  108. }
  109. /*-----------------------------------------------------------------------------
  110. / DlgProc_Volume
  111. / --------------
  112. /   Handle dialog specific message for the volume page.
  113. /
  114. / In:
  115. /   hwnd, uMsg, wParam, lParam = standard parameters
  116. /
  117. / Out:
  118. /   INT_PTR
  119. /----------------------------------------------------------------------------*/
  120. INT_PTR CALLBACK DlgProc_Volume(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
  121. {
  122.     INT_PTR fResult = 0;
  123.     LPCQPAGE pQueryPage;
  124.     if ( uMsg == WM_INITDIALOG )
  125.     {
  126.         pQueryPage = (LPCQPAGE)lParam;
  127.         SetWindowLongPtr(hwnd, DWLP_USER, (LONG_PTR)pQueryPage);
  128.         Edit_LimitText(GetDlgItem(hwnd, IDC_VOLNAME), MAX_PATH);
  129.         Edit_LimitText(GetDlgItem(hwnd, IDC_VOLKEYWORDS), MAX_PATH);
  130.     }
  131.     else if ( uMsg == WM_CONTEXTMENU )
  132.     {
  133.         WinHelp((HWND)wParam, DSQUERY_HELPFILE, HELP_CONTEXTMENU, (DWORD_PTR)aFormHelpIDs);
  134.         fResult = TRUE;
  135.     }
  136.     return fResult;    
  137. }