Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

225 lines
7.3 KiB

4 years ago
  1. // find.h : header file
  2. //
  3. #ifndef __CFIND_HEADER
  4. #define __CFIND_HEADER
  5. #include "WordBase.h"
  6. #include "FileBase.h"
  7. #include "FragInfo.h"
  8. #include "vector.h"
  9. #include "query.h"
  10. #include "AbrtSrch.h"
  11. #define UM_CLOSE (WM_USER+590)
  12. #define UM_CONNECT (WM_USER+591)
  13. #define UM_CLOSERANKS (WM_USER+592)
  14. #define UM_SIMILAR_SHOW (WM_USER+593)
  15. #define KEYCLEAR ((GetKeyState(VK_SHIFT) & 0x8000) &&(GetKeyState(VK_CONTROL) & 0x8000))
  16. #define SZ_REGISTRY_KEY "Software\\Microsoft\\Full-Text-System\\1.0"
  17. #define SZ_OPTION_X "OptionDlgX"
  18. #define SZ_OPTION_Y "OptionDlgY"
  19. #define SZ_HOW_TO_SEARCH "How to Search"
  20. #define SZ_WHEN_TO_SEARCH "When to Search"
  21. #define SZ_WHEN_DELAY "When to Search Delay"
  22. #define SZ_WORDS_TO_SHOW "Words to Show"
  23. #define SZ_PHRASEFEEDBACK "Phrase Feedback"
  24. /////////////////////////////////////////////////////////////////////////////
  25. // CRankDialog dialog
  26. class CRankDialog
  27. {
  28. // Construction
  29. public:
  30. CRankDialog(HINSTANCE m_hInst, UINT uID, HWND m_hDlg,
  31. CFileList *pflArticles, CTextSet **papts, UINT cTextSets,
  32. CTokenCollection *ptkc,
  33. CTitleCollection *ptlc
  34. );
  35. ~CRankDialog();
  36. DoModal();
  37. BOOL Create();
  38. void Show(BOOL bState);
  39. void DataUpdate( SimStruct * aRank, UINT cHits);
  40. void SetFocus();
  41. void SetFont(HFONT hf);
  42. private:
  43. CTextSet **m_papts;
  44. CTokenCollection *m_ptkc;
  45. CTitleCollection *m_ptlc;
  46. HINSTANCE m_hInst;
  47. UINT m_ID;
  48. HWND m_hParent;
  49. HWND m_hDlg;
  50. SimStruct *m_aRank;
  51. UINT m_cHits;
  52. UINT m_cTextSets;
  53. CFileList *m_pflArticles;
  54. CFileList *m_pflRankedList;
  55. CFileBase *m_pfs;
  56. enum { C_CHILD_WINDOWS= 5 };
  57. BOOL m_InIsDialogMessage;
  58. HWND m_ahwndChildren [C_CHILD_WINDOWS];
  59. WNDPROC m_apwndprocChildren[C_CHILD_WINDOWS];
  60. void DisconnectDialog();
  61. LRESULT IsDlgMessageFilter(HWND hwnd, UINT msgType, WPARAM wparam, LPARAM lparam);
  62. static LRESULT CALLBACK GrandchildMessageFilter(HWND hwnd, UINT msgType, WPARAM wparam, LPARAM lparam);
  63. static LRESULT CALLBACK ChildMessageFilter(HWND hwnd, UINT msgType, WPARAM wparam, LPARAM lparam);
  64. // Implementation
  65. private:
  66. void OnOK();
  67. void OnDisplay();
  68. static BOOL CALLBACK DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
  69. protected:
  70. BOOL OnInitDialog();
  71. };
  72. /////////////////////////////////////////////////////////////////////////////
  73. // CFind dialog
  74. class CFind
  75. {
  76. // Construction
  77. public:
  78. static CFind* NewFind(HINSTANCE hInst, UINT idTemplate, HWND hOwner, CTextSet **papts,
  79. UINT cts, UINT ctsSlots, CTokenCollection *ptkc, CTitleCollection *ptlc
  80. );
  81. ~CFind();
  82. void SetTimeout(UINT uiTimeOut) {m_uiTimeOut = uiTimeOut; }
  83. UINT GetTimeout() {return m_uiTimeOut; }
  84. HWND GetHWnd();
  85. static BOOL RegisterWndClass(HINSTANCE hInstance);
  86. int GetFragmentCount() { return m_cfiActive; } // used by Hiliter
  87. CFragInfo *GetFragment(int iFrag) { return m_apfi[iFrag]; }
  88. int GetSerial() { return m_serial; }
  89. protected:
  90. private:
  91. enum { CB_QUERY_MAX= 256, C_TERMS_MAX= 256,
  92. MAX_CB_WHITESPACE= 10, MAX_CB_FORMAT_STRING= 256,
  93. MAX_QUERY_STRING= 256};
  94. enum { NO_WORDS= 1, NO_TOPICS= 2, LOTS_O_WORDS= 4};
  95. HWND m_hDlg;
  96. HWND m_hwndFocus;
  97. HINSTANCE m_hInst;
  98. HFONT m_hFont;
  99. UINT m_serial; // validity count for hiliters
  100. BOOL m_fExitPending; // set if user clicked display before search is finished
  101. BOOL m_fDoneSearching; // set when all searches are completed // mfcc
  102. HWND m_hTopicsFound;
  103. HWND m_hWordsFound;
  104. HWND m_hwndEditBox;
  105. UINT m_rbgTopics;
  106. int m_iLookFor;
  107. enum { ALL_WORDS= 0, PHRASE, ANY_WORD }; // Values for m_iLookFor
  108. int m_iWordsThat;
  109. int m_iWordsThatLast;
  110. enum { BEGIN_WITH= 0, CONTAIN, END_WITH, MATCH, HAVE_SAME_STEM }; // Values for m_iWordsThat
  111. UINT m_iTokenStart;
  112. int m_iStart;
  113. int m_iEnd;
  114. int m_iDirtyFactor;
  115. int m_uiTimeOut;
  116. BOOL m_fIgnoreSelectionChanges;
  117. BOOL m_fDeferredSearch;
  118. BOOL m_bAutoSearch;
  119. BOOL m_bPhraseFeedback;
  120. UINT m_uiClearStatus;
  121. CWordBase *m_pWordBase;
  122. CFileBase *m_pfs;
  123. // CDisplayHelp *m_pdh;
  124. CTextSet **m_papts;
  125. UINT m_cts;
  126. UINT m_ctsSlots;
  127. CTokenCollection *m_ptkc;
  128. CTitleCollection *m_ptlc;
  129. WCHAR m_awcQueryPair[(CB_QUERY_MAX + 1) * sizeof(WCHAR) * 2];
  130. PWCHAR m_pwcLastQuery;
  131. PFragInfo m_apfi[C_TERMS_MAX];
  132. UINT m_cfiActive;
  133. UINT m_cfiAllocated;
  134. CTextDisplay *m_ptdContext;
  135. CTokenList *m_ptlTermPatterns;
  136. CFileList *m_pflArticles;
  137. CIndicatorSet *m_pisWordSet;
  138. CIndicatorSet *m_pisArticleSet;
  139. CIndicatorSet *m_pisArticleSubset;
  140. CIndicatorSet **m_ppisPhraseFilter;
  141. CRankDialog *m_pRankDialog;
  142. BOOL m_fFromSimilarTopics;
  143. POINT m_OptionDlgPos;
  144. int m_cMaxToFind;
  145. void OnApplyfeedback();
  146. CFind();
  147. void InitialFind(HINSTANCE hInst, UINT idTemplate, HWND hOwner, CTextSet **papts,
  148. UINT cts, UINT ctsSlots, CTokenCollection *ptkc, CTitleCollection *ptlc
  149. );
  150. static BOOL CALLBACK DlgWndProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
  151. static LRESULT CALLBACK DlgEdtProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
  152. /*rmk-->
  153. PBYTE SkipBlanks(PBYTE pb, PBYTE pbLimit, PSZ pszWhiteSpaceChars);
  154. PBYTE SkipUntilBlank(PBYTE pb, PBYTE pbLimit, PSZ pszWhiteSpaceChars);
  155. <--rmk*/
  156. void OnWordListSelCancel();
  157. void OnWordListSelChange();
  158. void ComputeTopicList();
  159. void DiscardPartials();
  160. void AddPhraseWord(CFragInfo *pfi, BOOL fAtTheEnd= TRUE);
  161. void ConstructPhraseFilter(UINT iTargetSlot);
  162. void ConstructPhraseVocabulary();
  163. UINT CntFragmentsWithValues(UINT iExcludedToken= UINT(-1));
  164. int OnInitDialog(HWND hDlg, HWND hFocusControl, LPARAM lParam);
  165. void OnNCDestroy();
  166. void OnEditchangeNarrow();
  167. void OnClearEdit(BOOL fRecovery= FALSE);
  168. void OnUpdateComboList();
  169. void OnOptions();
  170. void OnDisplay();
  171. BOOL GetSel(int& iStart, int&iEnd,BOOL bNoCheck = FALSE);
  172. void OnLButtonUp();
  173. void OnKeyUp(WPARAM nVirtKey,LPARAM lKeyData);
  174. void DirtyEditBox() ;
  175. void SetFocusToEdit();
  176. BOOL QueueAbortDialog();
  177. void DequeueAbortDialog();
  178. CIndicatorSet *VocabularyFor(CIndicatorSet *pisArticles);
  179. UINT FindCurrentToken(PWCHAR pwcQuery, UINT cwcQuery, UINT iStart, PWCHAR *paStart, PWCHAR *paEnd,
  180. PUINT pcPatterns= NULL, PUINT pcbPatterns= NULL
  181. );
  182. };
  183. #endif