Beispiel #1
0
	def onMESSAGE(self, hwnd, msg, wp, lp):
		if msg==fw.WND_WM_NOTIFY:
			if wp==fw.WND_NM_MSGREFLECT:
				msgr= fw.WND_MSGREFLECT.from_address(lp)
				msgr.fReturn= self._base_fMsgReflect
				if msgr.msg==self.Msg.WM_NOTIFY:
					nm = NMHDR.from_address(msgr.lParam)
					if nm.code == self.Msg.TCN_SELCHANGING:
						if self.onMSG(hwnd, "selchanging", self.GetSelected(), 0)==False:
							return 1
					elif nm.code == self.Msg.TCN_SELCHANGE:
						self.onMSG(hwnd, "selchanged", self.GetSelected(), 0)
					elif nm.code==self.Msg.NM_RELEASEDCAPTURE:
						self.onMSG(hwnd, "releasedcapture", 0, 0)
					elif nm.code==self.Msg.NM_CLICK:
						self.onMSG(hwnd, "click", 0, 0)
					elif nm.code==self.Msg.NM_RCLICK:
						self.onMSG(hwnd, "rclick", 0, 0)
					elif nm.code==self.Msg.TCN_KEYDOWN:
						nmk= NMTCKEYDOWN.from_address(lp)
						self.onMSG(hwnd, "keydown", 0, (nmk.wVKey, nmk.flags))
					elif nm.code==self.Msg.TCN_FOCUSCHANGE:
						self.onMSG(hwnd, "focuschange", 0, 0)
			return 0
		
		elif msg==self.Msg.WM_DESTROY:
			self.onMSG(hwnd, "destroy", 0, 0)
Beispiel #2
0
 def GetNm(self, lp):
     nm = NMHDR.from_address(lp)
     try:
         n = self.msgValues.index(nm.code)
         return self.msgNames[n], nm.code
     except:
         return 'UNKNOWN MSG', nm.code
Beispiel #3
0
    def onMESSAGE(self, hwnd, msg, wp, lp):

        if msg == fw.WND_WM_NOTIFY:
            if wp == fw.WND_NM_MSGREFLECT:
                msgr = fw.WND_MSGREFLECT.from_address(lp)
                msgr.fReturn = self._base_fMsgReflect

                if msgr.msg == self.Msg.WM_NOTIFY:
                    nm = NMHDR.from_address(msgr.lParam)
                    if nm.code == self.Msg.PGN_CALCSIZE:
                        nmc = NMPGCALCSIZE.from_address(msgr.lParam)
                        if nmc.dwFlag == PGF_CALCHEIGHT:
                            result = self.onMSG(hwnd, "calcsize", "height", 0)
                            if isinstance(result, (int, long)):
                                nmc.iHeight = result
                        elif nmc.dwFlag == PGF_CALCWIDTH:
                            result = self.onMSG(hwnd, "calcsize", "width", 0)
                            if isinstance(result, (int, long)):
                                nmc.iWidth = result
                    elif nm.code == self.Msg.NM_RELEASEDCAPTURE:
                        self.onMSG(hwnd, "releasedcapture", 0, 0)
            return 0

            # Not working
            #elif nm.code ==self.Msg.PGN_SCROLL:
            #	nmps=NMPGSCROLL.from_address(lp)

        elif msg == self.Msg.WM_DESTROY:
            self.onMSG(hwnd, "destroy", 0, 0)
