class CView, CScrollView, CEditView Class CView represents a "view", one of the most basic objects. A view is a visible representation of a document which the user can interact with. It is how the user sees and changes the document. It is the inside of a window, not including the frame. Do NOT use CView directly. Use CScrollView instead. In an SDI application, the same view is reused each time the user selects File New or File Open. In an MDI app, a new view is created each time, and there may be more than one view for each document. You must not try to set the size and position of a view because these are controled by the frame. Set the size and position of the frame instead. To change the color of the window, set view.wpyBrush to a background brush. This is probably a bad idea under Windows. Instance Variables wpyParent For a view, the parent is the frame, and the parent of the frame is the document. wpyChildList For a view, the child list is a list of controls in the view. wpyDocument The document which this view shows. Equal to self.wpyParent.wpyParent. wpyHScrollSize, wpyVScrollSize The total size of the view in pixels. wpyHScrollWinSize, wpyVScrollWinSize The size of the view which fits in the view window. wpyHScrollPos, wpyVScrollPos The scroll position, the index of the first line in the view. This varies from zero to the scroll size minus the window size. Methods __init__(self, templ, doc, frame) templ: The template being used to create the document. doc: The document which the view shows. frame: The frame around the view. The framework creates views as required. The user never constructs a view directly. OnUpdate(self, sender, update) Called as a result of the document method UpdateAllViews(self, sender, update) being called. Do not perform drawing here, perform drawing in OnDraw(). The default version invalidates the whole view so that an OnDraw messages is generated at a later time. Override to set up "update" with information about what part of the view needs updating in order to make drawing more efficient. GetAllDrawnObjs(self) Return a list of all drawn objects. GetDrawnObject(self, x, y) Return the object drawn at the point (x, y) as an instance of CDrawnText, CDrawnRectangle, etc. If there is no object at that point, then None is returned. The point (x, y) is in view coordinates. To respond to a mouse button press event, use GetDeviceScrollPosition() to transform the mouse (x, y) which is in window coordinates to view coordinates. An object will be returned if its rectangle contains the point (x, y). If objects overlap, only one of the objects will be returned, and the one chosen is arbitrary (so don't do that). Objects of class CDrawnLine are not returned by this method. It only returns objects with a rectangular nature such as text, rectangles, bitmaps, etc. GetDrawnObjectList(self, x, y) Same as GetDrawnObject(), but return a list of all objects which touch the point including drawn lines. If no objects, return []. Redraw(self, obj) Redraw the drawn object "obj". If obj is None, then redraw all objects. The drawing tools DrawText() etc. return an object. To change the object after it is drawn in OnDraw(), change the object's attributes and call Redraw(). For example, obj.wpyText = "New text" obj.wpyLocY = new_y self.Redraw(obj). This need not be done in OnDraw(). It would normally be done in the view when the user changes data. See the drawn object documentation for CDrawnText etc. to see what other attributes can be changed. DestroyDrawn(self, obj) Destroy the drawn object. DestroyAllDrawn(self) Erase the view. AddDrawn(self, obj) Add a drawn object to the view. Messages OnCreate(self, not_used) Sent to the view soon after it is created. This is always the first message sent to a view. OnDestroy(self) Sent to the view before it is destroyed. OnInitialUpdate(self) Sent after "OnCreate" after the view is connected to a document but before the view is displayed. Used when the document must be available. For example, use it to set view scroll ranges according to document size. OnDraw(self, DC), not sent to CEditView Sent when the view must be redrawn. Generally, you should plan to do all drawing in OnDraw(). The "DC" is the device context. Call the methods of "DC" to perform drawing. OnSize(self, new_size) Sent after "OnCreate" when a window is created, or when the user or system changes the window size. Generally you should do layout in "OnSize". The size of the client area is given by the rectangle "new_size". Different systems will send several different "OnSize" events, sometimes with 1-pixel window sizes as part of the window creation process, so make your code robust. OnChar(self, char ch, int flags) Sent when the user presses a key. The character is ch, and flags gives the status of the control and shift keys. See messages.txt. OnVChar(self, string name, int flags) Sent when the user presses a virtual key. The key name is name, and flags gives the status of the control and shift keys. See messages.txt. OnLButtonUp (self, int x, int y, int flags), not sent to CEditView OnLButtonDown (self, int x, int y, int flags), not sent to CEditView OnLButtonDblClk(self, int x, int y, int flags), not sent to CEditView OnRButtonUp (self, int x, int y, int flags), not sent to CEditView OnRButtonDown (self, int x, int y, int flags), not sent to CEditView OnRButtonDblClk(self, int x, int y, int flags), not sent to CEditView Sent when the user presses, releases or double clicks the left or right mouse button. The mouse location is (x, y), and flags gives the state of the shift and control keys. See messages.txt. OnMouseMove(self, int x, int y, int flags), not sent to CEditView Sent when the user moves the mouse provided that a mouse button or the shift or control keys are pressed. Mouse move commands are not generated if all keys are up. The mouse position is (x, y) and flags gives the key state. See messages.txt. OnHScroll(self, not_used), not sent to CEditView OnVScroll(self, not_used), not sent to CEditView Sent when the horizontal or vertical scroll bar of a view is operated by the user. This is not used by scroll bar controls. class CScrollView(CView) Class CScrollView is a view with automatic scroll bars. The scroll bars only appear if needed, so this is a general purpose class. A CScrollView remembers the objects you draw in OnDraw(), and so it can refresh the screen itself. This results in much fewer calls to OnDraw(). If you create a control (such as an edit control) in a scroll view, the location self.wpyLocX/Y refers to the location in the view, not in the window. So the control will be drawn at the same location as a text object would be drawn. Methods GetDeviceScrollPosition(self) Return a tuple (x, y) representing the point of the view at the upper left corner of the view's window. This is (0, 0) if the view has not been scrolled. Add this point to the mouse position to get the position of the mouse within the view. ScrollToPosition(self, x, y) Scroll the view so the point (x, y) is at the top left corner. SetScrollSizes(self) Notify the system of the document size and scroll size. This may cause scroll bars to appear or disappear. Since this requires the document size, it is usually called in OnInitialUpdate(). You only need to call it again if the document size changes. You must have set wpyHScrollSize and wpyVScrollSize to the correct document size before making this call. If the document size changes, it may be convenient to call it from OnDraw(). class CEditView(CView) See editview.txt.