PWL_Wnd.h revision 4d3acf4ec42bf6e838f9060103aff98fbf170794
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. 4ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 5e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 74d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#ifndef FPDFSDK_PDFWINDOW_PWL_WND_H_ 84d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#define FPDFSDK_PDFWINDOW_PWL_WND_H_ 9e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include <memory> 114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include <vector> 124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfdoc/cpdf_formcontrol.h" 144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fxcrt/cfx_observable.h" 154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fxcrt/fx_basic.h" 164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/cfx_systemhandler.h" 174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/cpdfsdk_widget.h" 184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/pdfwindow/cpwl_color.h" 19e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 20e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPWL_MsgControl; 21e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPWL_ScrollBar; 22e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPWL_Timer; 23e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPWL_TimerHandler; 24e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPWL_Wnd; 254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CFX_SystemHandler; 264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass IPVT_FontMap; 27e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass IPWL_Provider; 28e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 29ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// window styles 30ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWS_CHILD 0x80000000L 31ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWS_BORDER 0x40000000L 32ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWS_BACKGROUND 0x20000000L 33ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWS_HSCROLL 0x10000000L 34ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWS_VSCROLL 0x08000000L 35ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWS_VISIBLE 0x04000000L 36ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWS_DISABLE 0x02000000L 37ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWS_READONLY 0x01000000L 38ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWS_AUTOFONTSIZE 0x00800000L 39ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWS_AUTOTRANSPARENT 0x00400000L 40ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWS_NOREFRESHCLIP 0x00200000L 41ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 42ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// edit and label styles 43ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_MULTILINE 0x0001L 44ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_PASSWORD 0x0002L 45ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_LEFT 0x0004L 46ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_RIGHT 0x0008L 47ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_MIDDLE 0x0010L 48ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_TOP 0x0020L 49ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_BOTTOM 0x0040L 50ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_CENTER 0x0080L 51ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_CHARARRAY 0x0100L 52ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_AUTOSCROLL 0x0200L 53ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_AUTORETURN 0x0400L 54ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_UNDO 0x0800L 55ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_RICH 0x1000L 56ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_SPELLCHECK 0x2000L 57ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_TEXTOVERFLOW 0x4000L 58ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_NOREAD 0x8000L 59ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 60ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// listbox styles 61ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PLBS_MULTIPLESEL 0x0001L 62ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PLBS_HOVERSEL 0x0008L 63ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 64ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// combobox styles 65ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PCBS_ALLOWCUSTOMTEXT 0x0001L 66ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 67ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// richedit styles 68ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PRES_MULTILINE 0x0001L 69ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PRES_AUTORETURN 0x0002L 70ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PRES_AUTOSCROLL 0x0004L 71ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PRES_UNDO 0x0100L 72ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PRES_MULTIPAGES 0x0200L 73ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PRES_TEXTOVERFLOW 0x0400L 74ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 75ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// notification messages 76ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PNM_ADDCHILD 0x00000000L 77ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PNM_REMOVECHILD 0x00000001L 78ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PNM_SETSCROLLINFO 0x00000002L 79ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PNM_SETSCROLLPOS 0x00000003L 80ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PNM_SCROLLWINDOW 0x00000004L 81ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PNM_LBUTTONDOWN 0x00000005L 82ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PNM_LBUTTONUP 0x00000006L 83ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PNM_MOUSEMOVE 0x00000007L 84ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PNM_NOTERESET 0x00000008L 85ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PNM_SETCARETINFO 0x00000009L 86ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PNM_SELCHANGED 0x0000000AL 87ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PNM_NOTEEDITCHANGED 0x0000000BL 88ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 89ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_CLASSNAME_EDIT "CPWL_Edit" 90ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 91ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstruct CPWL_Dash { 924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPWL_Dash() : nDash(0), nGap(0), nPhase(0) {} 93ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPWL_Dash(int32_t dash, int32_t gap, int32_t phase) 94ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann : nDash(dash), nGap(gap), nPhase(phase) {} 95ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void Reset() { 974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nDash = 0; 984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nGap = 0; 994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nPhase = 0; 1004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 102ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t nDash; 103ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t nGap; 104ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t nPhase; 105e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 106e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmanninline bool operator==(const CPWL_Color& c1, const CPWL_Color& c2) { 108ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return c1.nColorType == c2.nColorType && c1.fColor1 - c2.fColor1 < 0.0001 && 109ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann c1.fColor1 - c2.fColor1 > -0.0001 && 110ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann c1.fColor2 - c2.fColor2 < 0.0001 && 111ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann c1.fColor2 - c2.fColor2 > -0.0001 && 112ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann c1.fColor3 - c2.fColor3 < 0.0001 && 113ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann c1.fColor3 - c2.fColor3 > -0.0001 && 114ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann c1.fColor4 - c2.fColor4 < 0.0001 && c1.fColor4 - c2.fColor4 > -0.0001; 115e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 116e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 1174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmanninline bool operator!=(const CPWL_Color& c1, const CPWL_Color& c2) { 1184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann return !(c1 == c2); 119e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 120e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 121ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_SCROLLBAR_WIDTH 12.0f 122ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_SCROLLBAR_BUTTON_WIDTH 9.0f 123ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_SCROLLBAR_POSBUTTON_MINWIDTH 2.0f 124ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_SCROLLBAR_TRANSPARANCY 150 125ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_SCROLLBAR_BKCOLOR \ 126ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPWL_Color(COLORTYPE_RGB, 220.0f / 255.0f, 220.0f / 255.0f, 220.0f / 255.0f) 127ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_DEFAULT_SELTEXTCOLOR CPWL_Color(COLORTYPE_RGB, 1, 1, 1) 128ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_DEFAULT_SELBACKCOLOR \ 129ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPWL_Color(COLORTYPE_RGB, 0, 51.0f / 255.0f, 113.0f / 255.0f) 130ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_DEFAULT_BACKCOLOR PWL_DEFAULT_SELTEXTCOLOR 131ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_DEFAULT_TEXTCOLOR CPWL_Color(COLORTYPE_RGB, 0, 0, 0) 132ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_DEFAULT_FONTSIZE 9.0f 133ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_DEFAULT_BLACKCOLOR CPWL_Color(COLORTYPE_GRAY, 0) 134ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_DEFAULT_WHITECOLOR CPWL_Color(COLORTYPE_GRAY, 1) 135ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_DEFAULT_HEAVYGRAYCOLOR CPWL_Color(COLORTYPE_GRAY, 0.50) 136ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_DEFAULT_LIGHTGRAYCOLOR CPWL_Color(COLORTYPE_GRAY, 0.75) 137ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_TRIANGLE_HALFLEN 2.0f 138ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_CBBUTTON_TRIANGLE_HALFLEN 3.0f 139ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_INVALIDATE_INFLATE 2 140ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 1414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass IPWL_Provider : public CFX_Observable<IPWL_Provider> { 142ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public: 143ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual ~IPWL_Provider() {} 144ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 145ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann // get a matrix which map user space to CWnd client space 146ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual CFX_Matrix GetWindowMatrix(void* pAttachedData) = 0; 147ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 148ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* 149ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 0 L"&Undo\tCtrl+Z" 150ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 1 L"&Redo\tCtrl+Shift+Z" 151ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 2 L"Cu&t\tCtrl+X" 152ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 3 L"&Copy\tCtrl+C" 153ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 4 L"&Paste\tCtrl+V" 154ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 5 L"&Delete" 155ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 6 L"&Select All\tCtrl+A" 156ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann */ 157ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual CFX_WideString LoadPopupMenuString(int32_t nIndex) = 0; 158e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 159e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 160ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass IPWL_FocusHandler { 161ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public: 162ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual ~IPWL_FocusHandler() {} 163ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void OnSetFocus(CPWL_Wnd* pWnd) = 0; 164e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 165e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 166ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstruct PWL_CREATEPARAM { 167ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public: 1684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann PWL_CREATEPARAM(); 1694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann PWL_CREATEPARAM(const PWL_CREATEPARAM& other); 1704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void Reset() { 1724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann rcRectWnd.Reset(); 1734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pSystemHandler = nullptr; 1744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFontMap = nullptr; 1754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pProvider.Reset(); 1764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pFocusHandler = nullptr; 1774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann dwFlags = 0; 1784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sBackgroundColor.Reset(); 1794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pAttachedWidget.Reset(); 1804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nBorderStyle = BorderStyle::SOLID; 1814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann dwBorderWidth = 0; 1824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sBorderColor.Reset(); 1834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sTextColor.Reset(); 1844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sTextStrokeColor.Reset(); 1854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann nTransparency = 0; 1864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann fFontSize = 0.0f; 1874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann sDash.Reset(); 1884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pAttachedData = nullptr; 1894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pParentWnd = nullptr; 1904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann pMsgControl = nullptr; 1914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann eCursorType = 0; 1924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann mtChild.SetIdentity(); 1934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann } 1944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann 1954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_FloatRect rcRectWnd; // required 1964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_SystemHandler* pSystemHandler; // required 1974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann IPVT_FontMap* pFontMap; // required 1984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann IPWL_Provider::ObservedPtr pProvider; // required 199ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IPWL_FocusHandler* pFocusHandler; // optional 2004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t dwFlags; // optional 201ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPWL_Color sBackgroundColor; // optional 2024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPDFSDK_Widget::ObservedPtr pAttachedWidget; // required 2034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann BorderStyle nBorderStyle; // optional 204ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t dwBorderWidth; // optional 205ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPWL_Color sBorderColor; // optional 206ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPWL_Color sTextColor; // optional 207ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPWL_Color sTextStrokeColor; // optional 208ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t nTransparency; // optional 209ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fFontSize; // optional 210ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPWL_Dash sDash; // optional 211ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void* pAttachedData; // optional 212ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPWL_Wnd* pParentWnd; // ignore 213ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPWL_MsgControl* pMsgControl; // ignore 214ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t eCursorType; // ignore 215ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_Matrix mtChild; // ignore 216e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 217e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 218ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CPWL_Timer { 219ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public: 2204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CPWL_Timer(CPWL_TimerHandler* pAttached, CFX_SystemHandler* pSystemHandler); 221ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual ~CPWL_Timer(); 222e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 223ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t SetPWLTimer(int32_t nElapse); 224ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void KillPWLTimer(); 225ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static void TimerProc(int32_t idEvent); 226e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 227ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann private: 228ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t m_nTimerID; 229ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPWL_TimerHandler* m_pAttached; 2304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_SystemHandler* m_pSystemHandler; 231e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 232e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 233ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CPWL_TimerHandler { 234ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public: 235ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPWL_TimerHandler(); 236ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual ~CPWL_TimerHandler(); 237e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 238ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void BeginTimer(int32_t nElapse); 239ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void EndTimer(); 240ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void TimerProc(); 2414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann virtual CFX_SystemHandler* GetSystemHandler() const = 0; 242e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 243ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann private: 2444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann std::unique_ptr<CPWL_Timer> m_pTimer; 245e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 246e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 247ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CPWL_Wnd : public CPWL_TimerHandler { 248ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann friend class CPWL_MsgControl; 249ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 250ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public: 251ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPWL_Wnd(); 252ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ~CPWL_Wnd() override; 253ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 254ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void Create(const PWL_CREATEPARAM& cp); 255ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual CFX_ByteString GetClassName() const; 256ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void InvalidateFocusHandler(IPWL_FocusHandler* handler); 257ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void InvalidateProvider(IPWL_Provider* provider); 258ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void Destroy(); 2594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void Move(const CFX_FloatRect& rcNew, bool bReset, bool bRefresh); 2604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann virtual void InvalidateRect(CFX_FloatRect* pRect = nullptr); 261ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 262ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void DrawAppearance(CFX_RenderDevice* pDevice, CFX_Matrix* pUser2Device); 263ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 2644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann virtual bool OnKeyDown(uint16_t nChar, uint32_t nFlag); 2654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann virtual bool OnKeyUp(uint16_t nChar, uint32_t nFlag); 2664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann virtual bool OnChar(uint16_t nChar, uint32_t nFlag); 2674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann virtual bool OnLButtonDblClk(const CFX_FloatPoint& point, uint32_t nFlag); 2684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann virtual bool OnLButtonDown(const CFX_FloatPoint& point, uint32_t nFlag); 2694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann virtual bool OnLButtonUp(const CFX_FloatPoint& point, uint32_t nFlag); 2704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann virtual bool OnMButtonDblClk(const CFX_FloatPoint& point, uint32_t nFlag); 2714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann virtual bool OnMButtonDown(const CFX_FloatPoint& point, uint32_t nFlag); 2724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann virtual bool OnMButtonUp(const CFX_FloatPoint& point, uint32_t nFlag); 2734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann virtual bool OnRButtonDown(const CFX_FloatPoint& point, uint32_t nFlag); 2744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann virtual bool OnRButtonUp(const CFX_FloatPoint& point, uint32_t nFlag); 2754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann virtual bool OnMouseMove(const CFX_FloatPoint& point, uint32_t nFlag); 2764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann virtual bool OnMouseWheel(short zDelta, 2774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_FloatPoint& point, 2784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t nFlag); 279ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 280ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void SetFocus(); 281ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void KillFocus(); 282ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void SetCapture(); 283ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void ReleaseCapture(); 284ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 285ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void OnNotify(CPWL_Wnd* pWnd, 2864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann uint32_t msg, 287ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann intptr_t wParam = 0, 288ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann intptr_t lParam = 0); 289ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void SetTextColor(const CPWL_Color& color); 290ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void SetTextStrokeColor(const CPWL_Color& color); 2914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann virtual void SetVisible(bool bVisible); 292ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 2934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann virtual CFX_FloatRect GetFocusRect() const; 294ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual CPWL_Color GetBackgroundColor() const; 295ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual CPWL_Color GetBorderColor() const; 296ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual CPWL_Color GetTextColor() const; 297ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual CPWL_Color GetTextStrokeColor() const; 298ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_FLOAT GetFontSize() const; 299ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual int32_t GetInnerBorderWidth() const; 3004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann virtual CPWL_Color GetBorderLeftTopColor(BorderStyle nBorderStyle) const; 3014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann virtual CPWL_Color GetBorderRightBottomColor(BorderStyle nBorderStyle) const; 302ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 303ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void SetFontSize(FX_FLOAT fFontSize); 304ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 305ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void SetBackgroundColor(const CPWL_Color& color); 3064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void SetClipRect(const CFX_FloatRect& rect); 3074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void SetBorderStyle(BorderStyle eBorderStyle); 308ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 3094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann virtual CFX_FloatRect GetWindowRect() const; 3104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann virtual CFX_FloatRect GetClientRect() const; 3114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_FloatPoint GetCenterPoint() const; 312ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t GetBorderWidth() const; 3134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool IsVisible() const { return m_bVisible; } 3144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool HasFlag(uint32_t dwFlags) const; 3154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void AddFlag(uint32_t dwFlags); 3164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void RemoveFlag(uint32_t dwFlags); 3174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_FloatRect& GetClipRect() const; 318ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPWL_Wnd* GetParentWindow() const; 3194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann BorderStyle GetBorderStyle() const; 320ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CPWL_Dash& GetBorderDash() const; 321ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void* GetAttachedData() const; 322ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 3234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool WndHitTest(const CFX_FloatPoint& point) const; 3244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool ClientHitTest(const CFX_FloatPoint& point) const; 3254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool IsCaptureMouse() const; 326ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 327ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CPWL_Wnd* GetFocused() const; 3284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool IsFocused() const; 3294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool IsReadOnly() const; 330ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPWL_ScrollBar* GetVScrollBar() const; 331ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 3324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann IPVT_FontMap* GetFontMap() const; 333ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IPWL_Provider* GetProvider() const; 334ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IPWL_FocusHandler* GetFocusHandler() const; 335ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 336ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t GetTransparency(); 337ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void SetTransparency(int32_t nTransparency); 338ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 339ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_Matrix GetChildToRoot() const; 340ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_Matrix GetChildMatrix() const; 341ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void SetChildMatrix(const CFX_Matrix& mt); 342ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_Matrix GetWindowMatrix() const; 343ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 3444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann virtual CFX_FloatPoint ChildToParent(const CFX_FloatPoint& point) const; 3454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann virtual CFX_FloatRect ChildToParent(const CFX_FloatRect& rect) const; 3464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann virtual CFX_FloatPoint ParentToChild(const CFX_FloatPoint& point) const; 3474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann virtual CFX_FloatRect ParentToChild(const CFX_FloatRect& rect) const; 348ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 349ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann // those methods only implemented by listctrl item 3504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann virtual FX_FLOAT GetItemHeight(FX_FLOAT fLimitWidth); 3514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann virtual FX_FLOAT GetItemLeftMargin(); 3524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann virtual FX_FLOAT GetItemRightMargin(); 353ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 3544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void EnableWindow(bool bEnable); 3554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool IsEnabled(); 356ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void SetCursor(); 357ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 358ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann protected: 359ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann // CPWL_TimerHandler 3604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_SystemHandler* GetSystemHandler() const override; 361ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 362ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void CreateChildWnd(const PWL_CREATEPARAM& cp); 363ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void RePosChildWnd(); 364ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void GetAppearanceStream(CFX_ByteTextBuf& sAppStream); 365ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void GetThisAppearanceStream(CFX_ByteTextBuf& sAppStream); 366ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void GetChildAppearanceStream(CFX_ByteTextBuf& sAppStream); 367ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 368ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void DrawThisAppearance(CFX_RenderDevice* pDevice, 369ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_Matrix* pUser2Device); 370ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void DrawChildAppearance(CFX_RenderDevice* pDevice, 371ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_Matrix* pUser2Device); 372ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 373ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void OnCreate(PWL_CREATEPARAM& cp); 374ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void OnCreated(); 375ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void OnDestroy(); 376ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 377ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void OnSetFocus(); 378ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void OnKillFocus(); 379ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 380ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void OnEnabled(); 381ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void OnDisabled(); 382ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 3834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void SetNotifyFlag(bool bNotifying = true) { m_bNotifying = bNotifying; } 384ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 3854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool IsValid() const; 386ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const PWL_CREATEPARAM& GetCreationParam() const; 3874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool IsNotifying() const { return m_bNotifying; } 388ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 3894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void InvalidateRectMove(const CFX_FloatRect& rcOld, 3904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann const CFX_FloatRect& rcNew); 391ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 3924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann void PWLtoWnd(const CFX_FloatPoint& point, int32_t& x, int32_t& y) const; 3934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann FX_RECT PWLtoWnd(const CFX_FloatRect& rect) const; 394ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 3954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool IsWndCaptureMouse(const CPWL_Wnd* pWnd) const; 3964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool IsWndCaptureKeyboard(const CPWL_Wnd* pWnd) const; 397ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CPWL_Wnd* GetRootWnd() const; 398ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 3994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool IsCTRLpressed(uint32_t nFlag) const; 4004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool IsSHIFTpressed(uint32_t nFlag) const; 4014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool IsALTpressed(uint32_t nFlag) const; 402ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 403ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann private: 404ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void AddChild(CPWL_Wnd* pWnd); 405ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void RemoveChild(CPWL_Wnd* pWnd); 406ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 407ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void CreateScrollBar(const PWL_CREATEPARAM& cp); 408ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void CreateVScrollBar(const PWL_CREATEPARAM& cp); 409ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 410ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void AdjustStyle(); 411ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void CreateMsgControl(); 412ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void DestroyMsgControl(); 413ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 414ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPWL_MsgControl* GetMsgControl() const; 415ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 416ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann protected: 4174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann std::vector<CPWL_Wnd*> m_Children; 418ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 419ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann private: 420ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann PWL_CREATEPARAM m_sPrivateParam; 421ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPWL_ScrollBar* m_pVScrollBar; 4224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_FloatRect m_rcWindow; 4234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann CFX_FloatRect m_rcClip; 4244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool m_bCreated; 4254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool m_bVisible; 4264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool m_bNotifying; 4274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann bool m_bEnabled; 428e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}; 429e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 4304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#endif // FPDFSDK_PDFWINDOW_PWL_WND_H_ 431