Italia
Foro

PicButton und @GetFocus funktionieren nicht zusammen

 

Sato
Pinto
Hallo Allerseits
Normaleweise benutze ich eine Vorlage von Andreas Miethe um bmps auf Buttons zu legen, aber jetzt wollte ich Xprofan PicButton testen und stelle fest das es mit GetFocus nicht funktioniert aber wohl mit clicked den ich in meinen Programm nicht nutzen kann. Gibt es eine Lösung PicButton und @Getfocus ??
KompilierenMarkierenSeparieren
declare ende&
cls
ende& = @Create("hPic",-1,"termo2.bmp")
@Create("PicButton",%hWnd,ende&,444,205,55,32)

while 1

    waitinput

    if clicked (ende&)

        if @GetFocus (ende&)

            break

        endif

    endwhile

    DeleteObject ende&
    end

Gruss
Sato
 
Sato Pinto
WIN XP Home
XPROFAN 11
04.08.2008  
 




Jörg
Sellmeyer
Hallo Sato,
Das Problem ist nicht Clicked, sondern Dein Code.

Du hast die variable dem Bildhandle zugeordnet. Du mußt aber den Button abfragen, wenn Du eine Raktion haben willst:
KompilierenMarkierenSeparieren
declare ende&
cls
Var hpic& = @Create("hPic",-1,"termo2.bmp")
ende&=@Create("PicButton",%hWnd,ende&,444,205,55,32)

while 1

    waitinput

    if @clicked (ende&)

        break

    endif

endwhile

DeleteObject hpic&
end
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
04.08.2008  
 




Sato
Pinto
Hallo Jörg

