CalenderGadget und MCHITTESTINFO

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

So vielleicht?

Code: Alles auswählen

 #MCM_HITTEST = #MCM_FIRST + 14
 #MCHT_CALENDAR = $20000
 #MCHT_CALENDARDATE = #MCHT_CALENDAR | $0001
 
Structure MCHITTESTINFO
	cbSize.l
	pt.POINT
	uHIt.l
	st.SYSTEMTIME
EndStructure

Global lpPrevFunc

Procedure ChildSubProc(hWnd,uMsg,wParam,lParam)
	Select uMsg
		Case #WM_LBUTTONDBLCLK
		mcht.MCHITTESTINFO\cbSize = SizeOf(MCHITTESTINFO)
      mcht\pt\x = DesktopMouseX()
      mcht\pt\y = DesktopMouseY()
      
      ScreenToClient_(GadgetID(0), @mcht\pt)
      SendMessage_(GadgetID(0),#MCM_HITTEST,0,mcht)
     
      If mcht\uHit = #MCHT_CALENDARDATE
        Debug "Du hast auf den " + FormatDate("%dd.%mm.%yyyy",GetGadgetState(0)) + " geklickt."
      EndIf
	EndSelect
	  
	ProcedureReturn CallWindowProc_(lpPrevFunc,hWnd,uMsg,wParam,lParam)
EndProcedure

OpenWindow(0,0,0,300,300,"CalendarGadget Hit Test",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreateGadgetList(WindowID(0))
CalendarGadget(0,50,20,200,180)

lpPrevFunc = SetWindowLong_(GadgetID(0),#GWL_WNDPROC,@ChildSubProc())

SetClassLong_(GadgetID(0),#GCL_STYLE,GetClassLong_(GadgetID(0),#GCL_STYLE) | #CS_DBLCLKS)

While WaitWindowEvent() ! #PB_Event_CloseWindow : Wend
Oder soll auch die grafische Aktualisierung bei einem einfachen Klick unterbunden werden?
Windows 10 Pro, 64-Bit / Outtakes | Derek
Häns
Beiträge: 47
Registriert: 27.10.2007 14:30
Wohnort: Kölle

Beitrag von Häns »

@Fluit Byte

Yepp, das ist es! :allright: :allright: :allright:
Die grafische Aktualisierung spielt im meinem Projekt keine Rolle, daher reicht mir Dein Code vollkommen!

Nochmals Danke!

Häns
PB 5.6
Windows 7 Professional
Antworten