Beispiel #4
0
	def onMESSAGE(self, hwnd, msg, wp, lp):
		
		if msg==fw.WND_WM_NOTIFY:
			if wp==fw.WND_NM_MSGREFLECT:
				msgr= fw.WND_MSGREFLECT.from_address(lp)
				msgr.fReturn= self._base_fMsgReflect
				if msgr.msg==self.Msg.WM_NOTIFY:
					nm = NMHDR.from_address(msgr.lParam)
											
					if nm.code==self.Msg.NM_CUSTOMDRAW:
						cd= NMCUSTOMDRAW.from_address(msgr.lParam)
						result= self.onMSG(hwnd, "customdraw", 0, cd)
						if result !=None: return result
						return 0		# CDRF_DODEFAULT 
					
				
					elif nm.code==self.Msg.HDN_ITEMCLICK or nm.code==self.Msg.HDN_ITEMCLICKW:
						nmh = NMHEADER.from_address(msgr.lParam)
						if nmh.iButton==0:
							self.onMSG(hwnd, "itemclick", nmh.iItem, 0)
					
					elif nm.code==self.Msg.HDN_ITEMDBLCLICK or nm.code==self.Msg.HDN_ITEMDBLCLICKW:
						nmh = NMHEADER.from_address(msgr.lParam)
						if nmh.iButton==0:
							self.onMSG(hwnd, "itemdouble", nmh.iItem, 0)
						# ...not triggered, on my machine (win98) iButton is allways
						# zero
						#if nmh.iButton==0:
						#	self.onMSG(hwnd, "lmbdouble", nmh.iItem, 0)
						#elif nmh.iButton==1:
						#	self.onMSG(hwnd, "rmbdouble", nmh.iItem, 0)
						#elif nmh.iButton==2:
						#	self.onMSG(hwnd, "mmbdouble", nmh.iItem, 0)
				
					elif nm.code==self.Msg.HDN_BEGINTRACK or nm.code==self.Msg.HDN_BEGINTRACKW:
						# no further info in NMHEADER
						self.onMSG(hwnd, "begintrack", 0, 0)
					elif nm.code==self.Msg.HDN_ENDTRACK:
						# no further info in NMHEADER
						self.onMSG(hwnd, "endtrack", 0, 0)
			return 0	
		
		# keyboard non HDS_BUTTON style
		elif msg==self.Msg.WM_RBUTTONUP:
			if not self.GetStyleL('style') & self.Style.HDS_BUTTONS:
				self.onMSG(hwnd, "rmbup", wp, 
											(HIWORD(lp), LOWORD(lp)))
		elif msg==self.Msg.WM_LBUTTONUP:
			if not self.GetStyleL('style') & self.Style.HDS_BUTTONS:
				self.onMSG(hwnd, "lmbup", wp, 
											(HIWORD(lp), LOWORD(lp)))
		elif msg==self.Msg.WM_LBUTTONDBLCLK:
			if not self.GetStyleL('style') & self.Style.HDS_BUTTONS:
				self.onMSG(hwnd, "lmbdouble", wp, 
											(HIWORD(lp), LOWORD(lp)))
		elif msg==self.Msg.WM_MOUSEACTIVATE:
			self.onMSG(hwnd, "mouseactivate", 0, 0)
			
		elif msg==self.Msg.WM_DESTROY:
			self.onMSG(hwnd, "destroy", 0, 0)
Beispiel #5
0
def IsReflectMessage(hwnd, msg, wp, lp):
	
	if msg==273:	# WM_COMMAND 
		if lp: return ReflectMessage(hwnd, lp, msg, wp, lp)
			
	elif msg==276:	# WM_HSCROLL
		if lp: return ReflectMessage(hwnd, lp, msg, wp, lp)
					
	elif msg==277:	# WM_VSCROLL
		if lp: return ReflectMessage(hwnd, lp, msg, wp, lp)
	
	elif msg==78:	# WM_NOTIFY
		nm = NMHDR.from_address(lp)
		return ReflectMessage(hwnd, nm.hwndFrom, msg, wp, lp)
							
	elif msg==43:	# WM_DRAWITEM
		# NOTE
		# can not reflect to comboboxes (ODT_COMBOBOX)
		# they do block all messages here
		# ?? do it anyway
		if wp:
			return ReflectMessage(hwnd, user32.GetDlgItem(hwnd, wp), msg, wp, lp)
		## let menu messages slip
		
	elif msg==44:	# WM_MEASUREITEN
		# NOTE
		# can not reflect to comboboxes (ODT_COMBOBOX)
		# they do block all messages here
		# ?? do it anyway
		if wp:
			return ReflectMessage(hwnd, user32.GetDlgItem(hwnd, wp),msg, wp, lp)
		## let menu messages slip
	
	return None
Beispiel #6
0
    def onMESSAGE(self, hwnd, msg, wp, lp):

        if msg == fw.WND_WM_NOTIFY:
            if wp == fw.WND_NM_MSGREFLECT:
                msgr = fw.WND_MSGREFLECT.from_address(lp)
                msgr.fReturn = self._base_fMsgReflect
                nm = NMHDR.from_address(msgr.lParam)
                if nm.code == self.Msg.TTN_POP:
                    self.onMSG(self.Hwnd, "pop", msgr.hwndFrom, nm.idFrom)
                elif nm.code == self.Msg.TTN_SHOW:
                    self.onMSG(self.Hwnd, "show", msgr.hwndFrom, nm.idFrom)

                elif nm.code == self.Msg.TTN_GETDISPINFO or nm.code == self.Msg.TTN_GETDISPINFOW:
                    nmd = NMTTDISPINFO.from_address(msgr.lParam)
                    result = self.onMSG(self.Hwnd, "getdispinfo",
                                        msgr.hwndFrom, nm.idFrom)
                    if type(result) == type(''):
                        nmd.lpszText = self._client_TruncText(result)
                elif nm.code == self.Msg.NM_CUSTOMDRAW:
                    cd = NMTTCUSTOMDRAW.from_address(msgr.lParam)
                    result = self.onMSG(self.Hwnd, "customdraw",
                                        (msgr.hwndFrom, cd.hdr.idFrom), cd)
                    if result == None: return 0  # CDRF_DODEFAULT
                    return result
            return 0

        elif msg == self.Msg.WM_DESTROY:
            self.onMSG(hwnd, "destroy", 0, 0)
