X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a7a014180017908d32f0af32ebfa140fdc82b390..c66068835ecce0a507f3e4aa1e21fa05ffdb5049:/wxPython/wx/lib/activexwrapper.py diff --git a/wxPython/wx/lib/activexwrapper.py b/wxPython/wx/lib/activexwrapper.py index 81a5d455c4..67d09d6fd1 100644 --- a/wxPython/wx/lib/activexwrapper.py +++ b/wxPython/wx/lib/activexwrapper.py @@ -21,7 +21,17 @@ try: import pywin.mfc.activex import win32com.client except ImportError: - raise ImportError( "ActiveXWrapper requires PythonWin. Please install the win32all-xxx.exe package.") + import sys + if hasattr(sys, "frozen"): + import os, win32api + dllpath = os.path.join(win32api.GetSystemDirectory(), 'MFC71.DLL') + if sys.version[:3] >= '2.4' and not os.path.exists(dllpath): + message = "%s not found" % dllpath + else: + raise # original error message + else: + message = "ActiveXWrapper requires PythonWin. Please install the PyWin32 package." + raise ImportError(message) ##from win32con import WS_TABSTOP, WS_VISIBLE WS_TABSTOP = 0x00010000 @@ -89,12 +99,13 @@ def MakeActiveXClass(CoClass, eventClass=None, eventObj=None): # These functions will be used as methods in the new class -def axw__init__(self, parent, ID, pos=wx.DefaultPosition, size=wx.DefaultSize, style=0): - +def axw__init__(self, parent, ID=-1, pos=wx.DefaultPosition, size=wx.DefaultSize, style=0): + # init base classes pywin.mfc.activex.Control.__init__(self) wx.Window.__init__( self, parent, -1, pos, size, style|wx.NO_FULL_REPAINT_ON_RESIZE) - + self.this.own(False) # this should be set in wx.Window.__init__ when it calls _setOORInfo, but... + win32ui.EnableControlContainer() self._eventObj = self._eventObj # move from class to instance @@ -113,7 +124,6 @@ def axw__init__(self, parent, ID, pos=wx.DefaultPosition, size=wx.DefaultSize, s # hook some wx events self.Bind(wx.EVT_SIZE, self.axw_OnSize) - def axw__getattr__(self, attr): try: return pywin.mfc.activex.Control.__getattr__(self, attr)