Hi Oliver, Over the last couple of days, Roger Upole has diagnosed a very similar issue as being related to a bug in pywin32 handling 'named' params passed from COM, which will result in such params being passed in reversed order. I'd bet this is the same issue you are seeing. I hope to have this fixed in the next pywin32 build.
See https://sourceforge.net/tracker/?func=detail&atid=551954&aid=1648655&group_i d=78018 for details. Cheers, Mark > Some of you may have read this post over on the forums or wx mailing > list, I'm hoping I can find someone that has gone through this problem > already. Canceling this event in other languages seems to work just > fine, but in python it doesn't work. > > The IDL for the function is: > > void BeforeClick(long Button, long Shift, long X, long Y, bool* Cancel) > > Based on this I've tried canceling the event by: > > return 0, True > > So that the byref cancel param gets set to true which should cancel the > click event (works in c#). > > I've tried working with the calendar control and have successfully > canceled the BeforeUpdate event using the same line. The only > difference I can see between the two is that the calendar control is > using a short for the cancel param while mappoint is using a bool. I'm > using early binding btw. > > Below is the code I'm using to test (just the calendar code with some > simple replacements for the mappoint control): > > def GetTestMapPointClass(): > global mpParentModule > win32ui.DoWaitCursor(1) > mpParentModule = > gencache.EnsureModule("{51C0A9CA-F7B7-4F5A-96F4-43927C6FA50F}", 0, 1, > 0) > win32ui.DoWaitCursor(0) > if mpParentModule is None: > return None > > class TestMPDialog(dialog.Dialog): > def OnInitDialog(self): > > class MyMP(activex.Control, > mpParentModule.MappointControl): > def OnBeforeClick(self, Button, Shift, X, Y, Cancel): > print "clicked" > return 0, True > > rc = dialog.Dialog.OnInitDialog(self) > self.olectl = MyMP() > try: > self.olectl.CreateControl("OCX", win32con.WS_TABSTOP | > win32con.WS_VISIBLE, (7,43,500,300), self._obj_, 131) > > self.olectl.NewMap(win32com.client.constants.geoMapNorthAmerica) > except win32ui.error: > self.MessageBox("The MP Control could not be created") > self.olectl = None > self.EndDialog(win32con.IDCANCEL) > > return rc > def OnOK(self): > pass > > return TestMPDialog > > > Any help appreciated. > > OLIVER > > > _______________________________________________ > python-win32 mailing list > python-win32@python.org > http://mail.python.org/mailman/listinfo/python-win32 _______________________________________________ python-win32 mailing list python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32