Beispiel #7
0
    def onMESSAGE(self, hwnd, msg, wp, lp):

        if msg == self.Msg.WM_SETFOCUS:
            self.onMSG(hwnd, "setfocus", wp, lp)
        elif msg == self.Msg.WM_KILLFOCUS:
            self.onMSG(hwnd, "killfocus", wp, lp)

        if wp == fw.WND_NM_MSGREFLECT:
            msgr = fw.WND_MSGREFLECT.from_address(lp)
            msgr.fReturn = self._base_fMsgReflect

            if msgr.msg == self.Msg.WM_NOTIFY:
                nm = NMHDR.from_address(msgr.lParam)

                if nm.code == self.Msg.MCN_SELCHANGE:
                    nmsc = NMSELCHANGE.from_address(msgr.lParam)
                    st1 = nmsc.stSelStart
                    st2 = nmsc.stSelEnd
                    self.onMSG(hwnd, "selchanbge", (st1, st2), 0)
                    return 0
                if nm.code == self.Msg.MCN_SELECT:
                    nmsc = NMSELCHANGE.from_address(msgr.lParam)
                    st1 = nmsc.stSelStart
                    st2 = nmsc.stSelEnd
                    self.onMSG(hwnd, "select", (st1, st2), 0)
                    return 0

                if nm.code == self.Msg.NM_RELEASEDCAPTURE:
                    self.onMSG(hwnd, "releasedcapture", 0, 0)

                return 0
Beispiel #8
0
	def onMESSAGE(self, hwnd, msg, wp, lp):
				
		if msg==fw.WND_WM_NOTIFY:
			if wp==fw.WND_NM_MSGREFLECT:
				msgr= fw.WND_MSGREFLECT.from_address(lp)
				msgr.fReturn= self._base_fMsgReflect
				nm=NMHDR.from_address(msgr.lParam)
				if nm.code==self.Msg.TTN_POP:
					self.onMSG(self.Hwnd, "pop", msgr.hwndFrom, nm.idFrom)
				elif nm.code==self.Msg.TTN_SHOW:
					self.onMSG(self.Hwnd, "show", msgr.hwndFrom, nm.idFrom)
				
				elif nm.code==self.Msg.TTN_GETDISPINFO or nm.code==self.Msg.TTN_GETDISPINFOW:
					nmd=NMTTDISPINFO.from_address(msgr.lParam)
					result=self.onMSG(self.Hwnd, "getdispinfo", msgr.hwndFrom, nm.idFrom)
					if type(result)==type(''): 
						nmd.lpszText = self._client_TruncText(result)
				elif nm.code == self.Msg.NM_CUSTOMDRAW:
					cd =  NMTTCUSTOMDRAW.from_address(msgr.lParam)
					result= self.onMSG(self.Hwnd, "customdraw", 
											(msgr.hwndFrom, cd.hdr.idFrom),
											cd)
					if result==None: return 0		# CDRF_DODEFAULT
					return result
			return 0		
		
		elif msg==self.Msg.WM_DESTROY:
			self.onMSG(hwnd, "destroy", 0, 0)
Beispiel #9
0
	def onMESSAGE(self, hwnd, msg, wp, lp):
		
		if msg==self.Msg.WM_SETFOCUS:
			self.onMSG(hwnd, "setfocus", wp, lp)
		elif msg==self.Msg.WM_KILLFOCUS:
			self.onMSG(hwnd, "killfocus", wp, lp)
		
		if wp==fw.WND_NM_MSGREFLECT:
			msgr= fw.WND_MSGREFLECT.from_address(lp)
			msgr.fReturn= self._base_fMsgReflect
	
			if msgr.msg==self.Msg.WM_NOTIFY:
				nm=NMHDR.from_address(msgr.lParam)
							
				if nm.code==self.Msg.MCN_SELCHANGE:
					nmsc=NMSELCHANGE.from_address(msgr.lParam)
					st1=nmsc.stSelStart
					st2=nmsc.stSelEnd
					self.onMSG(hwnd, "selchanbge", (st1, st2), 0)
					return 0
				if nm.code==self.Msg.MCN_SELECT:
					nmsc=NMSELCHANGE.from_address(msgr.lParam)
					st1=nmsc.stSelStart
					st2=nmsc.stSelEnd
					self.onMSG(hwnd, "select", (st1, st2), 0)
					return 0
				
				if nm.code==self.Msg.NM_RELEASEDCAPTURE:
					self.onMSG(hwnd, "releasedcapture", 0, 0)
					
				
				return 0	
