Deutsch
Forum

EraseListview(H)

 
Hallo Frank,

ab wann kann man ein Listview löschen ?
Der Hintergrund ist der, ich erstelle zum Speichern einer Kontrollliste und nur dazu kurzfristig ein Listview, kopiere dort etwas hinein, speichere es ab und möchte es dann wieder löschen, damit ich nicht irgendwann über die 64 möglichen komme.
Nachfolgender Code führt aber zu einer Schutzverletzung:

->
$I Listview_Funktionen.inc
DECLARE LVDLL&
DECLARE LV&
DECLARE Name$
LVDLL& = UseDLL(Listview.dll)

Proc MakeLV
LV& = CreateListview(%HWND,%HINSTANCE,0,Rgb(255,255,255),-1,$21)
Name$ = 01
IColumn(LV&,Addr(Name$),0,0)
EndProc

WindowStyle 8 + 512
Window 100,100-800,600

MakeLV

DeleteObject LV&
EraseListview(LV&)

WaitInput
FreeDLL LVDLL&
$I Listview_Dispose.inc
End
<-
 
09.11.2004  
 



Hallo Georg,

EraseListview() zerstört kein Listview, sondern nimmt den Handle dieses Listviews Handle aus den internen Strukturen der Listview.dll.
Ein Listview löschen kannst du - wie jedes andere Fensterobjekt auch - mit DestroyWindow(listview&)...

Gruß, Frank
 
09.11.2004  
 



Hallo Frank,

das mit dem DeleteObject war ein Schreibfehler von mir.

Mir ging es aber gerade um das Löschen des Handles aus der internen Struktur.
Da dieses Listview bei jedem Load/Save Befehl erstellt wird, könnte es bei jemanden der wie ein verrückter Arbeitet die 64 möglichen Handles voll werden.
Oder geht das Löschen erst wenn man ein InitMessages ausgeführt hat und wenn ja, was ist mit einem Listview das nach einem InitMessages(%HWND) auf %HWND erstellt wird ?
Füllt dieses auch die interne Struktur ?

Viele Grüße
Georg
 
09.11.2004  
 



Hallo,

nein.
Aber bestimmte Funktionen benötigen diese Tabelle(n), z.B. RaiseColumn().
Ist diese Tabelle mal voll, arbeiten die Funktionen nicht mehr richtig. Mit EraseListview() wird dieser Tabellenplatz wieder frei freigemacht.

Gruß, Frank
 
09.11.2004  
 



Hi Frank,

ich stehe etwas auf meiner Leitung.

Ein CreateListview fügt einen Handle in die interne Tabelle ein, diese Tabelle kann 64 Einträge verwalten. Um einen Platz wieder frei zu bekommen muß man ein EraseListview mit dem Handle eines Listviews ausführen.

Wenn man nun 65 mal ein Listview erstellt mit CreateListview und dieses nur per DestroyWindow löscht, würde die interne Tabelle voll sein und einige Funktionen nicht mehr richtig laufen.

Habe ich das so in etwa richtig verstanden ?

Wenn ja besteht immer noch das Problem mit der Systemverletzung in meinem Democode, auch wenn man DestroyWindow nimmt, statt DeleteObject.

Viele Grüße
Georg
 
09.11.2004  
 



Hallo Georg,

ja, das sieht du absolut richtig !

Nachdem du DestroyWindow benutzt hast, darfst du das Listviewhandle natürlich nicht mehr benutzen !!!
Das EraseListview mußt du vorher anbringen, ggf. gefolgt von einem Sleep 100, damit auch sichergestellt ist, das das Handle in die Dll nicht mehr benutzt wird, wenn das Listview verschwunden ist.
Wenn das noch nicht klaapt, sende mir einen funktionierenden kleinen Democode zu.....

Gruß, Frank
 
09.11.2004  
 



Hi,

ich nochmal.
Scheint so, als wäre in EraseListview doch noch ein Fehler.
Ich prüfe das heute abend.

Gruß, Frank
 
09.11.2004  
 



Hallo,

so, der Fehler ist jetzt weg und RaiseLine() hab ich auch sofort mit hineingenommen.

Hier könnt ihr (immer) die neuste Betaversion runterladen:
[...] 

Gruß, Frank
 
09.11.2004  
 



Hää ???
RaiseLine()...war doch schon drin oder ?
ausser Du meinst die Hilfedatei
die ist aber unter diesem Downloadlink nicht dabei
...mein ja nur

Gruß Klaus
 
09.11.2004  
 



Hallo Klaus,

ich meinte das Löschen der internen Tabelle von RaiseLine. War bisher nicht drin.

Gruß, Frank
 
09.11.2004  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

6.962 Betrachtungen

Unbenanntvor 0 min.
Michael W.03.07.2016
Setharial15.02.2013

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

unbekannt (10x)


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