Artifact
6af3a8ea7f8b251f5f681031a8c8817b8725447f:
0000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0040: 2f 2f 2f 2f 2f 0d 0a 2f 2f 20 44 61 74 61 50 72 /////..// DataPr
0050: 6f 76 69 64 65 72 2e 68 20 3a 20 69 6e 74 65 72 ovider.h : inter
0060: 66 61 63 65 20 66 6f 72 20 64 61 74 61 20 70 72 face for data pr
0070: 6f 76 69 64 65 72 73 20 75 73 65 64 20 66 6f 72 oviders used for
0080: 20 43 75 72 73 6f 72 47 72 69 64 43 74 72 6c 0d CursorGridCtrl.
0090: 0a 2f 2f 0d 0a 2f 2f 20 57 72 69 74 74 65 6e 20 .//..// Written
00a0: 62 79 20 44 6d 69 74 72 69 79 20 4f 73 68 63 68 by Dmitriy Oshch
00b0: 65 70 6b 6f 76 20 61 6b 61 20 44 6d 69 74 72 4f epkov aka DmitrO
00c0: 2c 20 6d 61 69 6c 74 6f 3a 20 64 6d 69 74 72 6f , mailto: dmitro
00d0: 40 72 75 73 73 69 61 6e 2e 72 75 0d 0a 2f 2f 20 @russian.ru..//
00e0: 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 32 30 Copyright (c) 20
00f0: 30 35 2d 32 30 30 38 2e 20 41 6c 6c 20 52 69 67 05-2008. All Rig
0100: 68 74 73 20 52 65 73 65 72 76 65 64 2e 0d 0a 2f hts Reserved.../
0110: 2f 20 56 65 72 73 69 6f 6e 3a 20 31 2e 30 0d 0a / Version: 1.0..
0120: 2f 2f 0d 0a 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f //..////////////
0130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 23 70 //////////....#p
0170: 72 61 67 6d 61 20 6f 6e 63 65 0d 0a 0d 0a 65 6e ragma once....en
0180: 75 6d 20 52 65 67 69 6f 6e 54 79 70 65 20 7b 72 um RegionType {r
0190: 74 4e 6f 6e 65 2c 20 72 74 48 65 61 64 65 72 2c tNone, rtHeader,
01a0: 20 72 74 48 65 61 64 2c 20 72 74 42 6f 64 79 2c rtHead, rtBody,
01b0: 20 72 74 54 61 69 6c 7d 3b 0d 0a 65 6e 75 6d 20 rtTail};..enum
01c0: 44 61 74 61 54 79 70 65 0d 0a 7b 0d 0a 20 20 20 DataType..{..
01d0: 20 64 74 55 6e 64 65 66 69 6e 65 64 2c 0d 0a 20 dtUndefined,..
01e0: 20 20 20 64 74 54 65 78 74 2c 0d 0a 20 20 20 20 dtText,..
01f0: 64 74 4e 75 6d 65 72 69 63 2c 0d 0a 20 20 20 20 dtNumeric,..
0200: 64 74 44 61 74 65 2c 0d 0a 20 20 20 20 64 74 46 dtDate,.. dtF
0210: 61 6c 73 65 2c 0d 0a 20 20 20 20 64 74 54 72 75 alse,.. dtTru
0220: 65 0d 0a 7d 3b 0d 0a 0d 0a 63 6c 61 73 73 20 43 e..};....class C
0230: 44 61 74 61 52 6f 77 0d 0a 7b 0d 0a 70 75 62 6c DataRow..{..publ
0240: 69 63 3a 0d 0a 20 20 20 20 43 44 61 74 61 52 6f ic:.. CDataRo
0250: 77 28 29 20 3a 20 6d 5f 6e 52 65 66 43 6f 75 6e w() : m_nRefCoun
0260: 74 28 31 29 20 7b 7d 3b 0d 0a 20 20 20 20 76 69 t(1) {};.. vi
0270: 72 74 75 61 6c 20 7e 43 44 61 74 61 52 6f 77 28 rtual ~CDataRow(
0280: 29 0d 0a 09 7b 0d 0a 2f 2f 20 09 09 69 66 20 28 )...{..// ..if (
0290: 6d 5f 6e 52 65 66 43 6f 75 6e 74 29 0d 0a 2f 2f m_nRefCount)..//
02a0: 20 09 09 09 4d 73 67 28 22 43 44 61 74 61 52 6f ...Msg("CDataRo
02b0: 77 20 25 70 20 52 65 66 43 6f 75 6e 74 20 25 69 w %p RefCount %i
02c0: 20 76 69 6f 6c 61 74 69 6f 6e 21 22 2c 20 74 68 violation!", th
02d0: 69 73 2c 20 6d 5f 6e 52 65 66 43 6f 75 6e 74 29 is, m_nRefCount)
02e0: 3b 0d 0a 09 7d 3b 0d 0a 0d 0a 20 20 20 20 76 69 ;...};.... vi
02f0: 72 74 75 61 6c 20 69 6e 74 20 47 65 74 46 69 65 rtual int GetFie
0300: 6c 64 43 6f 75 6e 74 28 29 20 3d 20 30 3b 0d 0a ldCount() = 0;..
0310: 20 20 20 20 76 69 72 74 75 61 6c 20 69 6e 74 20 virtual int
0320: 47 65 74 46 69 65 6c 64 49 6e 64 65 78 4f 66 28 GetFieldIndexOf(
0330: 4c 50 43 53 54 52 20 73 7a 46 69 65 6c 64 4e 61 LPCSTR szFieldNa
0340: 6d 65 29 20 3d 20 30 3b 0d 0a 20 20 20 20 76 69 me) = 0;.. vi
0350: 72 74 75 61 6c 20 4c 50 43 53 54 52 20 47 65 74 rtual LPCSTR Get
0360: 46 69 65 6c 64 4e 61 6d 65 28 69 6e 74 20 6e 49 FieldName(int nI
0370: 6e 64 65 78 29 20 3d 20 30 3b 0d 0a 20 20 20 20 ndex) = 0;..
0380: 76 69 72 74 75 61 6c 20 44 61 74 61 54 79 70 65 virtual DataType
0390: 20 47 65 74 46 69 65 6c 64 54 79 70 65 28 69 6e GetFieldType(in
03a0: 74 20 6e 49 6e 64 65 78 29 20 7b 72 65 74 75 72 t nIndex) {retur
03b0: 6e 20 64 74 55 6e 64 65 66 69 6e 65 64 3b 7d 3b n dtUndefined;};
03c0: 0d 0a 20 20 20 20 76 69 72 74 75 61 6c 20 76 6f .. virtual vo
03d0: 69 64 20 46 6f 72 6d 61 74 46 69 65 6c 64 28 69 id FormatField(i
03e0: 6e 74 20 6e 49 6e 64 65 78 2c 20 43 53 74 72 69 nt nIndex, CStri
03f0: 6e 67 26 20 73 74 72 56 61 6c 75 65 29 20 3d 20 ng& strValue) =
0400: 30 3b 0d 0a 20 20 20 20 76 69 72 74 75 61 6c 20 0;.. virtual
0410: 55 49 4e 54 20 47 65 74 52 6f 77 49 6e 64 65 78 UINT GetRowIndex
0420: 28 29 20 7b 72 65 74 75 72 6e 20 30 3b 7d 3b 0d () {return 0;};.
0430: 0a 0d 0a 09 76 6f 69 64 20 41 64 64 52 65 66 28 ....void AddRef(
0440: 29 20 7b 6d 5f 6e 52 65 66 43 6f 75 6e 74 2b 2b ) {m_nRefCount++
0450: 3b 7d 3b 0d 0a 09 76 6f 69 64 20 52 65 6c 65 61 ;};...void Relea
0460: 73 65 28 29 20 7b 69 66 20 28 21 2d 2d 6d 5f 6e se() {if (!--m_n
0470: 52 65 66 43 6f 75 6e 74 29 20 64 65 6c 65 74 65 RefCount) delete
0480: 20 74 68 69 73 3b 20 7d 3b 0d 0a 0d 0a 09 69 6e this; };.....in
0490: 74 20 6d 5f 6e 52 65 66 43 6f 75 6e 74 3b 0d 0a t m_nRefCount;..
04a0: 7d 3b 0d 0a 0d 0a 23 64 65 66 69 6e 65 20 44 50 };....#define DP
04b0: 5f 44 41 54 41 5f 43 48 41 4e 47 45 20 20 28 57 _DATA_CHANGE (W
04c0: 4d 5f 55 53 45 52 20 2b 20 30 78 30 30 31 30 29 M_USER + 0x0010)
04d0: 0d 0a 2f 2f 74 68 65 20 77 50 61 72 61 6d 20 66 ..//the wParam f
04e0: 6f 72 20 44 50 5f 44 41 54 41 5f 43 48 41 4e 47 or DP_DATA_CHANG
04f0: 45 3a 0d 0a 23 64 65 66 69 6e 65 20 44 50 5f 52 E:..#define DP_R
0500: 45 53 45 54 20 20 20 20 20 20 20 20 30 78 30 30 ESET 0x00
0510: 30 30 20 20 2f 2f 6c 50 61 72 61 6d 20 69 73 20 00 //lParam is
0520: 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 43 44 61 pointer to a CDa
0530: 74 61 52 6f 77 20 6f 72 20 6d 61 79 20 62 65 20 taRow or may be
0540: 4e 55 4c 4c 0d 0a 23 64 65 66 69 6e 65 20 44 50 NULL..#define DP
0550: 5f 46 49 45 4c 44 53 20 20 20 20 20 20 20 30 78 _FIELDS 0x
0560: 30 30 30 31 0d 0a 23 64 65 66 69 6e 65 20 44 50 0001..#define DP
0570: 5f 43 55 52 52 4f 57 20 20 20 20 20 20 20 30 78 _CURROW 0x
0580: 30 30 30 32 20 20 2f 2f 6c 50 61 72 61 6d 20 69 0002 //lParam i
0590: 73 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 43 s pointer to a C
05a0: 44 61 74 61 52 6f 77 20 6d 75 73 74 20 62 65 20 DataRow must be
05b0: 6e 6f 74 20 4e 55 4c 4c 0d 0a 0d 0a 73 74 72 75 not NULL....stru
05c0: 63 74 20 73 74 51 75 69 63 6b 53 65 61 72 63 68 ct stQuickSearch
05d0: 50 61 74 74 65 72 6e 0d 0a 7b 0d 0a 20 20 20 20 Pattern..{..
05e0: 4c 50 43 53 54 52 20 73 7a 46 69 65 6c 64 4e 61 LPCSTR szFieldNa
05f0: 6d 65 3b 0d 0a 20 20 20 20 44 61 74 61 54 79 70 me;.. DataTyp
0600: 65 20 64 61 74 61 54 79 70 65 3b 0d 0a 20 20 20 e dataType;..
0610: 20 75 6e 69 6f 6e 0d 0a 20 20 20 20 7b 0d 0a 20 union.. {..
0620: 20 20 20 20 20 20 20 43 53 74 72 69 6e 67 2a 20 CString*
0630: 70 54 65 78 74 44 61 74 61 3b 20 2f 2f 66 6f 72 pTextData; //for
0640: 20 74 65 78 74 20 66 69 65 6c 64 73 3b 0d 0a 20 text fields;..
0650: 20 20 20 20 20 20 20 20 2f 2f 66 6f 72 20 6e 75 //for nu
0660: 6d 65 72 69 63 20 66 69 65 6c 64 73 3b 0d 0a 20 meric fields;..
0670: 20 20 20 20 20 20 20 20 2f 2f 66 6f 72 20 64 61 //for da
0680: 74 61 20 66 69 65 6c 64 73 3b 0d 0a 20 20 20 20 ta fields;..
0690: 20 20 20 20 20 2f 2f 66 6f 72 20 73 6f 6d 65 20 //for some
06a0: 6f 74 68 65 72 20 66 69 65 6c 64 73 3b 0d 0a 20 other fields;..
06b0: 20 20 20 7d 3b 0d 0a 7d 3b 0d 0a 0d 0a 63 6c 61 };..};....cla
06c0: 73 73 20 43 44 61 74 61 50 72 6f 76 69 64 65 72 ss CDataProvider
06d0: 0d 0a 7b 0d 0a 70 75 62 6c 69 63 3a 0d 0a 20 20 ..{..public:..
06e0: 20 20 43 44 61 74 61 50 72 6f 76 69 64 65 72 28 CDataProvider(
06f0: 29 20 3a 20 6d 5f 68 43 74 72 6c 28 4e 55 4c 4c ) : m_hCtrl(NULL
0700: 29 2c 20 6d 5f 52 65 67 69 6f 6e 54 79 70 65 28 ), m_RegionType(
0710: 72 74 4e 6f 6e 65 29 20 7b 7d 3b 0d 0a 20 20 20 rtNone) {};..
0720: 20 76 69 72 74 75 61 6c 20 7e 43 44 61 74 61 50 virtual ~CDataP
0730: 72 6f 76 69 64 65 72 28 29 20 7b 7d 3b 0d 0a 0d rovider() {};...
0740: 0a 70 75 62 6c 69 63 3a 0d 0a 20 20 20 20 48 57 .public:.. HW
0750: 4e 44 20 47 65 74 43 6f 6e 74 72 6f 6c 28 29 20 ND GetControl()
0760: 63 6f 6e 73 74 0d 0a 20 20 20 20 7b 72 65 74 75 const.. {retu
0770: 72 6e 20 6d 5f 68 43 74 72 6c 3b 7d 3b 0d 0a 20 rn m_hCtrl;};..
0780: 20 20 20 76 6f 69 64 20 53 65 74 43 6f 6e 74 72 void SetContr
0790: 6f 6c 28 48 57 4e 44 20 68 43 6f 6e 74 72 6f 6c ol(HWND hControl
07a0: 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 ).. {..
07b0: 20 20 6d 5f 68 43 74 72 6c 20 3d 20 68 43 6f 6e m_hCtrl = hCon
07c0: 74 72 6f 6c 3b 0d 0a 20 20 20 20 20 20 20 20 69 trol;.. i
07d0: 66 20 28 6d 5f 68 43 74 72 6c 29 0d 0a 20 20 20 f (m_hCtrl)..
07e0: 20 20 20 20 20 20 20 20 20 4f 6e 41 74 74 61 63 OnAttac
07f0: 68 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 65 6c h();.. el
0800: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 se..
0810: 4f 6e 44 65 74 61 63 68 28 29 3b 0d 0a 20 20 20 OnDetach();..
0820: 20 7d 3b 0d 0a 0d 0a 09 52 65 67 69 6f 6e 54 79 };.....RegionTy
0830: 70 65 20 47 65 74 52 65 67 69 6f 6e 54 79 70 65 pe GetRegionType
0840: 28 29 20 7b 20 72 65 74 75 72 6e 20 6d 5f 52 65 () { return m_Re
0850: 67 69 6f 6e 54 79 70 65 3b 20 7d 3b 0d 0a 09 76 gionType; };...v
0860: 6f 69 64 20 53 65 74 52 65 67 69 6f 6e 54 79 70 oid SetRegionTyp
0870: 65 28 52 65 67 69 6f 6e 54 79 70 65 20 72 54 79 e(RegionType rTy
0880: 70 65 29 20 7b 20 6d 5f 52 65 67 69 6f 6e 54 79 pe) { m_RegionTy
0890: 70 65 20 3d 20 72 54 79 70 65 3b 20 7d 3b 0d 0a pe = rType; };..
08a0: 0d 0a 20 20 20 20 76 6f 69 64 20 52 65 73 65 74 .. void Reset
08b0: 44 61 74 61 28 43 44 61 74 61 52 6f 77 2a 20 70 Data(CDataRow* p
08c0: 44 61 74 61 52 6f 77 20 3d 20 4e 55 4c 4c 29 0d DataRow = NULL).
08d0: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 . {..
08e0: 69 66 20 28 6d 5f 68 43 74 72 6c 29 0d 0a 09 09 if (m_hCtrl)....
08f0: 09 3a 3a 53 65 6e 64 4d 65 73 73 61 67 65 28 6d .::SendMessage(m
0900: 5f 68 43 74 72 6c 2c 20 44 50 5f 44 41 54 41 5f _hCtrl, DP_DATA_
0910: 43 48 41 4e 47 45 2c 20 4d 41 4b 45 57 4f 52 44 CHANGE, MAKEWORD
0920: 28 44 50 5f 52 45 53 45 54 2c 20 28 42 59 54 45 (DP_RESET, (BYTE
0930: 29 6d 5f 52 65 67 69 6f 6e 54 79 70 65 29 2c 20 )m_RegionType),
0940: 28 4c 50 41 52 41 4d 29 70 44 61 74 61 52 6f 77 (LPARAM)pDataRow
0950: 29 3b 0d 0a 20 20 20 20 7d 3b 0d 0a 09 0d 0a 20 );.. };.....
0960: 20 20 20 76 6f 69 64 20 53 65 74 43 75 72 72 65 void SetCurre
0970: 6e 74 52 6f 77 28 43 44 61 74 61 52 6f 77 2a 20 ntRow(CDataRow*
0980: 70 44 61 74 61 52 6f 77 29 0d 0a 20 20 20 20 7b pDataRow).. {
0990: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6d 5f .. if (m_
09a0: 68 43 74 72 6c 20 26 26 20 70 44 61 74 61 52 6f hCtrl && pDataRo
09b0: 77 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 w)..
09c0: 3a 3a 53 65 6e 64 4d 65 73 73 61 67 65 28 6d 5f ::SendMessage(m_
09d0: 68 43 74 72 6c 2c 20 44 50 5f 44 41 54 41 5f 43 hCtrl, DP_DATA_C
09e0: 48 41 4e 47 45 2c 20 4d 41 4b 45 57 4f 52 44 28 HANGE, MAKEWORD(
09f0: 44 50 5f 43 55 52 52 4f 57 2c 20 28 42 59 54 45 DP_CURROW, (BYTE
0a00: 29 6d 5f 52 65 67 69 6f 6e 54 79 70 65 29 2c 20 )m_RegionType),
0a10: 28 4c 50 41 52 41 4d 29 70 44 61 74 61 52 6f 77 (LPARAM)pDataRow
0a20: 29 3b 0d 0a 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 );.. };....
0a30: 20 20 2f 2f 51 75 65 72 79 20 72 6f 77 73 20 69 //Query rows i
0a40: 6e 74 65 72 66 61 63 65 0d 0a 20 20 20 20 76 69 nterface.. vi
0a50: 72 74 75 61 6c 20 76 6f 69 64 20 51 75 65 72 79 rtual void Query
0a60: 52 6f 77 73 28 43 44 61 74 61 52 6f 77 2a 20 70 Rows(CDataRow* p
0a70: 52 6f 77 46 72 6f 6d 2c 20 69 6e 74 20 6e 52 6f RowFrom, int nRo
0a80: 77 73 43 6f 75 6e 74 2c 20 69 6e 74 20 6e 50 61 wsCount, int nPa
0a90: 67 65 53 69 7a 65 48 69 6e 74 29 20 3d 20 30 3b geSizeHint) = 0;
0aa0: 0d 0a 20 20 20 20 76 69 72 74 75 61 6c 20 43 44 .. virtual CD
0ab0: 61 74 61 52 6f 77 2a 20 46 65 74 63 68 28 29 20 ataRow* Fetch()
0ac0: 3d 20 30 3b 0d 0a 20 20 20 20 76 69 72 74 75 61 = 0;.. virtua
0ad0: 6c 20 42 4f 4f 4c 20 52 65 66 72 65 73 68 52 6f l BOOL RefreshRo
0ae0: 77 28 43 44 61 74 61 52 6f 77 2a 20 70 52 6f 77 w(CDataRow* pRow
0af0: 46 72 6f 6d 29 20 3d 20 30 3b 0d 0a 20 20 20 20 From) = 0;..
0b00: 76 69 72 74 75 61 6c 20 42 4f 4f 4c 20 43 6f 6d virtual BOOL Com
0b10: 70 61 72 65 52 6f 77 73 28 43 44 61 74 61 52 6f pareRows(CDataRo
0b20: 77 2a 20 70 52 6f 77 31 2c 20 43 44 61 74 61 52 w* pRow1, CDataR
0b30: 6f 77 2a 20 70 52 6f 77 32 29 20 63 6f 6e 73 74 ow* pRow2) const
0b40: 20 3d 20 30 3b 0d 0a 20 20 20 20 76 69 72 74 75 = 0;.. virtu
0b50: 61 6c 20 4c 50 43 53 54 52 20 47 65 74 4c 61 73 al LPCSTR GetLas
0b60: 74 45 72 72 6f 72 28 29 20 7b 72 65 74 75 72 6e tError() {return
0b70: 20 4e 55 4c 4c 3b 7d 3b 0d 0a 20 20 20 20 76 69 NULL;};.. vi
0b80: 72 74 75 61 6c 20 42 4f 4f 4c 20 47 65 74 52 6f rtual BOOL GetRo
0b90: 77 43 6f 75 6e 74 28 55 49 4e 54 2a 20 70 43 6f wCount(UINT* pCo
0ba0: 75 6e 74 29 20 7b 72 65 74 75 72 6e 20 46 41 4c unt) {return FAL
0bb0: 53 45 3b 7d 3b 0d 0a 0d 0a 20 20 20 20 76 69 72 SE;};.... vir
0bc0: 74 75 61 6c 20 76 6f 69 64 20 51 75 65 72 79 46 tual void QueryF
0bd0: 69 65 6c 64 28 4c 50 43 53 54 52 20 73 7a 46 69 ield(LPCSTR szFi
0be0: 65 6c 64 4e 61 6d 65 29 20 7b 7d 3b 0d 0a 20 20 eldName) {};..
0bf0: 20 20 76 69 72 74 75 61 6c 20 76 6f 69 64 20 52 virtual void R
0c00: 65 6c 65 61 73 65 46 69 65 6c 64 28 4c 50 43 53 eleaseField(LPCS
0c10: 54 52 20 73 7a 46 69 65 6c 64 4e 61 6d 65 29 20 TR szFieldName)
0c20: 7b 7d 3b 0d 0a 20 20 20 20 76 69 72 74 75 61 6c {};.. virtual
0c30: 20 76 6f 69 64 20 4f 6e 46 69 65 6c 64 73 43 68 void OnFieldsCh
0c40: 61 6e 67 65 64 28 29 0d 0a 20 20 20 20 7b 0d 0a anged().. {..
0c50: 20 20 20 20 20 20 20 20 69 66 20 28 6d 5f 68 43 if (m_hC
0c60: 74 72 6c 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d trl).. {.
0c70: 0a 23 69 66 64 65 66 20 4f 50 54 49 4d 49 5a 45 .#ifdef OPTIMIZE
0c80: 5f 46 49 45 4c 44 53 5f 43 48 41 4e 47 45 0d 0a _FIELDS_CHANGE..
0c90: 20 20 20 20 20 20 20 20 20 20 20 20 4d 53 47 20 MSG
0ca0: 6d 73 67 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 msg;..
0cb0: 20 20 3a 3a 50 65 65 6b 4d 65 73 73 61 67 65 28 ::PeekMessage(
0cc0: 26 6d 73 67 2c 20 6d 5f 68 43 74 72 6c 2c 20 44 &msg, m_hCtrl, D
0cd0: 50 5f 44 41 54 41 5f 43 48 41 4e 47 45 2c 20 44 P_DATA_CHANGE, D
0ce0: 50 5f 44 41 54 41 5f 43 48 41 4e 47 45 2c 20 50 P_DATA_CHANGE, P
0cf0: 4d 5f 52 45 4d 4f 56 45 29 3b 0d 0a 20 20 20 20 M_REMOVE);..
0d00: 20 20 20 20 20 20 20 20 3a 3a 50 6f 73 74 4d 65 ::PostMe
0d10: 73 73 61 67 65 28 6d 5f 68 43 74 72 6c 2c 20 44 ssage(m_hCtrl, D
0d20: 50 5f 44 41 54 41 5f 43 48 41 4e 47 45 2c 20 44 P_DATA_CHANGE, D
0d30: 50 5f 46 49 45 4c 44 53 2c 20 30 29 3b 0d 0a 23 P_FIELDS, 0);..#
0d40: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 else..
0d50: 20 20 3a 3a 53 65 6e 64 4d 65 73 73 61 67 65 28 ::SendMessage(
0d60: 6d 5f 68 43 74 72 6c 2c 20 44 50 5f 44 41 54 41 m_hCtrl, DP_DATA
0d70: 5f 43 48 41 4e 47 45 2c 20 4d 41 4b 45 57 4f 52 _CHANGE, MAKEWOR
0d80: 44 28 44 50 5f 46 49 45 4c 44 53 2c 20 28 42 59 D(DP_FIELDS, (BY
0d90: 54 45 29 6d 5f 52 65 67 69 6f 6e 54 79 70 65 29 TE)m_RegionType)
0da0: 2c 20 30 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 , 0);..#endif..
0db0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 3b }.. };
0dc0: 0d 0a 0d 0a 20 20 20 20 76 69 72 74 75 61 6c 20 .... virtual
0dd0: 44 61 74 61 54 79 70 65 20 47 65 74 51 75 69 63 DataType GetQuic
0de0: 6b 53 65 61 72 63 68 54 79 70 65 28 4c 50 43 53 kSearchType(LPCS
0df0: 54 52 20 73 7a 46 69 65 6c 64 4e 61 6d 65 29 20 TR szFieldName)
0e00: 7b 72 65 74 75 72 6e 20 64 74 55 6e 64 65 66 69 {return dtUndefi
0e10: 6e 65 64 3b 7d 3b 0d 0a 20 20 20 20 76 69 72 74 ned;};.. virt
0e20: 75 61 6c 20 76 6f 69 64 20 51 75 69 63 6b 53 65 ual void QuickSe
0e30: 61 72 63 68 28 73 74 51 75 69 63 6b 53 65 61 72 arch(stQuickSear
0e40: 63 68 50 61 74 74 65 72 6e 26 20 51 53 50 61 74 chPattern& QSPat
0e50: 74 65 72 6e 29 20 7b 7d 3b 0d 0a 0d 0a 70 72 6f tern) {};....pro
0e60: 74 65 63 74 65 64 3a 0d 0a 20 20 20 20 76 69 72 tected:.. vir
0e70: 74 75 61 6c 20 76 6f 69 64 20 4f 6e 41 74 74 61 tual void OnAtta
0e80: 63 68 28 29 20 7b 7d 3b 0d 0a 20 20 20 20 76 69 ch() {};.. vi
0e90: 72 74 75 61 6c 20 76 6f 69 64 20 4f 6e 44 65 74 rtual void OnDet
0ea0: 61 63 68 28 29 20 7b 7d 3b 0d 0a 70 72 69 76 61 ach() {};..priva
0eb0: 74 65 3a 0d 0a 20 20 20 20 48 57 4e 44 20 6d 5f te:.. HWND m_
0ec0: 68 43 74 72 6c 3b 0d 0a 09 52 65 67 69 6f 6e 54 hCtrl;...RegionT
0ed0: 79 70 65 20 6d 5f 52 65 67 69 6f 6e 54 79 70 65 ype m_RegionType
0ee0: 3b 0d 0a 7d 3b 0d 0a ;..};..