Beispiel #10
0
	def onMESSAGE(self, hwnd, msg, wp, lp):
		
		if msg==fw.WND_WM_NOTIFY:
			if wp==fw.WND_NM_MSGREFLECT:
				msgr= fw.WND_MSGREFLECT.from_address(lp)
				msgr.fReturn= self._base_fMsgReflect
				
				if msgr.msg==self.Msg.WM_NOTIFY:
					nm = NMHDR.from_address(msgr.lParam)
					if nm.code ==self.Msg.PGN_CALCSIZE:
						nmc=NMPGCALCSIZE.from_address(msgr.lParam)
						if nmc.dwFlag==PGF_CALCHEIGHT:
							result=self.onMSG(hwnd, "calcsize", "height", 0)
							if isinstance(result, (int, long)):
								nmc.iHeight=result
						elif nmc.dwFlag==PGF_CALCWIDTH:
							result=self.onMSG(hwnd, "calcsize", "width", 0)
							if isinstance(result, (int, long)):
								nmc.iWidth=result
					elif nm.code ==self.Msg.NM_RELEASEDCAPTURE:
						self.onMSG(hwnd, "releasedcapture", 0, 0)
			return 0
			
			
			# Not working
			#elif nm.code ==self.Msg.PGN_SCROLL:
			#	nmps=NMPGSCROLL.from_address(lp)
		
		elif msg==self.Msg.WM_DESTROY:
			self.onMSG(hwnd, "destroy", 0, 0)
Beispiel #11
0
	def GetNm(self, lp):
		nm = NMHDR.from_address(lp)
		try:
			n = self.msgValues.index(nm.code)
			return self.msgNames[n], nm.code
		except:	
			return 'UNKNOWN MSG', nm.code
Beispiel #12
0
def IsDialogReflectMessage(hwnd, msg, wp, lp, dlgmode):
	#print dlgmode
	## TODO: test
	
	## filter WM_COMMAND for dialog boxes
	if msg==273:	# WM_COMMAND 
		
		#print wp, lp
		if lp: 
			if dlgmode=='modeless':
				return ReflectMessage(hwnd, lp, msg, wp, lp)
			
			if lp !=1:			# IDOK
				if lp != 2:		# IDCANCEL
					#DM_GETDEFID      = WM_USER + 0
					result= user32.SendMessageA(hwnd, 1024, 0, 0)
					
					if HIWORD(result) == 21323:	 # DC_HASDEFID
						defID= user32.GetDlgItem(hwnd, LOWORD(result))
						
						if defID != lp:
							return ReflectMessage(hwnd, lp, msg, wp, lp)
					else:
						return ReflectMessage(hwnd, lp, msg, wp, lp)	
		
	elif msg==276:	# WM_HSCROLL
		if lp: return ReflectMessage(hwnd, lp, msg, wp, lp)
					
	elif msg==277:	# WM_VSCROLL
		if lp: return ReflectMessage(hwnd, lp, msg, wp, lp)
	
	elif msg==78:	# WM_NOTIFY
		nm = NMHDR.from_address(lp)
		return ReflectMessage(hwnd, nm.hwndFrom, msg, wp, lp)
							
	elif msg==43:	# WM_DRAWITEM
		# NOTE
		# can not reflect to comboboxes (ODT_COMBOBOX)
		# they do block all messages here
		# ?? do it anyway
		return  ReflectMessage(hwnd, user32.GetDlgItem(hwnd, wp), msg, wp, lp)
		
	elif msg==44:	# WM_MEASUREITEN
		# NOTE
		# can not reflect to comboboxes (ODT_COMBOBOX)
		# they do block all messages here
		# ?? do it anyway
		return ReflectMessage(hwnd, user32.GetDlgItem(hwnd, wp),msg, wp, lp)
		
	return None
Beispiel #13
0
def IsDialogReflectMessage(hwnd, msg, wp, lp, dlgmode):
    #print dlgmode
    ## TODO: test

    ## filter WM_COMMAND for dialog boxes
    if msg == 273:  # WM_COMMAND

        #print wp, lp
        if lp:
            if dlgmode == 'modeless':
                return ReflectMessage(hwnd, lp, msg, wp, lp)

            if lp != 1:  # IDOK
                if lp != 2:  # IDCANCEL
                    #DM_GETDEFID      = WM_USER + 0
                    result = user32.SendMessageA(hwnd, 1024, 0, 0)

                    if HIWORD(result) == 21323:  # DC_HASDEFID
                        defID = user32.GetDlgItem(hwnd, LOWORD(result))

                        if defID != lp:
                            return ReflectMessage(hwnd, lp, msg, wp, lp)
                    else:
                        return ReflectMessage(hwnd, lp, msg, wp, lp)

    elif msg == 276:  # WM_HSCROLL
        if lp: return ReflectMessage(hwnd, lp, msg, wp, lp)

    elif msg == 277:  # WM_VSCROLL
        if lp: return ReflectMessage(hwnd, lp, msg, wp, lp)

    elif msg == 78:  # WM_NOTIFY
        nm = NMHDR.from_address(lp)
        return ReflectMessage(hwnd, nm.hwndFrom, msg, wp, lp)

    elif msg == 43:  # WM_DRAWITEM
        # NOTE
        # can not reflect to comboboxes (ODT_COMBOBOX)
        # they do block all messages here
        # ?? do it anyway
        return ReflectMessage(hwnd, user32.GetDlgItem(hwnd, wp), msg, wp, lp)

    elif msg == 44:  # WM_MEASUREITEN
        # NOTE
        # can not reflect to comboboxes (ODT_COMBOBOX)
        # they do block all messages here
        # ?? do it anyway
        return ReflectMessage(hwnd, user32.GetDlgItem(hwnd, wp), msg, wp, lp)

    return None