Danke, funktioniert mit kleine Korrektur
KompilierenMarkierenSeparieren
var ende& = @Create("hPic",dll%,#122)
ende& = @Create("PicButton",_dlg&,hpic&,444,205,32,32)
nicht end
re>

Gruss
Sato
 
Sato Pinto
WIN XP Home
XPROFAN 11
04.08.2008  
 




Jörg
Sellmeyer
Hallo Sato,

Nein, so ist es immer noch nicht richtig. Du weist der Variablen ende& jetzt zwei Objekte zu. Das geht nicht. So kannst Du das Bildhandle am Ende des Programms nicht mehr freigeben. Du hast jetzt auch dem Button das falsche Handle trasferimento. Vielleicht nur ein Kopierfehler?
Create("hPic",...) muß eine eigene Variable haben (in meinem Beispiel hPic&) und der Button muß ebenfalls eine eigene Variablenbezeichnung erhalten.
Keine Ahnung, warum Du jetzt _dlg& drin hast, aber ich vermute, der Button soll auf einem Dialog liegen.

Saluto
Jörg
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
04.08.2008  
 



Jörg Sellmeyer
Das geht nicht. So kannst Du das Bildhandle am Ende des Programms nicht mehr freigeben. Du hast jetzt auch dem Button das falsche Handle trasferimento.


Als ich meinte das man GRUNDSÄTZLICH alles wieder zerstören sollte was man auch erzeugt, meintest Du, dass dies ungefähr ein Gerücht sei weil es auch z.B. reiche einen Parent von Controls zu zerstören.

Man sollte immer alles wieder zerstören was man erzeugt. WIE man es zerstört (z.B. circa das parent) ist eine andere Sache...

PS: ich weiss das Sato hier den Fehler aber vlt. aus anderem Grunde eingebaut hatte - es aber imho auch Sato war zu dem Du meintest dass das Parentzerstören ausreicht.

Anfänger sollten immer im Hinterkopf haben dass das eigene Programm auch die Ordnung wiederherzustellen hat. Wenn Windows hiervon einen Großteil mittlerweile selbst übernimmt, dann mag das höchstens hilfreich sein.
 
04.08.2008  
 




Jörg
Sellmeyer
Hallo David,
Erstens habe ich von Dir auch noch keinen Code gesehen, in dem Du alle Controls zerstörst, zweitens geht es hier nicht um ein Control sondern um ein GDI-Objekt, nämlich das Bildhandle. Die werden meines Wissens von Windows separat behandelt und belegen nach Beendigung des Progamms weiterhin Speicher.
Ich bin weiterhin sicher, dass man Buttons und andere "normale" Fensterobjekte nicht explizit erledigen muß. Ob das bei Handles per Bitmaps u.s.w. der Fall ist wäre vielleicht mal einen Versuch wert.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
04.08.2008  
 



Ja wir reden ordentlich aneinander vorbei. Es geht auch mir nicht darum, dass Controls alle einzeln zerstört gehören.

Es ging mir einzig darum einem Totalanfänger einmalig erklärt zu haben, dass man Dinge, welche man erzeugt, ("gefälligst") auch wieder beseitigen sollte.

Das man Controls zerstören kann, in dem man das Parent zerstört, spricht da nicht dagegen, da die Controls hierbei ja ebenso zerstört werden. "Immer" klappt das imho aber auch nicht, glaube dann nicht, wenn das Parentcontrol nicht dem eigenen Prozess angehört. (ich bin mir hierbei aber wirklich nicht sicher, meine aber schonmal eine Negativerfahrung gemacht zu haben)

Jörg Sellmeyer
Hallo David,
Erstens habe ich von Dir auch noch keinen Code gesehen, in dem Du alle Controls zerstörst,


Nunu!
KompilierenMarkierenSeparieren habe ich bestimmt schonmal gepostet.

Jörg Sellmeyer
zweitens geht es hier nicht um ein Control sondern um ein GDI-Objekt, nämlich das Bildhandle. Die werden meines Wissens von Windows separat behandelt und belegen nach Beendigung des Progamms weiterhin Speicher.


Hängt imho von der Windowsversion ab. Unter XP kann man wohl nichts den eigenen Prozess überleben lassen ausser File, also auch z.B. keine hPics. hPics von Bitmaps* überleben (naturalmente) das Zerstören von Bitmaps*.

*Statics
 
04.08.2008  
 




Jörg
Sellmeyer

Es geht auch mir nicht darum, dass Controls alle einzeln zerstört gehören.


Ok, dann reden wir nicht aneinander vorbei.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
04.08.2008  
 




Sato
Pinto
Hallo Leute

Bitte deswegen nicht aufregen, es lohnt sich nicht.....

Jörg, ja _dlg& ist ein Dialog Handle, der Button liegt auf den Dialog.
Ich habe den falschen copy and past erwischt, in meine code ist es so
KompilierenMarkierenSeparieren
var hpic& = @Create("hPic",dll%,#122)
ende& = @Create("PicButton",_dlg&,hpic&,444,205,32,32)
beim verlassen des Dialogs habe ich
deleteobject hpic&
deleteobject e
/pre>

und hoffe das es so korrekt ist

Gruss
Sato
 
Sato Pinto
WIN XP Home
XPROFAN 11
04.08.2008  
 




Jac
de
Lad

KompilierenMarkierenSeparieren
var hpic& = @Create("hPic",dll%,#122)
ende& = @Create("PicButton",_dlg&,hpic&,444,205,32,32)
beim verlassen des Dialogs habe ich
deleteobject hpic&
DestroyWIndow(ende&)/pre>
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
04.08.2008  
 




Jörg
Sellmeyer
und nochmal der Vollständigkeit halber:
Das DestroyWindow(ende&) ist nicht nötig. Wenn der Dialog zerstört wird, b.z.w. das Hauptfenster am Ende des Programmi werden automatisch alle Controls mit zerstört und belegen keine Resourcen mehr.
Das Bitmaphandle muß auf zerstört werden, da sonst der Speicher dafür nicht wieder freigegeben wird.

und aufregen werden wir uns bestimmt nicht, gell David?

...

David??

...

...

D A V I D !!!
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
04.08.2008  
 



Ich bin völlig frei jeden Verstandes und jeder Erregung.
 
04.08.2008  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

3.537 Views

Untitledvor 0 min.
GDL26.08.2015
RICOSCH30.11.2013
Uwe Lang01.01.2012
Mirko23.12.2011
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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