+#ifdef __WXMSW__
+ virtual long MSWGetDlgCode();
+#endif //MSW
+
+ /// if exact == false, assume 50% extra size for the future
+ void ResizeScrollbars(bool exact = false); // don't change this to true!
+
+ /// if the flag is true, we send events when user clicks on embedded objects
+ inline void SetMouseTracking(bool doIt = true) { m_doSendEvents = doIt; }
+
+ /* Returns a pointer to the wxLayoutList object.
+ @return the list
+ */
+ wxLayoutList * GetLayoutList(void) { return m_llist; }
+
+ /**@name Callbacks */
+ //@{
+ void OnPaint(wxPaintEvent &event);
+ void OnChar(wxKeyEvent& event);
+ void OnMenu(wxCommandEvent& event);
+ void OnLeftMouseClick(wxMouseEvent& event) { OnMouse(WXLOWIN_MENU_LCLICK, event); }
+ void OnRightMouseClick(wxMouseEvent& event) { OnMouse(WXLOWIN_MENU_RCLICK, event); }
+ void OnMouseDblClick(wxMouseEvent& event) { OnMouse(WXLOWIN_MENU_DBLCLICK, event); }
+ void OnMouseMove(wxMouseEvent &event) { OnMouse(WXLOWIN_MENU_MOUSEMOVE, event) ; }
+ void OnSetFocus(wxFocusEvent &ev);
+ void OnKillFocus(wxFocusEvent &ev);
+ //@}
+
+ /// Creates a wxMenu for use as a format popup.
+ static wxMenu * MakeFormatMenu(void);
+ /**@name Dirty flag handling for optimisations. */
+ //@{
+ /// Set dirty flag.
+ void SetDirty(void) { m_Dirty = true; }
+ /// Query whether window needs redrawing.
+ bool IsDirty(void) const { return m_Dirty; }
+ /// Reset dirty flag.
+ void ResetDirty(void) { m_Dirty = false; }
+ //@}
+ /// Redraws the window, used by DoPaint() or OnPaint().
+ void InternalPaint(const wxRect *updateRect);
+
+ /// Has list been modified/edited?
+ bool IsModified(void) const { return m_Modified; }
+ /// Mark list as modified or unchanged.
+ void SetModified(bool modified = true) { m_Modified = modified; }
+
+protected:
+ /// generic function for mouse events processing
+ void OnMouse(int eventId, wxMouseEvent& event);
+
+ /// for sending events
+ wxWindow *m_Parent;
+ /// Shall we send events?
+ bool m_doSendEvents;
+ /// Where does the current view start?
+ int m_ViewStartX; int m_ViewStartY;
+ /// Do we currently have the focus?
+ bool m_HaveFocus;
+ /// do we handle clicks of the right mouse button?
+ bool m_DoPopupMenu;
+ /// Should InternalPaint() scroll to cursor.
+ bool m_ScrollToCursor;
+ /// Do we currently have a non-standard cursor?
+ bool m_HandCursor;
+ /// the menu
+ wxMenu * m_PopupMenu;
+ /// for derived classes, set when mouse is clicked
+ wxPoint m_ClickPosition;
+ /// for scrollbar calculations:
+ int m_maxx;
+ int m_maxy;
+ int m_lineHeight;
+private:
+ /// The layout list to be displayed.
+ wxLayoutList *m_llist;
+ /// Can user edit the window?
+ bool m_Editable;
+ /// Are we currently building a selection with the keyboard?
+ bool m_Selecting;
+ /// wrap margin
+ CoordType m_WrapMargin;
+ /// Is list dirty (for redraws, internal use)?
+ bool m_Dirty;
+ /// Has list been edited?
+ bool m_Modified;
+ wxMemoryDC *m_memDC;
+ wxBitmap *m_bitmap;
+ wxPoint m_bitmapSize;
+ /// a pointer to a bitmap for the background
+ wxBitmap *m_BGbitmap;