Beispiel #14
0
    def onMESSAGE(self, hwnd, msg, wp, lp):
        if msg == self.Msg.WM_SETFOCUS:
            self.onMSG(hwnd, "setfocus", wp, lp)
        elif msg == self.Msg.WM_KILLFOCUS:
            self.onMSG(hwnd, "killfocus", wp, lp)

        if msg == fw.WND_WM_NOTIFY:
            if wp == fw.WND_NM_MSGREFLECT:
                msgr = fw.WND_MSGREFLECT.from_address(lp)
                msgr.fReturn = self._base_fMsgReflect

                if msgr.msg == self.Msg.WM_NOTIFY:
                    nm = NMHDR.from_address(msgr.lParam)

                    if nm.code == self.Msg.DTN_CLOSEUP:
                        self.onMSG(hwnd, "closemonthcal", 0, 0)
                        return 0

                    elif nm.code == self.Msg.DTN_DROPDOWN:
                        self.onMSG(hwnd, "openmonthcal", 0, 0)
                        return 0

                    elif nm.code == self.Msg.DTN_DATETIMECHANGE:
                        nmd = NMDATETIMECHANGE.from_address(msgr.lParam)
                        if nmd.dwFlags == GDT_VALID:
                            flag = 'valid'
                        elif nmd.dwFlags == GDT_NONE:
                            flag = 'none'
                        elif nmd.dwFlags == DWORD(-1).value:
                            flag = 'error'
                        else:
                            flag = 'unknown'
                        self.onMSG(hwnd, "datechange", nmd.st, flag)

                    elif nm.code == self.Msg.DTN_USERSTRING:
                        dt = NMDATETIMESTRING.from_address(msgr.lParam)
                        result = self.onMSG(hwnd, "userstring", dt.st,
                                            dt.pszUserString)
                        if result == True:
                            dt.dwFlags = GDT_VALID
                        elif result == False:
                            dt.dwFlags = GDT_NONE

                    return 0
Beispiel #15
0
	def onMESSAGE(self, hwnd, msg, wp, lp):
		if msg==fw.WND_WM_NOTIFY:
			if wp==fw.WND_NM_MSGREFLECT:
				msgr= fw.WND_MSGREFLECT.from_address(lp)
				msgr.fReturn= self._base_fMsgReflect
				if msgr.msg==self.Msg.WM_NOTIFY:
					nm=NMHDR.from_address(msgr.lParam)
					if nm.code==self.Msg.UDN_DELTAPOS:
						nmud=NMUPDOWN.from_address(msgr.lParam)
						if self.onMSG(hwnd, "setpos", nmud.iPos,		\
							nmud.iDelta)==False: return 1
						return 0
					
					if nm.code==self.Msg.NM_RELEASEDCAPTURE:
						self.onMSG(hwnd, "releasedcapture", 0, 0)
			return 0
		
		elif msg==self.Msg.WM_DESTROY:
			self.onMSG(hwnd, "destroy", 0, 0)
Beispiel #16
0
	def onMESSAGE(self, hwnd, msg, wp, lp):
		if msg==self.Msg.WM_SETFOCUS:
			self.onMSG(hwnd, "setfocus", wp, lp)
		elif msg==self.Msg.WM_KILLFOCUS:
			self.onMSG(hwnd, "killfocus", wp, lp)
		
		if msg==fw.WND_WM_NOTIFY:
			if wp==fw.WND_NM_MSGREFLECT:
				msgr= fw.WND_MSGREFLECT.from_address(lp)
				msgr.fReturn= self._base_fMsgReflect
				
				if msgr.msg==self.Msg.WM_NOTIFY:
					nm=NMHDR.from_address(msgr.lParam)
											
					if nm.code==self.Msg.DTN_CLOSEUP:
						self.onMSG(hwnd, "closemonthcal", 0, 0)
						return 0
					
					elif nm.code==self.Msg.DTN_DROPDOWN:
						self.onMSG(hwnd, "openmonthcal", 0, 0)
						return 0
					
					elif nm.code==self.Msg.DTN_DATETIMECHANGE:
						nmd=NMDATETIMECHANGE.from_address(msgr.lParam)
						if nmd.dwFlags==GDT_VALID:
							flag= 'valid'
						elif nmd.dwFlags==GDT_NONE:
							flag= 'none'
						elif nmd.dwFlags==DWORD(-1).value:
							flag= 'error'
						else:
							flag= 'unknown'
						self.onMSG(hwnd, "datechange", nmd.st, flag)
					
					elif nm.code==self.Msg.DTN_USERSTRING:
						dt= NMDATETIMESTRING.from_address(msgr.lParam)
						result= self.onMSG(hwnd, "userstring", dt.st, dt.pszUserString)
						if result==True:
							dt.dwFlags= GDT_VALID
						elif result== False:
							dt.dwFlags= GDT_NONE
					
					return 0
