1e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// Copyright 2014 PDFium Authors. All rights reserved. 2e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// Use of this source code is governed by a BSD-style license that can be 3e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// found in the LICENSE file. 4e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 5e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 7e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#ifndef FPDFSDK_INCLUDE_PDFWINDOW_PWL_WND_H_ 8e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define FPDFSDK_INCLUDE_PDFWINDOW_PWL_WND_H_ 9e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 10e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include "../../../core/include/fxcrt/fx_basic.h" 11e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include "../../../core/include/fpdfdoc/fpdf_doc.h" 12e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include "../fx_systemhandler.h" 13e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 14e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPWL_MsgControl; 15e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPWL_ScrollBar; 16e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPWL_Timer; 17e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPWL_TimerHandler; 18e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPWL_Wnd; 19e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass IFX_Edit_FontMap; 20e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass IFX_SystemHandler; 21e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass IPWL_Provider; 22e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass IPWL_SpellCheck; 23e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 24e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#ifdef FX_READER_DLL 25e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov #ifdef PWL_EXPORT 26e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov #define PWL_CLASS __declspec(dllexport) 27e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov #define PWL_FUNCTION PWL_CLASS 28e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov #else 29e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov #define PWL_CLASS 30e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov #define PWL_FUNCTION 31e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov #endif 32e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#else 33e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov #define PWL_CLASS 34e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov #define PWL_FUNCTION 35e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#endif 36e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 37e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov//window styles 38e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PWS_CHILD 0x80000000L 39e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PWS_BORDER 0x40000000L 40e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PWS_BACKGROUND 0x20000000L 41e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PWS_HSCROLL 0x10000000L 42e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PWS_VSCROLL 0x08000000L 43e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PWS_VISIBLE 0x04000000L 44e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PWS_DISABLE 0x02000000L 45e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PWS_READONLY 0x01000000L 46e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PWS_AUTOFONTSIZE 0x00800000L 47e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PWS_AUTOTRANSPARENT 0x00400000L 48e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PWS_NOREFRESHCLIP 0x00200000L 49e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 50e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov//edit and label styles 51e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PES_MULTILINE 0x0001L 52e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PES_PASSWORD 0x0002L 53e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PES_LEFT 0x0004L 54e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PES_RIGHT 0x0008L 55e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PES_MIDDLE 0x0010L 56e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PES_TOP 0x0020L 57e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PES_BOTTOM 0x0040L 58e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PES_CENTER 0x0080L 59e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PES_CHARARRAY 0x0100L 60e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PES_AUTOSCROLL 0x0200L 61e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PES_AUTORETURN 0x0400L 62e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PES_UNDO 0x0800L 63e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PES_RICH 0x1000L 64e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PES_SPELLCHECK 0x2000L 65e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PES_TEXTOVERFLOW 0x4000L 66e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PES_NOREAD 0x8000L 67e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 68e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov//listbox styles 69e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PLBS_MULTIPLESEL 0x0001L 70e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PLBS_HOVERSEL 0x0008L 71e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 72e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov//combobox styles 73e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PCBS_ALLOWCUSTOMTEXT 0x0001L 74e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 75e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov//richedit styles 76e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PRES_MULTILINE 0x0001L 77e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PRES_AUTORETURN 0x0002L 78e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PRES_AUTOSCROLL 0x0004L 79e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PRES_SPELLCHECK 0x0008L 80e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PRES_UNDO 0x0100L 81e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PRES_MULTIPAGES 0x0200L 82e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PRES_TEXTOVERFLOW 0x0400L 83e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 84e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov//border style 85e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PBS_SOLID 0 86e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PBS_DASH 1 87e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PBS_BEVELED 2 88e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PBS_INSET 3 89e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PBS_UNDERLINED 4 90e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PBS_SHADOW 5 91e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 92e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov//notification messages 93e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PNM_ADDCHILD 0x00000000L 94e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PNM_REMOVECHILD 0x00000001L 95e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PNM_SETSCROLLINFO 0x00000002L 96e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PNM_SETSCROLLPOS 0x00000003L 97e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PNM_SCROLLWINDOW 0x00000004L 98e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PNM_LBUTTONDOWN 0x00000005L 99e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PNM_LBUTTONUP 0x00000006L 100e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PNM_MOUSEMOVE 0x00000007L 101e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PNM_NOTERESET 0x00000008L 102e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PNM_SETCARETINFO 0x00000009L 103e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PNM_SELCHANGED 0x0000000AL 104e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PNM_NOTEEDITCHANGED 0x0000000BL 105e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 106e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PWL_CLASSNAME_EDIT "CPWL_Edit" 107e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 108e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovstruct CPWL_Dash 109e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 110e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Dash(FX_INT32 dash, FX_INT32 gap, FX_INT32 phase) : nDash(dash), nGap(gap), nPhase(phase) 111e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov {} 112e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 113e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 nDash; 114e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 nGap; 115e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 nPhase; 116e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 117e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 118e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovstruct PWL_CLASS CPWL_Color 119e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 120e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Color(FX_INT32 type = COLORTYPE_TRANSPARENT, FX_FLOAT color1 = 0.0f, FX_FLOAT color2 = 0.0f, FX_FLOAT color3 = 0.0f, FX_FLOAT color4 = 0.0f) 121e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov : nColorType(type), fColor1(color1), fColor2(color2), fColor3(color3), fColor4(color4) 122e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov {} 123e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 124e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Color(FX_INT32 r, FX_INT32 g, FX_INT32 b) : 125e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov nColorType(COLORTYPE_RGB), fColor1(r/255.0f), fColor2(g/255.0f), fColor3(b/255.0f), fColor4(0) 126e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov {} 127e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 128e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void ConvertColorType(FX_INT32 nColorType); 129e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 130e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* 131e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov COLORTYPE_TRANSPARENT 132e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov COLORTYPE_RGB 133e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov COLORTYPE_CMYK 134e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov COLORTYPE_GRAY 135e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov */ 136e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 nColorType; 137e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fColor1,fColor2,fColor3,fColor4; 138e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 139e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 140e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovinline FX_BOOL operator == (const CPWL_Color &c1, const CPWL_Color &c2) 141e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 142e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return c1.nColorType == c2.nColorType && 143e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov c1.fColor1 - c2.fColor1 < 0.0001 && c1.fColor1 - c2.fColor1 > -0.0001 && 144e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov c1.fColor2 - c2.fColor2 < 0.0001 && c1.fColor2 - c2.fColor2 > -0.0001 && 145e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov c1.fColor3 - c2.fColor3 < 0.0001 && c1.fColor3 - c2.fColor3 > -0.0001 && 146e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov c1.fColor4 - c2.fColor4 < 0.0001 && c1.fColor4 - c2.fColor4 > -0.0001; 147e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 148e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 149e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovinline FX_BOOL operator != (const CPWL_Color &c1, const CPWL_Color &c2) 150e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 151e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov return !operator == (c1, c2); 152e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 153e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 154e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PWL_SCROLLBAR_WIDTH 12.0f 155e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PWL_SCROLLBAR_BUTTON_WIDTH 9.0f 156e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PWL_SCROLLBAR_POSBUTTON_MINWIDTH 2.0f 157e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PWL_SCROLLBAR_TRANSPARANCY 150 158e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PWL_SCROLLBAR_BKCOLOR CPWL_Color(COLORTYPE_RGB,220.0f/255.0f,220.0f/255.0f,220.0f/255.0f) 159e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PWL_DEFAULT_SELTEXTCOLOR CPWL_Color(COLORTYPE_RGB,1,1,1) 160e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PWL_DEFAULT_SELBACKCOLOR CPWL_Color(COLORTYPE_RGB,0,51.0f/255.0f,113.0f/255.0f) 161e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PWL_DEFAULT_BACKCOLOR PWL_DEFAULT_SELTEXTCOLOR 162e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PWL_DEFAULT_TEXTCOLOR CPWL_Color(COLORTYPE_RGB,0,0,0) 163e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PWL_DEFAULT_FONTSIZE 9.0f 164e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PWL_DEFAULT_BLACKCOLOR CPWL_Color(COLORTYPE_GRAY,0) 165e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PWL_DEFAULT_WHITECOLOR CPWL_Color(COLORTYPE_GRAY,1) 166e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PWL_DEFAULT_HEAVYGRAYCOLOR CPWL_Color(COLORTYPE_GRAY,0.50) 167e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PWL_DEFAULT_LIGHTGRAYCOLOR CPWL_Color(COLORTYPE_GRAY,0.75) 168e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PWL_TRIANGLE_HALFLEN 2.0f 169e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PWL_CBBUTTON_TRIANGLE_HALFLEN 3.0f 170e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#define PWL_INVALIDATE_INFLATE 2 171e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 172e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass IPWL_SpellCheck 173e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 174e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 175e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual ~IPWL_SpellCheck() { } 176e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual FX_BOOL CheckWord(FX_LPCSTR sWord) = 0; 177e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void SuggestWords(FX_LPCSTR sWord, CFX_ByteStringArray & sSuggest) = 0; 178e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 179e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 180e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass IPWL_Provider 181e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 182e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 183e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual ~IPWL_Provider() { } 184e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 185e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov //get a matrix which map user space to CWnd client space 186e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual CPDF_Matrix GetWindowMatrix(void* pAttachedData) = 0; 187e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 188e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* 189e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 0 L"&Undo\tCtrl+Z" 190e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1 L"&Redo\tCtrl+Shift+Z" 191e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 2 L"Cu&t\tCtrl+X" 192e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 3 L"&Copy\tCtrl+C" 193e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 4 L"&Paste\tCtrl+V" 194e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 5 L"&Delete" 195e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 6 L"&Select All\tCtrl+A" 196e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov */ 197e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual CFX_WideString LoadPopupMenuString(FX_INT32 nIndex) = 0; 198e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 199e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 200e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass IPWL_FocusHandler 201e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 202e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 203e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual ~IPWL_FocusHandler() { } 204e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void OnSetFocus(CPWL_Wnd* pWnd) = 0; 205e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void OnKillFocus(CPWL_Wnd* pWnd) = 0; 206e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 207e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 208e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovstruct PWL_CREATEPARAM 209e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 210e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 211e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov PWL_CREATEPARAM() : rcRectWnd(0,0,0,0), 212e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pSystemHandler(NULL), 213e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pFontMap(NULL), 214e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pProvider(NULL), 215e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pFocusHandler(NULL), 216e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov dwFlags(0), 217e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sBackgroundColor(), 218e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov hAttachedWnd(NULL), 219e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pSpellCheck(NULL), 220e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov nBorderStyle(PBS_SOLID), 221e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov dwBorderWidth(1), 222e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sBorderColor(), 223e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sTextColor(), 224e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sTextStrokeColor(), 225e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov nTransparency(255), 226e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov fFontSize(PWL_DEFAULT_FONTSIZE), 227e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov sDash(3,0,0), 228e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pAttachedData(NULL), 229e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pParentWnd(NULL), 230e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov pMsgControl(NULL), 231e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov eCursorType(FXCT_ARROW), 232e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov mtChild(1,0,0,1,0,0) 233e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov { 234e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov } 235e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 236e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Rect rcRectWnd; //required 237e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov IFX_SystemHandler* pSystemHandler; //required 238e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov IFX_Edit_FontMap* pFontMap; //required for text window 239e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov IPWL_Provider* pProvider; //required for self coordinate 240e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov IPWL_FocusHandler* pFocusHandler; //optional 241e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_DWORD dwFlags; //optional 242e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Color sBackgroundColor; //optional 243e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_HWND hAttachedWnd; //required for no-reader framework 244e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov IPWL_SpellCheck* pSpellCheck; //required for spellchecking 245e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 nBorderStyle; //optional 246e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 dwBorderWidth; //optional 247e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Color sBorderColor; //optional 248e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Color sTextColor; //optional 249e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Color sTextStrokeColor; //optional 250e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 nTransparency; //optional 251e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_FLOAT fFontSize; //optional 252e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Dash sDash; //optional 253e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void* pAttachedData; //optional 254e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Wnd* pParentWnd; //ignore 255e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_MsgControl* pMsgControl; //ignore 256e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 eCursorType; //ignore 257e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Matrix mtChild; //ignore 258e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 259e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 260e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPWL_Timer 261e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 262e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 263e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Timer(CPWL_TimerHandler* pAttached, IFX_SystemHandler* pSystemHandler); 264e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual ~CPWL_Timer(); 265e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 266e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 SetPWLTimer(FX_INT32 nElapse); 267e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void KillPWLTimer(); 268e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov static void TimerProc(FX_INT32 idEvent); 269e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 270e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovprivate: 271e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 m_nTimerID; 272e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_TimerHandler* m_pAttached; 273e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov IFX_SystemHandler* m_pSystemHandler; 274e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 275e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 276e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass PWL_CLASS CPWL_TimerHandler 277e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 278e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 279e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_TimerHandler(); 280e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual ~CPWL_TimerHandler(); 281e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 282e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void BeginTimer(FX_INT32 nElapse); 283e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void EndTimer(); 284e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void TimerProc(); 285e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual IFX_SystemHandler* GetSystemHandler() const = 0; 286e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 287e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovprivate: 288e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Timer* m_pTimer; 289e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 290e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 291e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass PWL_CLASS CPWL_Wnd : public CPWL_TimerHandler 292e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov{ 293e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov friend class CPWL_MsgControl; 294e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovpublic: 295e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Wnd(); 296e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual ~CPWL_Wnd(); 297e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 298e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void Create(const PWL_CREATEPARAM & cp); 299e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual CFX_ByteString GetClassName() const; 300e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void Destroy(); 301e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void Move(const CPDF_Rect & rcNew,FX_BOOL bReset,FX_BOOL bRefresh); 302e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void InvalidateRect(CPDF_Rect* pRect = NULL); 303e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 304e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void GetAppearanceStream(CFX_ByteString & sAppStream); 305e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void DrawAppearance(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device); 306e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 307e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual FX_BOOL OnKeyDown(FX_WORD nChar, FX_DWORD nFlag); 308e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual FX_BOOL OnKeyUp(FX_WORD nChar, FX_DWORD nFlag); 309e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual FX_BOOL OnChar(FX_WORD nChar, FX_DWORD nFlag); 310e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual FX_BOOL OnLButtonDblClk(const CPDF_Point & point, FX_DWORD nFlag); 311e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual FX_BOOL OnLButtonDown(const CPDF_Point & point, FX_DWORD nFlag); 312e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual FX_BOOL OnLButtonUp(const CPDF_Point & point, FX_DWORD nFlag); 313e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual FX_BOOL OnMButtonDblClk(const CPDF_Point & point, FX_DWORD nFlag); 314e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual FX_BOOL OnMButtonDown(const CPDF_Point & point, FX_DWORD nFlag); 315e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual FX_BOOL OnMButtonUp(const CPDF_Point & point, FX_DWORD nFlag); 316e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual FX_BOOL OnRButtonDblClk(const CPDF_Point & point, FX_DWORD nFlag); 317e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual FX_BOOL OnRButtonDown(const CPDF_Point & point, FX_DWORD nFlag); 318e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual FX_BOOL OnRButtonUp(const CPDF_Point & point, FX_DWORD nFlag); 319e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual FX_BOOL OnMouseMove(const CPDF_Point & point, FX_DWORD nFlag); 320e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual FX_BOOL OnMouseWheel(short zDelta, const CPDF_Point & point, FX_DWORD nFlag); 321e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 322e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void SetFocus(); 323e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void KillFocus(); 324e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void SetCapture(); 325e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void ReleaseCapture(); 326e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 327e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void OnNotify(CPWL_Wnd* pWnd, FX_DWORD msg, FX_INTPTR wParam = 0, FX_INTPTR lParam = 0); 328e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void SetTextColor(const CPWL_Color & color); 329e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void SetTextStrokeColor(const CPWL_Color & color); 330e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void SetVisible(FX_BOOL bVisible); 331e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 332e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual CPDF_Rect GetFocusRect() const; 333e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual CPWL_Color GetBackgroundColor() const; 334e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual CPWL_Color GetBorderColor() const; 335e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual CPWL_Color GetTextColor() const; 336e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual CPWL_Color GetTextStrokeColor() const; 337e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual FX_FLOAT GetFontSize() const; 338e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual FX_INT32 GetInnerBorderWidth() const; 339e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual CPWL_Color GetBorderLeftTopColor(FX_INT32 nBorderStyle) const; 340e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual CPWL_Color GetBorderRightBottomColor(FX_INT32 nBorderStyle) const; 341e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 342e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual FX_BOOL IsModified() const {return FALSE;} 343e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 344e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void SetFontSize(FX_FLOAT fFontSize); 345e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 346e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void SetBackgroundColor(const CPWL_Color & color); 347e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void SetBorderColor(const CPWL_Color & color); 348e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void SetBorderWidth(FX_INT32 nBorderWidth); 349e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void SetClipRect(const CPDF_Rect & rect); 350e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void SetBorderStyle(FX_INT32 eBorderStyle); 351e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void SetBorderDash(const CPWL_Dash & sDash); 352e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 353e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Rect GetOriginWindowRect() const; 354e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual CPDF_Rect GetWindowRect() const; 355e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual CPDF_Rect GetClientRect() const; 356e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Point GetCenterPoint() const; 357e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Rect GetClientCenterSquare() const; 358e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Rect GetWindowCenterSquare() const; 359e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 GetBorderWidth() const; 360e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL IsVisible() const {return m_bVisible;} 361e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL HasFlag(FX_DWORD dwFlags) const; 362e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void AddFlag(FX_DWORD dwFlags); 363e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void RemoveFlag(FX_DWORD dwFlags); 364e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Rect GetClipRect() const; 365e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Wnd* GetParentWindow() const; 366e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 GetBorderStyle() const; 367e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_Dash GetBorderDash() const; 368e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void* GetAttachedData() const; 369e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 370e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL WndHitTest(const CPDF_Point & point) const; 371e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL ClientHitTest(const CPDF_Point & point) const; 372e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL IsCaptureMouse() const; 373e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 374e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov const CPWL_Wnd* GetFocused() const; 375e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL IsFocused() const; 376e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL IsReadOnly() const; 377e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_ScrollBar* GetVScrollBar() const; 378e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 379e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov IFX_Edit_FontMap* GetFontMap() const; 380e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov IPWL_Provider* GetProvider() const; 381e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual IFX_SystemHandler* GetSystemHandler() const; 382e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov IPWL_FocusHandler* GetFocusHandler() const; 383e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 384e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_INT32 GetTransparency(); 385e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void SetTransparency(FX_INT32 nTransparency); 386e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 387e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Matrix GetChildToRoot() const; 388e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Matrix GetChildMatrix() const; 389e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void SetChildMatrix(const CPDF_Matrix& mt); 390e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Matrix GetWindowMatrix() const; 391e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 392e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual CPDF_Point ChildToParent(const CPDF_Point& point) const; 393e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual CPDF_Rect ChildToParent(const CPDF_Rect& rect) const; 394e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual CPDF_Point ParentToChild(const CPDF_Point& point) const; 395e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual CPDF_Rect ParentToChild(const CPDF_Rect& rect) const; 396e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 397e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov //those methods only implemented by listctrl item 398e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual FX_FLOAT GetItemHeight(FX_FLOAT fLimitWidth) {return 0;} 399e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual FX_FLOAT GetItemLeftMargin() {return 0;} 400e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual FX_FLOAT GetItemRightMargin() {return 0;} 401e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 402e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void EnableWindow(FX_BOOL bEnable); 403e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL IsEnabled(); 404e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void SetCursor(); 405e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 406e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovprotected: 407e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void CreateChildWnd(const PWL_CREATEPARAM & cp); 408e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void RePosChildWnd(); 409e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void GetAppearanceStream(CFX_ByteTextBuf & sAppStream); 410e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void GetThisAppearanceStream(CFX_ByteTextBuf & sAppStream); 411e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void GetChildAppearanceStream(CFX_ByteTextBuf & sAppStream); 412e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 413e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void DrawThisAppearance(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device); 414e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void DrawChildAppearance(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device); 415e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 416e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void OnCreate(PWL_CREATEPARAM & cp); 417e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void OnCreated(); 418e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void OnDestroy(); 419e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 420e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void OnSetFocus(); 421e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void OnKillFocus(); 422e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 423e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void OnEnabled(); 424e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov virtual void OnDisabled(); 425e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 426e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void SetNotifyFlag(FX_BOOL bNotifying = TRUE){m_bNotifying = bNotifying;}; 427e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 428e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL IsValid() const; 429e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov PWL_CREATEPARAM GetCreationParam() const; 430e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL IsNotifying() const {return m_bNotifying;} 431e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 432e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void InvalidateRectMove(const CPDF_Rect & rcOld, const CPDF_Rect & rcNew); 433e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 434e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void PWLtoWnd(const CPDF_Point & point, FX_INT32& x, FX_INT32& y) const; 435e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_RECT PWLtoWnd(const CPDF_Rect & rect) const; 436e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_HWND GetAttachedHWnd() const; 437e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 438e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL IsWndCaptureMouse(const CPWL_Wnd * pWnd) const; 439e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL IsWndCaptureKeyboard(const CPWL_Wnd * pWnd) const; 440e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov const CPWL_Wnd* GetRootWnd() const; 441e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 442e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL IsCTRLpressed(FX_DWORD nFlag) const; 443e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL IsSHIFTpressed(FX_DWORD nFlag) const; 444e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL IsALTpressed(FX_DWORD nFlag) const; 445e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL IsINSERTpressed(FX_DWORD nFlag) const; 446e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 447e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovprivate: 448e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void AddChild(CPWL_Wnd * pWnd); 449e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void RemoveChild(CPWL_Wnd * pWnd); 450e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 451e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void CreateScrollBar(const PWL_CREATEPARAM & cp); 452e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void CreateVScrollBar(const PWL_CREATEPARAM & cp); 453e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 454e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void AjustStyle(); 455e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void CreateMsgControl(); 456e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov void DestroyMsgControl(); 457e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 458e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_MsgControl* GetMsgControl() const; 459e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 460e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovprotected: 461e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CFX_ArrayTemplate<CPWL_Wnd*> m_aChildren; 462e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 463e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovprivate: 464e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov PWL_CREATEPARAM m_sPrivateParam; 465e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 466e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPWL_ScrollBar* m_pVScrollBar; 467e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 468e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Rect m_rcWindow; 469e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_Rect m_rcClip; 470e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 471e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL m_bCreated; 472e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL m_bVisible; 473e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL m_bNotifying; 474e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov FX_BOOL m_bEnabled; 475e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 476e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 477e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#endif // FPDFSDK_INCLUDE_PDFWINDOW_PWL_WND_H_ 478