# The MFCish window classes.
import object
import win32ui
import win32con

class Wnd(object.CmdTarget):
	def __init__(self, initobj=None):
		object.CmdTarget.__init__(self, initobj)
		if self._obj_: self._obj_.HookMessage(self.OnDestroy, win32con.WM_DESTROY)
	def OnDestroy(self, msg):
		pass

# NOTE NOTE - This facility is currently disabled in Pythonwin!!!!!
# Note - to process all messages for your window, add the following method
# to a derived class.  This code provides default message handling (ie, is
# identical, except presumably in speed, as if the method did not exist at
# all, so presumably will be modified to test for specific messages to be 
# useful!
#	def WindowProc(self, msg, wParam, lParam):
#		rc, lResult = self._obj_.OnWndMsg(msg, wParam, lParam)
#		if not rc: lResult = self._obj_.DefWindowProc(msg, wParam, lParam)
#		return lResult

class FrameWnd(Wnd):
	def __init__(self, wnd):
		Wnd.__init__(self, wnd)

class MDIChildWnd(FrameWnd):
	def __init__(self, wnd = None):
		if wnd is None:
			wnd=win32ui.CreateMDIChild()
		FrameWnd.__init__(self, wnd)
	def OnCreateClient(self, cp, context):
		if context is not None and context.template is not None:
			context.template.CreateView(self, context)

class MDIFrameWnd(FrameWnd):
	def __init__(self, wnd = None):
		if wnd is None:
			wnd=win32ui.CreateMDIFrame()
		FrameWnd.__init__(self, wnd)