Beispiel #17
0
    def onMESSAGE(self, hwnd, msg, wp, lp):
        if msg == fw.WND_WM_NOTIFY:
            if wp == fw.WND_NM_MSGREFLECT:
                msgr = fw.WND_MSGREFLECT.from_address(lp)
                msgr.fReturn = self._base_fMsgReflect
                if msgr.msg == self.Msg.WM_NOTIFY:
                    nm = NMHDR.from_address(msgr.lParam)
                    if nm.code == self.Msg.UDN_DELTAPOS:
                        nmud = NMUPDOWN.from_address(msgr.lParam)
                        if self.onMSG(hwnd, "setpos", nmud.iPos,		\
                         nmud.iDelta)==False:
                            return 1
                        return 0

                    if nm.code == self.Msg.NM_RELEASEDCAPTURE:
                        self.onMSG(hwnd, "releasedcapture", 0, 0)
            return 0

        elif msg == self.Msg.WM_DESTROY:
            self.onMSG(hwnd, "destroy", 0, 0)
Beispiel #18
0
    def onMESSAGE(self, hwnd, msg, wp, lp):

        if msg == fw.WND_WM_NOTIFY:
            if wp == fw.WND_NM_MSGREFLECT:
                msgr = fw.WND_MSGREFLECT.from_address(lp)
                msgr.fReturn = self._base_fMsgReflect

                if msgr.msg == self.Msg.WM_NOTIFY:
                    nm = NMHDR.from_address(msgr.lParam)
                    if nm.code == self.Msg.NM_CUSTOMDRAW:
                        cd = NMCUSTOMDRAW.from_address(msgr.lParam)
                        result = self.onMSG(hwnd, "customdraw", 0, cd)
                        if result != None: return result
                        return 0

                    if nm.code == self.Msg.NM_RELEASEDCAPTURE:
                        self.onMSG(hwnd, "releasedcapture", 0, 0)
                        return 0
            return 0  ##
        elif msg == self.Msg.WM_DESTROY:
            self.onMSG(hwnd, "destroy", 0, 0)
Beispiel #19
0
	def onMESSAGE(self, hwnd, msg, wp, lp):
		
		if msg==fw.WND_WM_NOTIFY:
			if wp==fw.WND_NM_MSGREFLECT:
				msgr= fw.WND_MSGREFLECT.from_address(lp)
				msgr.fReturn= self._base_fMsgReflect
				if msgr.msg==self.Msg.WM_NOTIFY:
					nm = NMHDR.from_address(msgr.lParam)
					if nm.code ==self.Msg.NM_CLICK:
						self.onMSG(hwnd, "click", 0, 0)
					elif nm.code ==self.Msg.NM_DBLCLK:
						self.onMSG(hwnd, "dblclick", 0, 0)
					elif nm.code ==self.Msg.NM_RCLICK:
						self.onMSG(hwnd, "rclick", 0, 0)
					elif nm.code ==self.Msg.NM_RDBLCLK:
						self.onMSG(hwnd, "rdblclick", 0, 0)
					elif nm.code ==self.Msg.SBN_SIMPLEMODECHANGE:
						self.onMSG(hwnd, "simplemodechange", 0, 0)
			return 0		# 
		
		elif msg==self.Msg.WM_DESTROY:
			self.onMSG(hwnd, "destroy", 0, 0)
Beispiel #20
0
    def onMESSAGE(self, hwnd, msg, wp, lp):

        if msg == fw.WND_WM_NOTIFY:
            if wp == fw.WND_NM_MSGREFLECT:
                msgr = fw.WND_MSGREFLECT.from_address(lp)
                msgr.fReturn = self._base_fMsgReflect
                if msgr.msg == self.Msg.WM_NOTIFY:
                    nm = NMHDR.from_address(msgr.lParam)
                    if nm.code == self.Msg.NM_CLICK:
                        self.onMSG(hwnd, "click", 0, 0)
                    elif nm.code == self.Msg.NM_DBLCLK:
                        self.onMSG(hwnd, "dblclick", 0, 0)
                    elif nm.code == self.Msg.NM_RCLICK:
                        self.onMSG(hwnd, "rclick", 0, 0)
                    elif nm.code == self.Msg.NM_RDBLCLK:
                        self.onMSG(hwnd, "rdblclick", 0, 0)
                    elif nm.code == self.Msg.SBN_SIMPLEMODECHANGE:
                        self.onMSG(hwnd, "simplemodechange", 0, 0)
            return 0  #

        elif msg == self.Msg.WM_DESTROY:
            self.onMSG(hwnd, "destroy", 0, 0)
