123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- #
- # 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.
- #
-
- import win32api
- import win32con
- import win32ui
- from pywin.mfc import dialog, window
-
-
- 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)
|