1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- #
- # Window creation example
- #
- # This example creates a minimal "control" that just fills in its
- # window with red. To make your own control, subclass Control and
- # write your own OnPaint() method. See PyCWnd.HookMessage for what
- # the parameters to OnPaint are.
- #
- from pywin.mfc import dialog, window
- import win32ui
- import win32con
- import win32api
- class Control(window.Wnd):
- """Generic control class"""
- def __init__ (self):
- window.Wnd.__init__(self, win32ui.CreateWnd ())
- def OnPaint (self):
- dc, paintStruct = self.BeginPaint()
- self.DoPaint(dc)
- self.EndPaint(paintStruct)
-
- def DoPaint (self, dc): # Override this!
- pass
- class RedBox (Control):
- def DoPaint (self, dc):
- dc.FillSolidRect (self.GetClientRect(), win32api.RGB(255,0,0))
-
- class RedBoxWithPie (RedBox):
- def DoPaint (self, dc):
- RedBox.DoPaint(self, dc)
- r = self.GetClientRect()
- dc.Pie(r[0], r[1], r[2], r[3], 0,0,r[2], r[3]//2)
- def MakeDlgTemplate():
- style = (win32con.DS_MODALFRAME |
- win32con.WS_POPUP |
- win32con.WS_VISIBLE |
- win32con.WS_CAPTION |
- win32con.WS_SYSMENU |
- win32con.DS_SETFONT)
- cs = (win32con.WS_CHILD |
- win32con.WS_VISIBLE)
- w = 64
- h = 64
- dlg = [["Red box",
- (0, 0, w, h),
- style,
- None,
- (8, "MS Sans Serif")],
- ]
- s = win32con.WS_TABSTOP | cs
- dlg.append([128,
- "Cancel",
- win32con.IDCANCEL,
- (7, h - 18, 50, 14), s | win32con.BS_PUSHBUTTON])
- return dlg
- class TestDialog(dialog.Dialog):
- def OnInitDialog(self):
- rc = dialog.Dialog.OnInitDialog(self)
- self.redbox = RedBox ()
- self.redbox.CreateWindow (None, "RedBox",
- win32con.WS_CHILD |
- win32con.WS_VISIBLE,
- (5, 5, 90, 68),
- self, 1003)
- return rc
- class TestPieDialog(dialog.Dialog):
- def OnInitDialog(self):
- rc = dialog.Dialog.OnInitDialog(self)
- self.control = RedBoxWithPie()
- self.control.CreateWindow (None, "RedBox with Pie",
- win32con.WS_CHILD |
- win32con.WS_VISIBLE,
- (5, 5, 90, 68),
- self, 1003)
-
- def demo(modal=0):
- d = TestPieDialog (MakeDlgTemplate())
- if modal:
- d.DoModal()
- else:
- d.CreateWindow()
- if __name__=='__main__':
- demo(1)
|