Beispiel #21
0
	def onMESSAGE(self, hwnd, msg, wp, lp):
		
		if msg==fw.WND_WM_NOTIFY:
			if wp==fw.WND_NM_MSGREFLECT:
				msgr= fw.WND_MSGREFLECT.from_address(lp)
				msgr.fReturn= self._base_fMsgReflect
				
				
				
				if msgr.msg==self.Msg.WM_NOTIFY:
					nm = NMHDR.from_address(msgr.lParam)
					if nm.code ==self.Msg.NM_CUSTOMDRAW:
						cd =  NMCUSTOMDRAW.from_address(msgr.lParam)
						result= self.onMSG(hwnd, "customdraw", 0, cd)
						if result !=None: return result
						return 0

					
					if nm.code ==self.Msg.NM_RELEASEDCAPTURE:
						self.onMSG(hwnd, "releasedcapture", 0, 0)
						return 0
			return 0		## 
		elif msg==self.Msg.WM_DESTROY: self.onMSG(hwnd, "destroy", 0, 0)
Beispiel #22
0
	def onMESSAGE(self, hwnd, msg, wp, lp):
		#if msg==self.Msg.WM_SETFOCUS:
		#	self.onMSG(hwnd, "setfocus", wp, lp)
		#elif msg==self.Msg.WM_KILLFOCUS:
		#	self.onMSG(hwnd, "killfocus", wp, lp)
		if msg==fw.WND_WM_NOTIFY:
			if wp==fw.WND_NM_MSGREFLECT:
				msgr= fw.WND_MSGREFLECT.from_address(lp)
				msgr.fReturn= self._base_fMsgReflect
		
				if msgr.msg==self.Msg.WM_NOTIFY:
					nm=NMHDR.from_address(msgr.lParam)
					if nm.code==self.Msg.IPN_FIELDCHANGED:
						nmip=NMIPADDRESS.from_address(msgr.lParam)
						result=self.onMSG(hwnd, "fieldchanged", nmip.iField, nmip.iValue)
						if isinstance(result, (int, long)):
							if self._IsUByte(result):
								nmip.iValue=result
							else: raise ValueError("value out of range: %s" % result)
			return 0
		
		
		elif msg==self.Msg.WM_DESTROY:
			self.onMSG(hwnd, "destroy", 0, 0)
Beispiel #23
0
def IsReflectMessage(hwnd, msg, wp, lp):

    if msg == 273:  # WM_COMMAND
        if lp: return ReflectMessage(hwnd, lp, msg, wp, lp)

    elif msg == 276:  # WM_HSCROLL
        if lp: return ReflectMessage(hwnd, lp, msg, wp, lp)

    elif msg == 277:  # WM_VSCROLL
        if lp: return ReflectMessage(hwnd, lp, msg, wp, lp)

    elif msg == 78:  # WM_NOTIFY
        nm = NMHDR.from_address(lp)
        return ReflectMessage(hwnd, nm.hwndFrom, msg, wp, lp)

    elif msg == 43:  # WM_DRAWITEM
        # NOTE
        # can not reflect to comboboxes (ODT_COMBOBOX)
        # they do block all messages here
        # ?? do it anyway
        if wp:
            return ReflectMessage(hwnd, user32.GetDlgItem(hwnd, wp), msg, wp,
                                  lp)
        ## let menu messages slip

    elif msg == 44:  # WM_MEASUREITEN
        # NOTE
        # can not reflect to comboboxes (ODT_COMBOBOX)
        # they do block all messages here
        # ?? do it anyway
        if wp:
            return ReflectMessage(hwnd, user32.GetDlgItem(hwnd, wp), msg, wp,
                                  lp)
        ## let menu messages slip

    return None
