Tja, ich kann die Maustaste auch eine Minute festhalten ohne Änderungen. Liegt vielleicht an Deinem
Touchpad, vielleicht testest Du mal mit einer Maus.
Nochmals das leidige #EM_SETSEL - Problem
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Nochmals das leidige #EM_SETSEL - Problem
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Nochmals das leidige #EM_SETSEL - Problem
@Falko
Mag sein, nur jetzt nochmals die Frage:
Wie erreicht man das sich das "Reinklicken" in ein Stringgadget mit der Maus (in meinem Fall ist es das Berühren des Stringgadget mit dem Fingernagel auf einem Touchscreen) EXAKT GENAUSO VERHÄLT als hätte man im Beispiel die TAB-Taste gedrückt?
Gruß
Daffy
Mag sein, nur jetzt nochmals die Frage:
Wie erreicht man das sich das "Reinklicken" in ein Stringgadget mit der Maus (in meinem Fall ist es das Berühren des Stringgadget mit dem Fingernagel auf einem Touchscreen) EXAKT GENAUSO VERHÄLT als hätte man im Beispiel die TAB-Taste gedrückt?
Gruß
Daffy
Wir sind LINUX
Widerstand ist zwecklos - Sie werden emuliert
Widerstand ist zwecklos - Sie werden emuliert
-
- Beiträge: 213
- Registriert: 13.07.2008 10:05
- Computerausstattung: Windows 8.1 Pro
AMD Phenom II X4 955 @ 3.2 GHz
4GB RAM
NVIDIA GeForce GTX 660
Re: Nochmals das leidige #EM_SETSEL - Problem
Dann musst du die #WM_MOUSEMOVE, #WM_LBUTTONDBLCLK und #WM_LBUTTONDOWN Events verwerfen die für dieses Gadget auftreten nachdem das Gadget bereits den Fokus hat.
Windows 8.1 Pro 64Bit | AMD Phenom II X4 955 @ 3.2 GHz | 4GB RAM | NVIDIA GeForce GTX 660
Re: Nochmals das leidige #EM_SETSEL - Problem
@Christian+
Die einzigen (dokumentierten) Eventtypen beim Stringgadget sind Change, Focus und LostFocus.
Darüber hinaus sehe ich noch "256" und "512" was auch immer die bedeuten sollen?
Gruß
Daffy
Das ist leicht gesagt!Christian+ hat geschrieben:Dann musst du die #WM_MOUSEMOVE, #WM_LBUTTONDBLCLK und #WM_LBUTTONDOWN Events verwerfen die für dieses Gadget auftreten nachdem das Gadget bereits den Fokus hat.
Die einzigen (dokumentierten) Eventtypen beim Stringgadget sind Change, Focus und LostFocus.
Darüber hinaus sehe ich noch "256" und "512" was auch immer die bedeuten sollen?
Gruß
Daffy
Wir sind LINUX
Widerstand ist zwecklos - Sie werden emuliert
Widerstand ist zwecklos - Sie werden emuliert
-
- Beiträge: 213
- Registriert: 13.07.2008 10:05
- Computerausstattung: Windows 8.1 Pro
AMD Phenom II X4 955 @ 3.2 GHz
4GB RAM
NVIDIA GeForce GTX 660
Re: Nochmals das leidige #EM_SETSEL - Problem
Also so was habe ich auch noch nicht gemacht gibt deswegen sicher welche die sich da viel besser auskennen. Ich habe mal kurz gesucht was man dazu umbauen könnte und denke so sollte es gehen:
Code: Alles auswählen
Global lpPrevFunc
Procedure StringGadgetCallBack(hWnd, uMsg, wParam, lParam)
If uMsg = #WM_MOUSEMOVE Or uMsg = #WM_LBUTTONDBLCLK Or uMsg = #WM_LBUTTONDOWN
Protected Gadget = GetActiveGadget()
If Gadget <> -1 And GadgetID(Gadget) = hWnd
ProcedureReturn
EndIf
EndIf
ProcedureReturn CallWindowProc_(lpPrevFunc, hWnd, uMsg, wParam, lParam)
EndProcedure
OpenWindow(0, 0, 0, 300, 200, "StringGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
StringGadget(0, 10, 10, 250, 20, "String Gadget 0")
StringGadget(1, 10, 40, 250, 20, "String Gadget 1")
lpPrevFunc = SetWindowLongPtr_(GadgetID(0), #GWL_WNDPROC, @StringGadgetCallBack())
Define Event.i
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
Select EventGadget()
Case 0
If EventType() = #PB_EventType_Focus
SendMessage_(GadgetID(0), #EM_SETSEL, 0, -1)
EndIf
Case 1
If EventType() = #PB_EventType_Focus
SendMessage_(GadgetID(1), #EM_SETSEL, 0, -1)
EndIf
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow
Windows 8.1 Pro 64Bit | AMD Phenom II X4 955 @ 3.2 GHz | 4GB RAM | NVIDIA GeForce GTX 660
Re: Nochmals das leidige #EM_SETSEL - Problem
@Christian+
Bei Gadget(0) funtioniert es!
Sehe ich das richtig das nun für jedes Stringgadget die Zeile
"lpPrevFunc = SetWindowLongPtr_(GadgetID(X), #GWL_WNDPROC, @StringGadgetCallBack())"
eingetragen werden muss?
Und falls ja, können diese Zeilen innerhalb der Prozedur stehen in der die Stringgadgets erzeugt werden?
Kann die Zeile auch in einer For-Next-Schleife stehen?
Gruß
Daffy
PS. Habe die Fragen getestet. Ist möglich!
Bei Gadget(0) funtioniert es!
Sehe ich das richtig das nun für jedes Stringgadget die Zeile
"lpPrevFunc = SetWindowLongPtr_(GadgetID(X), #GWL_WNDPROC, @StringGadgetCallBack())"
eingetragen werden muss?
Und falls ja, können diese Zeilen innerhalb der Prozedur stehen in der die Stringgadgets erzeugt werden?
Kann die Zeile auch in einer For-Next-Schleife stehen?
Gruß
Daffy
PS. Habe die Fragen getestet. Ist möglich!
Wir sind LINUX
Widerstand ist zwecklos - Sie werden emuliert
Widerstand ist zwecklos - Sie werden emuliert