// Copyright 2014 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #ifndef _PWL_COMBOBOX_H_ #define _PWL_COMBOBOX_H_ class CPWL_CBEdit : public CPWL_Edit { public: CPWL_CBEdit(){}; virtual ~CPWL_CBEdit(){}; }; class PWL_CLASS CPWL_CBListBox : public CPWL_ListBox { public: CPWL_CBListBox(){}; virtual ~CPWL_CBListBox(){}; public: virtual FX_BOOL OnLButtonUp(const CPDF_Point & point, FX_DWORD nFlag); virtual FX_BOOL OnKeyDown(FX_WORD nChar, FX_BOOL & bExit, FX_DWORD nFlag); virtual FX_BOOL OnChar(FX_WORD nChar, FX_BOOL & bExit, FX_DWORD nFlag); }; #define PWL_COMBOBOX_BUTTON_WIDTH 13 class CPWL_CBButton : public CPWL_Wnd { public: CPWL_CBButton(){}; virtual ~CPWL_CBButton(){}; public: virtual void GetThisAppearanceStream(CFX_ByteTextBuf & sAppStream); virtual void DrawThisAppearance(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device); virtual FX_BOOL OnLButtonDown(const CPDF_Point & point, FX_DWORD nFlag); virtual FX_BOOL OnLButtonUp(const CPDF_Point & point, FX_DWORD nFlag); }; class PWL_CLASS CPWL_ComboBox : public CPWL_Wnd { public: CPWL_ComboBox(); operator CPWL_Edit* () {return m_pEdit;} public: virtual CFX_ByteString GetClassName() const; virtual void OnCreate(PWL_CREATEPARAM & cp); virtual FX_BOOL OnKeyDown(FX_WORD nChar, FX_DWORD nFlag); virtual FX_BOOL OnChar(FX_WORD nChar, FX_DWORD nFlag); virtual void OnNotify(CPWL_Wnd* pWnd, FX_DWORD msg, FX_INTPTR wParam = 0, FX_INTPTR lParam = 0); virtual void CreateChildWnd(const PWL_CREATEPARAM & cp); virtual void RePosChildWnd(); virtual CPDF_Rect GetFocusRect() const; virtual void SetFocus(); virtual void KillFocus(); FX_BOOL IsModified() const; public: void SetFillerNotify(IPWL_Filler_Notify* pNotify); CFX_WideString GetText() const; void SetText(FX_LPCWSTR text); void AddString(FX_LPCWSTR string); FX_INT32 GetSelect() const; void SetSelect(FX_INT32 nItemIndex); void SetEditSel(FX_INT32 nStartChar,FX_INT32 nEndChar); void GetEditSel(FX_INT32 & nStartChar, FX_INT32 & nEndChar ) const; void Clear(); void SelectAll(); FX_BOOL IsPopup() const; void SetSelectText(); private: void CreateEdit(const PWL_CREATEPARAM & cp); void CreateButton(const PWL_CREATEPARAM & cp); void CreateListBox(const PWL_CREATEPARAM & cp); void SetPopup(FX_BOOL bPopup); private: CPWL_CBEdit* m_pEdit; CPWL_CBButton* m_pButton; CPWL_CBListBox* m_pList; FX_BOOL m_bPopup; CPDF_Rect m_rcOldWindow; FX_INT32 m_nPopupWhere; FX_INT32 m_nSelectItem; IPWL_Filler_Notify* m_pFillerNotify; public: void AttachFFLData(void* pData) {m_pFormFiller = pData;} private: void* m_pFormFiller; }; #endif // !defined(AFX_PWL_COMBOBOX_H__9D6645F8_64AA_4806_94E8_95FDEDD39C17__INCLUDED_)