Beispiel #24
0
    def _client_DlgProc(self, hwnd, msg, wp, lp):

        if msg == 2:  ## WM_DESTROY
            ## reset
            try:
                self.onMSG(hwnd, "destroy", 0, 0)
            finally:
                self.Hwnd = 0
                self._client_fReboot = None

        if msg == fw.WND_WM_NOTIFY:
            if wp == fw.WND_NM_MSGREFLECT:
                msgr = fw.WND_MSGREFLECT.from_address(lp)
                msgr.fReturn = 1

                if msgr.msg == WM_NOTIFY:
                    nm = NMHDR.from_address(msgr.lParam)

                    if nm.code == PSN_APPLY:
                        result = self.onMSG(hwnd, "apply", msgr.hwndFrom, 0)
                        user32.SetWindowLongA(
                            hwnd, DWL_MSGRESULT,
                            result == False and PSNRET_INVALID_NOCHANGEPAGE
                            or PSNRET_NOERROR)
                        if result != False:
                            if self._client_mode == 'modeless':
                                user32.DestroyWindow(self.Hwnd)

                    elif nm.code == PSN_HELP:
                        self.onMSG(hwnd, "help", msgr.hwndFrom, 0)

                    elif nm.code == PSN_KILLACTIVE:
                        result = self.onMSG(hwnd, "killactive", msgr.hwndFrom,
                                            0)
                        user32.SetWindowLongA(hwnd, DWL_MSGRESULT,
                                              result == False and 1 or 0)

                    elif nm.code == PSN_QUERYCANCEL:
                        result = self.onMSG(hwnd, "querycancel", msgr.hwndFrom,
                                            0)
                        user32.SetWindowLongA(hwnd, DWL_MSGRESULT,
                                              result == False and 1 or 0)
                        if result != False:
                            if self._client_mode == 'modeless':
                                user32.DestroyWindow(self.Hwnd)

                    elif nm.code == PSN_RESET:
                        psn = PSHNOTIFY.from_address(lp)
                        result = self.onMSG(hwnd, "reset", msgr.hwndFrom,
                                            psn.lParam and 'cancel' or 'close')

                    elif nm.code == PSN_SETACTIVE:
                        self.onMSG(hwnd, "setactive", msgr.hwndFrom, 0)

                    elif nm.code == PSN_WIZBACK:
                        result = self.onMSG(hwnd, "wizback", msgr.hwndFrom, 0)
                        user32.SetWindowLongA(hwnd, DWL_MSGRESULT,
                                              result == False and -1 or 0)

                    elif nm.code == PSN_WIZNEXT:
                        result = self.onMSG(hwnd, "wiznext", msgr.hwndFrom, 0)
                        user32.SetWindowLongA(hwnd, DWL_MSGRESULT,
                                              result == False and -1 or 0)

                    elif nm.code == PSN_WIZFINISH:
                        result = self.onMSG(hwnd, "wizfinish", msgr.hwndFrom,
                                            0)
                        user32.SetWindowLongA(hwnd, DWL_MSGRESULT,
                                              result == False and 1 or 0)
                        if result != False:
                            if self._client_mode == 'modeless':
                                user32.DestroyWindow(self.Hwnd)

                    return 1
            return 0

        return user32.CallWindowProcA(self._client_pOldDlgProc, hwnd, msg, wp,
                                      lp)
	def _client_DlgProc(self, hwnd, msg, wp, lp):
		
		if msg==2:		## WM_DESTROY
			## reset
			try:
				self.onMSG(hwnd,"destroy", 0, 0)
			finally: 
				self.Hwnd= 0
				self._client_fReboot= None
			
				
		if msg==fw.WND_WM_NOTIFY:
			if wp==fw.WND_NM_MSGREFLECT:
				msgr= fw.WND_MSGREFLECT.from_address(lp)
				msgr.fReturn= 1
	
				if msgr.msg==WM_NOTIFY:
					nm=NMHDR.from_address(msgr.lParam)
					
					if nm.code==PSN_APPLY:
						result= self.onMSG(hwnd,"apply", msgr.hwndFrom, 0)
						user32.SetWindowLongA(hwnd, DWL_MSGRESULT, result==False and PSNRET_INVALID_NOCHANGEPAGE  or PSNRET_NOERROR)
						if result != False:
							if self._client_mode=='modeless':
								user32.DestroyWindow(self.Hwnd)
				
					elif nm.code==PSN_HELP:
						self.onMSG(hwnd,"help", msgr.hwndFrom, 0)
					
					elif nm.code==PSN_KILLACTIVE:
						result= self.onMSG(hwnd,"killactive", msgr.hwndFrom, 0)
						user32.SetWindowLongA(hwnd, DWL_MSGRESULT, result==False and 1 or 0)
					
					elif nm.code==PSN_QUERYCANCEL:
						result= self.onMSG(hwnd,"querycancel", msgr.hwndFrom, 0)
						user32.SetWindowLongA(hwnd, DWL_MSGRESULT, result==False and 1 or 0)
						if result != False:
							if self._client_mode=='modeless':
								user32.DestroyWindow(self.Hwnd)
					
					elif nm.code==PSN_RESET:
						psn= PSHNOTIFY.from_address(lp)
						result= self.onMSG(hwnd,"reset", msgr.hwndFrom, psn.lParam and 'cancel' or 'close')
										
					elif nm.code==PSN_SETACTIVE:
						self.onMSG(hwnd, "setactive", msgr.hwndFrom, 0)

					elif nm.code==PSN_WIZBACK:
						result= self.onMSG(hwnd,"wizback", msgr.hwndFrom, 0)
						user32.SetWindowLongA(hwnd, DWL_MSGRESULT, result==False and -1 or 0)
				
					elif nm.code==PSN_WIZNEXT:
						result= self.onMSG(hwnd,"wiznext", msgr.hwndFrom, 0)
						user32.SetWindowLongA(hwnd, DWL_MSGRESULT, result==False and -1 or 0)

					elif nm.code==PSN_WIZFINISH:
						result= self.onMSG(hwnd,"wizfinish", msgr.hwndFrom, 0)
						user32.SetWindowLongA(hwnd, DWL_MSGRESULT, result==False and 1 or 0)
						if result != False:
							if self._client_mode=='modeless':
								user32.DestroyWindow(self.Hwnd)
						
					return 1
			return 0
								
		return user32.CallWindowProcA(self._client_pOldDlgProc, hwnd, msg, wp, lp)