qf_ou.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"(ou>="")";
  7. static LPWSTR c_szClassList[] =
  8. {
  9.     L"organizationalUnit",
  10. };
  11. static PAGECTRL ctrls[] =
  12. {
  13.     IDC_OUNAME, c_szName, FILTER_CONTAINS,
  14. };
  15. static COLUMNINFO columns[] = 
  16. {
  17.     0, 0, IDS_CN,          0, c_szName,          
  18.     0, 0, IDS_OBJECTCLASS, DSCOLUMNPROP_OBJECTCLASS, NULL,
  19.     0, DEFAULT_WIDTH_DESCRIPTION, IDS_DESCRIPTION, 0, c_szDescription,
  20. };
  21. //
  22. // Help ID mappings
  23. //
  24. static DWORD const aFormHelpIDs[] =
  25. {
  26.     IDC_OUNAME, IDH_DIR_FOLDER_NAMED,
  27.     0, 0
  28. };
  29. /*-----------------------------------------------------------------------------
  30. / PageProc_Container
  31. / ------------------
  32. /   FormProc for handling the messages for this object.
  33. /
  34. / In:
  35. /   pForm -> instance data for this form
  36. /   hwnd = window handle for the form dialog
  37. /   uMsg, wParam, lParam = message parameters
  38. /
  39. / Out:
  40. /   HRESULT (E_NOTIMPL) if not handled
  41. /----------------------------------------------------------------------------*/
  42. HRESULT CALLBACK PageProc_Container(LPCQPAGE pForm, HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
  43. {
  44.     HRESULT hr = S_OK;
  45.     LPWSTR pQuery = NULL;
  46.     TraceEnter(TRACE_FORMS, "PageProc_Container");
  47.     switch ( uMsg )
  48.     {
  49.         case CQPM_INITIALIZE:
  50.         case CQPM_RELEASE:
  51.             break;
  52.             
  53.         case CQPM_ENABLE:
  54.             EnablePageControls(hwnd, ctrls, ARRAYSIZE(ctrls), (BOOL)wParam);
  55.             break;
  56.         case CQPM_GETPARAMETERS:
  57.         {
  58.             hr = GetQueryString(&pQuery, c_szQueryPrefix, hwnd, ctrls, ARRAYSIZE(ctrls));
  59.             if ( SUCCEEDED(hr) )
  60.             {
  61.                 hr = QueryParamsAlloc((LPDSQUERYPARAMS*)lParam, pQuery, GLOBAL_HINSTANCE, ARRAYSIZE(columns), columns);
  62.                 LocalFreeStringW(&pQuery);
  63.             }
  64.             FailGracefully(hr, "Failed to build DS argument block");            
  65.             break;
  66.         }
  67.     
  68.         case CQPM_CLEARFORM:
  69.             ResetPageControls(hwnd, ctrls, ARRAYSIZE(ctrls));
  70.             break;
  71.         case CQPM_PERSIST:
  72.         {
  73.             BOOL fRead = (BOOL)wParam;
  74.             IPersistQuery* pPersistQuery = (IPersistQuery*)lParam;
  75.             hr = PersistQuery(pPersistQuery, fRead, c_szMsContainers, hwnd, ctrls, ARRAYSIZE(ctrls));
  76.             FailGracefully(hr, "Failed to write controls data");
  77.             break;
  78.         }
  79.         case CQPM_HELP:
  80.         {
  81.             LPHELPINFO pHelpInfo = (LPHELPINFO)lParam;
  82.             WinHelp((HWND)pHelpInfo->hItemHandle,
  83.                     DSQUERY_HELPFILE,
  84.                     HELP_WM_HELP,
  85.                     (DWORD_PTR)aFormHelpIDs);
  86.             break;
  87.         }
  88.         case DSQPM_GETCLASSLIST:
  89.         {
  90.             hr = ClassListAlloc((LPDSQUERYCLASSLIST*)lParam, c_szClassList, ARRAYSIZE(c_szClassList));
  91.             FailGracefully(hr, "Failed to allocate class list");
  92.             break;
  93.         }
  94.         case DSQPM_HELPTOPICS:
  95.         {
  96.             HWND hwndFrame = (HWND)lParam;
  97.             HtmlHelp(hwndFrame, TEXT("omc.chm"), HH_HELP_FINDER, 0);
  98.             break;
  99.         }
  100.         default:
  101.             hr = E_NOTIMPL;
  102.             break;
  103.     }
  104. exit_gracefully:
  105.     TraceLeaveResult(hr);
  106. }
  107. /*-----------------------------------------------------------------------------
  108. / DlgProc_Container
  109. / -----------------
  110. /   Standard dialog proc for the form, handle any special buttons and other
  111. /   such nastyness we must here.
  112. /
  113. / In:
  114. /   hwnd, uMsg, wParam, lParam = standard parameters
  115. /
  116. / Out:
  117. /   INT_PTR
  118. /----------------------------------------------------------------------------*/
  119. INT_PTR CALLBACK DlgProc_Container(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
  120. {
  121.     INT_PTR fResult = 0;
  122.     LPCQPAGE pQueryPage;
  123.     HANDLE hThread;
  124.     DWORD dwThreadId;
  125.     HWND hwndCtrl;
  126.     if ( uMsg == WM_INITDIALOG )
  127.     {
  128.         pQueryPage = (LPCQPAGE)lParam;
  129.         SetWindowLongPtr(hwnd, DWLP_USER, (LONG_PTR)pQueryPage);
  130.         Edit_LimitText(GetDlgItem(hwnd, IDC_OUNAME), MAX_PATH);
  131.     }
  132.     else if ( uMsg == WM_CONTEXTMENU )
  133.     {
  134.         WinHelp((HWND)wParam, DSQUERY_HELPFILE, HELP_CONTEXTMENU, (DWORD_PTR)aFormHelpIDs);
  135.         fResult = TRUE;
  136.     }
  137.     return fResult;    
  138. }