|
|
#include "pch.h"
#pragma hdrstop
/*-----------------------------------------------------------------------------
/ Local functions / data /----------------------------------------------------------------------------*/ #define MAX_QUERY_STRING_LENGTH 2048
static TCHAR szQueryString[] = TEXT("QueryString");
static COLUMNINFO columnsRawLDAP[] = { 0, 20, IDS_CN, 0, c_szName, 0, 20, IDS_OBJECTCLASS, DSCOLUMNPROP_OBJECTCLASS, NULL, 0, 60, IDS_DESCRIPTION, 0, c_szDescription, };
//
// Help ID mappings
//
static DWORD const aFormHelpIDs[] = { IDC_LDAP, IDH_LDAP_QUERY, 0, 0 };
/*-----------------------------------------------------------------------------
/ PageProc_RawLDAP / ---------------- / PageProc for handling the messages for this object. / / In: / pPage -> instance data for this form / hwnd = window handle for the form dialog / uMsg, wParam, lParam = message parameters / / Out: / HRESULT (E_NOTIMPL) if not handled /----------------------------------------------------------------------------*/ HRESULT CALLBACK PageProc_RawLDAP(LPCQPAGE pPage, HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { HRESULT hr = S_OK; TCHAR szBuffer[MAX_QUERY_STRING_LENGTH]; USES_CONVERSION;
TraceEnter(TRACE_FORMS, "PageProc_RawLDAP");
switch ( uMsg ) { case CQPM_INITIALIZE: case CQPM_RELEASE: break;
case CQPM_ENABLE: EnableWindow(GetDlgItem(hwnd, IDC_LDAP), (BOOL)wParam); break;
case CQPM_GETPARAMETERS: { LPDSQUERYPARAMS* ppDsQueryParams = (LPDSQUERYPARAMS*)lParam;
// If we already have some query params then lets add to the query string,
// if no then we must construct a new query.
if ( *ppDsQueryParams ) { if ( GetDlgItemText(hwnd, IDC_LDAP, szBuffer, ARRAYSIZE(szBuffer)) ) { hr = QueryParamsAddQueryString(ppDsQueryParams, T2W(szBuffer)); FailGracefully(hr, "Failed to append query to existing query string"); } } else { if ( GetDlgItemText(hwnd, IDC_LDAP, szBuffer, ARRAYSIZE(szBuffer)) ) { hr = QueryParamsAlloc(ppDsQueryParams, T2W(szBuffer), GLOBAL_HINSTANCE, ARRAYSIZE(columnsRawLDAP), columnsRawLDAP); FailGracefully(hr, "Failed to build DS argument block"); } }
break; }
case CQPM_CLEARFORM: SetDlgItemText(hwnd, IDC_LDAP, TEXT("")); break; case CQPM_PERSIST: { BOOL fRead = (BOOL)wParam; IPersistQuery* pPersistQuery = (IPersistQuery*)lParam;
// Read/Write the current query string from the file, if reading and we cannot
// get the string then no real problem, just ignore it.
if ( fRead ) { if ( SUCCEEDED(pPersistQuery->ReadString(c_szMsPropertyWell, szQueryString, szBuffer, ARRAYSIZE(szBuffer))) ) { Trace(TEXT("Query string from file is: %s"), szBuffer); SetDlgItemText(hwnd, IDC_LDAP, szBuffer); } } else { if ( GetDlgItemText(hwnd, IDC_LDAP, szBuffer, ARRAYSIZE(szBuffer)) ) { Trace(TEXT("Writing query string to file: %s"), szBuffer); hr = pPersistQuery->WriteString(c_szMsPropertyWell, szQueryString, szBuffer); FailGracefully(hr, "Failed when writing out raw query string"); } }
break; }
case CQPM_HELP: { LPHELPINFO pHelpInfo = (LPHELPINFO)lParam; WinHelp((HWND)pHelpInfo->hItemHandle, DSQUERY_HELPFILE, HELP_WM_HELP, (DWORD_PTR)aFormHelpIDs); break; }
case DSQPM_GETCLASSLIST: // we don't generate any class list
break;
case DSQPM_HELPTOPICS: { HWND hwndFrame = (HWND)lParam; HtmlHelp(hwndFrame, TEXT("omc.chm"), HH_HELP_FINDER, 0); break; }
default: hr = E_NOTIMPL; break; }
exit_gracefully:
TraceLeaveResult(hr); }
/*-----------------------------------------------------------------------------
/ DlgProc_RawLDAP / --------------- / Handle operations specific to the RAW LDAP query form. / / In: / hwnd, uMsg, wParam, lParam = standard parameters / / Out: / INT_PTR /----------------------------------------------------------------------------*/ INT_PTR CALLBACK DlgProc_RawLDAP(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { INT_PTR fResult = 0; LPCQPAGE pQueryPage;
if ( uMsg == WM_INITDIALOG ) { pQueryPage = (LPCQPAGE)lParam; SetWindowLongPtr(hwnd, DWLP_USER, (LONG_PTR)pQueryPage);
Edit_LimitText(GetDlgItem(hwnd, IDC_LDAP), MAX_QUERY_STRING_LENGTH); } else { pQueryPage = (LPCQPAGE)GetWindowLongPtr(hwnd, DWLP_USER);
switch ( uMsg ) { case WM_SIZE: { HWND hwndLDAP = GetDlgItem(hwnd, IDC_LDAP); RECT rect;
// size the edit control to cover the entire form, retain the original
// height, but apply the left border to the edit control
GetRealWindowInfo(hwndLDAP, &rect, NULL); SetWindowPos(hwndLDAP, NULL, 0, 0, LOWORD(lParam)-(rect.left*2), HIWORD(lParam)-rect.top-rect.left, SWP_NOMOVE|SWP_NOZORDER); break; }
case WM_CONTEXTMENU: { WinHelp((HWND)wParam, DSQUERY_HELPFILE, HELP_CONTEXTMENU, (DWORD_PTR)aFormHelpIDs); fResult = TRUE; break; } } }
return fResult; }
|