Deutsch
Forum

handle Problem

 

GDL
Hi,
ich habe nen Adressenproblem mit den Objekthandles,da ich festzugewiesene Werte brauche.In etwa so:

handle1&=create(button,%hwnd,..................................)
handle1&=1000

oder
handle1&=1000
1000=create(button................................)

Ich brauche dies desshalb,da die Objekte von aussen(hardwaremässig) und intern(Maus) gesteuert werden müssen und der Focus der Objekte gleichzeitig die Adressennummer für eine Hardwaresteuerung sind.
Kurz gesagt: Die Handlenummer muss fest zugeordnet werden und bei jeden Programmstart immer gleich sein.

Dies war unter DOS Zeiten relativ einfach, da man sich in der config.sys EMS Speicher beim Starten des PC reservieren konnte und mit Powerbasic(DOS Vers.) darauf zugreifen konnte.Vielleicht geht dies mit Windows und XProfan ja auch?

Servus
Georg
 
Windows7 Xprofan 8,9,10 [...]  [...] 
22.02.2006  
 




Thorsten
Friedrichs
Hallo.
Also leider habe ich noch nicht ganz verstanden was du machen willst. Was willst du denn womit steuern? Soll deine Hardware im Programm was steuern oder soll das Programm was steuern?

Meines wissens nach geht das nicht mit festen Handles. DOS kannte diese Art Handleverwaltung soweit ich weiß gar nicht und wenn doch,dann war das schon sie wie jetzt bei Windows. Die Vergabe der Handles übernimmt Windows dynamisch, da kann man auch nichts drann ändern. Das geht einfach nicht. Aber da du das Handle erhälst, kannst du dieses natürlich an ein anderes Programm übergeben.

Vielleicht haben wir ja ne Idee wie du das was du willst gestallten kannst, aber momentan weiß ich allerdings noch nicht was du machen willst.

Gruß
Toshy
 
------------------------------------------------------------------------------------------
XProfan 9/Win98&undWinXP/PRFellow/ TCP.DLL
Profaner seit 4.5 /einige Jahre (mit Programmierpausen)
22.02.2006  
 



Du wirst die tatsächlichen Handles den Wunschhandels halt nachträglich zuordnen müssen...
 
22.02.2006  
 




GDL
Hallo,

@Toshi
Richtig, unter DOS gab es keine Handles.Da das Programm aber immer im selben Speicherbereich lief hatte man immer dieselben Speicheradressen zum Abfragen.

Gebraucht wird das ganze zur parallelen Tastenabfrage (Weichenpult und Bildschirm), wobei jede Taste einen anderen Datensatz aus einer Datei lädt.Da die Hardwaretasten eine feste Adresse über eine Matrix liefern wäre es halt schön gewesen den Bildschirmcontrols selbigen Wert zu geben und diesen mit getfocus einfachst abzufragen.

@If
Ich habe es fast schon befürchtet dass es nur so geht.Habe auch schon so angefangen nur bei 2400 möglichen Tasten gehoft ne andere Möglichkeit zu finden.

na gut dann weisen wir beim Programmaufruf jedem Bildschirmcontrol nen Arraywert zu.

Servus
Georg
 
Windows7 Xprofan 8,9,10 [...]  [...] 
22.02.2006  
 



Mach doch ein Trick!

Nimm Gettext - und bestücke die Texte der Controls...
 
22.02.2006  
 




Frank
Abbing
Hi,

noch besser ist aber, du speicherst den Wert unter GWL_USERDATA mittels SetWindowLong(). Auslesen geht dann sehr einfach mit GetWindowLong().
 
23.02.2006  
 




GDL
Hallo Frank,

mal abgesehen von den Handles, aber da sprichst du eine ganz grosse Schwachstelle von mir an.
Auf die Gefahr hin ausgelacht zu werden aber ich checke dies mit den Setwindowlong und co überhaupt nicht.Ich habe mal versucht den Code Snippet Animierte Fenster zu verstehen.Fehlanzeige ich kapier die Funktionsabläufe der einzelnen Befehle einfach net.

Servus
Georg
 
Windows7 Xprofan 8,9,10 [...]  [...] 
23.02.2006  
 




Frank
Abbing
Hi,

warum sollte dich jemand auslachen?
Hier mal ein Anwendungsbeispiel:
KompilierenMarkierenSeparieren
Declare button&,sthand&
Def GetWindowLong(2) !"USER32","GetWindowLongA"
Def SetWindowLong(3) !"USER32","SetWindowLongA"
Cls
button&=Create("Button",%hwnd,"Test",32,32,80,24)
SetWindowLong(button&,-21,1000)
sthand&=GetWindowLong(button&,-21)
Print "Statischer Handle = "+Str$(sthand&)
WaitInput
End

GWL_USERDATA (-21) ist genau für diesen Fall gedacht, nämlich einem Fensterobjekt Gelegenheit zu geben, einen userspezifischen Wert zu sichern.
 
23.02.2006  
 




GDL
Hallo Frank,

es funzt.In etwa so wird es eingebaut.
KompilierenMarkierenSeparieren
Declare Button&[2450],Sthand&,ende%,adresse&,nummer%,y%,num%
Def Getwindowlong(2) !"USER32","GetWindowLongA"
Def Setwindowlong(3) !"USER32","SetWindowLongA"
window 0,0 -1024,748
y%=10
clear nummer%

whilenot y% > 600

    Button&[nummer%]=Create("Button",%Hwnd,"Test "+str$(nummer%),32,y%,150,24)
    Setwindowlong(Button&[nummer%],-21,(1000+nummer%))
    y%=y%+30
    inc nummer%

wend

whilenot ende%

    clear num%
    Waitinput

    whilenot num% > nummer%

        if getfocus(button&[num%])

            adresse&=Getwindowlong(Button&[num%],-21)
            drawtext 400,300,"aktuelle Adresse = "+str$(adresse&)+"        "

        endif

        inc num%

    wend

wend


KompilierenMarkierenSeparieren
!
Declare Button&[2450],Sthand&,ende%,adresse&,nummer%,y%,num%
Def Getwindowlong(2) !"USER32","GetWindowLongA"
Def Setwindowlong(3) !"USER32","SetWindowLongA"
window 0,0 -1024,748
y%=10
clear nummer%

whilenot y% > 600

    Button&[nummer%]=Create("Button",%Hwnd,"Test "+str$(nummer%),32,y%,150,24)
    Setwindowlong(Button&[nummer%],-21,(1000+nummer%))
    y%=y%+30
    inc nummer%

wend

whilenot ende%

    clear num%
    Waitinput

    whilenot num% > nummer%

        if getfocus(button&[num%])

            adresse&=Getwindowlong(Button&[num%],-21)
            drawtext 400,300,"aktuelle Adresse = "+str$(adresse&)+"        "

        endif

        inc num%

    wend

wend


Bin wieder einen Schritt weiter.Mal guggen wie ich es weiter löse.

Servus
Georg
 
Windows7 Xprofan 8,9,10 [...]  [...] 
23.02.2006  
 




Frank
Abbing
Hi,

na siehste.
Und keine Angst vor API. Wenn du die Technik erstmal verstanden hast, ist der Umgang damit ganz leicht
 
23.02.2006  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

1.151 Betrachtungen

Unbenanntvor 0 min.
GDL09.08.2018
Uwe Lang22.06.2013
Donnie30.03.2013

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie