Paules-PC-Forum.de Anzeige:

Microsoft Windows Intune: PC-Verwaltung und -Sicherheit in der Cloud: Updateverwaltung, Anti-Virus und vieles mehr!


Zurück   Paules-PC-Forum.de > Programmierung > XProfan > Helfer & Tools

Helfer & Tools Programme für und in XProfan und Fragen dazu.

EM-Tippspiel

Paule bei Facebook


Paule bei Twitter


Letzte Forenthemen
Gehe zum ersten neuen Beitrag Bundesliga-Tippspiel Saision...
Aufrufe: 7594, Antworten: 180
Gehe zum ersten neuen Beitrag PPF - Spiel "Wörter weiter...
Aufrufe: 26816, Antworten: 4212
Gehe zum ersten neuen Beitrag Hamachi deinstallieren
Aufrufe: 37, Antworten: 4
Gehe zum ersten neuen Beitrag PPF Blödstückchen Teil 3
Aufrufe: 22138, Antworten: 864
Gehe zum ersten neuen Beitrag Pc lahmt plötzlich
Aufrufe: 175, Antworten: 5
Gehe zum ersten neuen Beitrag Rechner fährt herunter,...
Aufrufe: 123, Antworten: 7
Gehe zum ersten neuen Beitrag Microsoft: Mehr Datenschutz...
Aufrufe: 24, Antworten: 0
Gehe zum ersten neuen Beitrag Acer Aspire 8745ZG fährt...
Aufrufe: 44, Antworten: 5
Gehe zum ersten neuen Beitrag Hilfe bei Script Erstellung
Aufrufe: 71, Antworten: 7
Gehe zum ersten neuen Beitrag avs4you_com Lizenz oder Abo?
Aufrufe: 55, Antworten: 3
Zeige:





Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23.11.2011, 01:09   #16 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von JörgG
 
Registriert seit: 08.12.2009
Ort: Mecklenburg
Beiträge: 202
Standard

Zitat:
InvalidateRect(ku&, 0, 1) ... Errorfenster "Funktion unbekannt"...
Gibt´s für XProf11.2a auch dafür ein Workaround?
du muß am Anfang des Progs die Header-Datei windows.ph laden
Code:
$H windows.ph
Die wird beim compilieren dann mit eingebunden, so daß du sie nicht mit der .exe mitführen mußt.
Sie enthält noch jede Menge andere API/Messages-Definitionen - bin aber selber noch nicht durchgestiegen. Auf jeden Fall liegt da 'ne Menge Potenzial drin
Beim Aufruf nicht die Tilde vergessen: ~InvalidateRect(ku&, 0, 1)
__________________
Gruß Jörg

Ideen gibt es viele - man muß sie nur haben...
XProfan 11.2, XP-Pro SP2/3

Geändert von JörgG (23.11.2011 um 01:17 Uhr)
JörgG ist offline   Mit Zitat antworten
Alt 23.11.2011, 01:25   #17 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von JörgG
 
Registriert seit: 08.12.2009
Ort: Mecklenburg
Beiträge: 202
Standard

Hab grad noch ein wenig geforscht: wenn du im Prog NUR diese eine externe Funktion brauchst & diese sehr oft im Prog aufrufst, lohnt es sich, die Funktion am Anfang statisch zu laden:
Code:
...
u32& = UseDll("user32.dll")
@ImportFunc(u32&,"InvalidateRect","InvalidateRect")
...
'der aufruf dann ohne Tilde:
InvalidateRect(ku&, 0, 1)
...
In diesem Fall braucht $H windows.ph nicht ausgeführt werden...
__________________
Gruß Jörg

Ideen gibt es viele - man muß sie nur haben...
XProfan 11.2, XP-Pro SP2/3

Geändert von JörgG (23.11.2011 um 01:41 Uhr)
JörgG ist offline   Mit Zitat antworten
Alt 23.11.2011, 06:36   #18 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
Standard

Genau, bitte die Borde in meinem Posting beachten. Ist API...
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist gerade online   Mit Zitat antworten
Alt 23.11.2011, 06:45   #19 (Direktlink)
Dauergast
 
Benutzerbild von p. specht
 
Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.078
Standard

Danke, klappt wieder super!
__________________
Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,XPSE,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB2:USB3
p. specht ist offline   Mit Zitat antworten
Alt 23.11.2011, 13:47   #20 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von JörgG
 
Registriert seit: 08.12.2009
Ort: Mecklenburg
Beiträge: 202
Standard

sooooooo - erwartungsgemäß hat das Einfärben mit InvalidateRect(ku&, 0, 1) mit W7 funktioniert
Bei XP flackert aber jetzt die Tabelle etwas.
Bei W7 ist das Flackern deutlich stärker.

Ich vermute mal, daß das Aktualisieren/Neuzeichnen langsamer oder mehrmals ausgeführt wird.
Am besten funzt es also bei XP nur mit der Listview.dll ohne InvalidateRect(ku&, 0, 1)
Ist aber auf jeden Fall ein großer Fortschritt, weil mein Prog. jetzt auf W7 wenigstens benutzt werden kann
Nochmals Danke an Alle für die Beratung & Mittüfteln.
__________________
Gruß Jörg

Ideen gibt es viele - man muß sie nur haben...
XProfan 11.2, XP-Pro SP2/3
JörgG ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 23.11.2011, 14:54   #21 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von JörgG
 
Registriert seit: 08.12.2009
Ort: Mecklenburg
Beiträge: 202
Standard

Hier nochmal der Code vom 1. Beitrag mit den hier besprochenen & eingebauten Änderungen (rot):
Code:
'w7-verhalten bei einfärbung von zeilen-/spaltenfarben

Declare lvh&, ku&, spa&, aspm&, u32&  '&
declare mark#  '#

Def GetSysColor(1) !"USER32","GetSysColor" 'win farbschema laden
lvh& = @importdll("Listview.dll","")       'listview.dll laden & statisch linken
u32& = UseDll("user32.dll")
@ImportFunc(u32&,"InvalidateRect","InvalidateRect")

dim mark#, 64

Windowstyle 512 + 8 ' dialogfensterstil + 8  
WindowTitle "    Testtabelle"
Window 1024,700 'größe des hauptfensters 
Cls GetSysColor(15) 'hauptfenster in den systemfarben darstellen

Proc beenden
   CloseMessages(%HWND)
   FreeDll lvh& 'dlls entladen   
   end
EndProc

Proc  listebauen
  Declare fn#
  dim fn#, 50 
  ku& = CreateListView(%hwnd,%hinstance,$0,$FFFFFF,$FFFFFF,$21) 'tabelle erstellen  
  buildlistview(ku&,10,0,100,0) '10 spalten mit breite 100 erzeugen  
  WhileLoop 0, 10 'alle 10 spalten durchlaufen   
    String fn#, 0 = "Spalte " + Str$(&loop) ' feldnamen in speicherbereich schreiben
    SetColumnName(ku&,fn#,&loop) 'betreffenden spaltennamen gemäß feldnamenliste festlegen     
  EndWhile
  Dispose fn#  
EndProc

Proc listefuellen
  declare spalte#[10],zeiger#,z%
  Dim spalte#[], 80
  Dim zeiger#, 40 'bereich für 10 adressen  
  z%= -1 'indexzähler für spalte#[]
  WhileLoop 0,36,4
    inc z%    
    Long zeiger#, &loop = spalte#[z%] 'zeigerbereich mit den adressen des bereichsarrays füllen
  EndWhile   
  WhileLoop 0,20 '20 zeilen anhängen
    z%= -1 'indexzähler für spalte#[]
    While z% < 10 'alle elemente von spalte#[] durchlaufen
      Inc z%
      String spalte#[z%], 0, "Zeile " + Str$(&loop) + "- Spalte " + Str$(z%) 'aktuellen spalteninhalt in bereichsarray schreiben
    EndWhile
    SItem(ku&,zeiger#,9) 'zeile mit den vorbelegten werten einfügen (zeile 0-9)
  EndWhile
  Dispose spalte#[]
  Dispose zeiger#
EndProc

Proc spmark
  'färbt eine spalte (hintergrund) im listview in eine andere farbe - (index der spalte, die eingefärbt werden soll, wird in globale longvariable spa& gelesen)
  Clear mark#           'speicherbereich für die spaltenfarben mit nullen füllen
  Byte mark#,spa&,1      'das der spaltennr. entsprechende byte auf 1 setzen  
  RaiseColumns(ku&,mark#,0,$D9FBDA) 'spaltenhintergrundfarbe setzen (helles grün)
  InvalidateRect(ku&, 0, 1)
  locate 1,1
  Print "Spalte",spa&;"  "
  setfocus(ku&) 'focus auf die tabelle setzen
EndProc

listebauen 'listview erstellen & spaltenköpfe beschriften
listefuellen 'testdaten ins listview schreiben
ShowListview(ku&,5,30,1010,400) 'tabelle anzeigen
InitMessages(%HWND) 'subclassing für das hauptfenster aktivieren
Usermessages $1400 'messages, die das listview ans hauptfenster schicken soll
 
spa& = 5 'spaltenzeiger setzen
spmark 'spalte einfärben

locate 1,30
Print "Mit Cursor links/rechts kann eine Spalte markiert werden - Esc=Ende"

while 1
  waitinput    
  'tastencodes auswerten, die vom system kommen       
  If %key = 2           
    beenden 
  ElseIf %key = 13 'wenn enter in der tabelle gedrückt wurde  
    Print "Enter"
    setfocus(ku&) 'focus auf die tabelle setzen
  EndIf
    
  'usermessages, die das listview sendet, auswerten
  if %umessage = $1400 'wenn eine taste gedrückt wurde    
    if (&ulParam = 38) or (&ulParam = 40) 'wenn cursor hoch/runter gedrückt wurde
      'aktion bei cursor hoch/runter
    ElseIf &ulParam = 37 'wenn cursor links gedrückt wurde    
      if spa& > 0 'wenn akt. spaltenindex mindestens 1 ist        
        dec spa& 'sp.index um eins verringern
        spmark 'markierung in tabelle setzen
      EndIf
    ElseIf &ulParam = 39 'wenn cursor rechts gedrückt wurde      
      if spa& < 9  'wenn akt. spaltenindex höchstens 8 ist        
        inc spa& 'sp.index um eins erhöhen
        spmark  'edit-markierung in tabelle setzen
      EndIf
    EndIf 'ende von tastendruck &ulParam = ...
  EndIf 'ende von %umessage = ....
    
endwhile
beenden
__________________
Gruß Jörg

Ideen gibt es viele - man muß sie nur haben...
XProfan 11.2, XP-Pro SP2/3
JörgG ist offline   Mit Zitat antworten
Alt 23.11.2011, 16:39   #22 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
Standard

Bei dieser Dll-Version reicht der Gebrauch von UpdateListview(). Das Flackern wird auch auf ein Minimum reduziert. Weniger geht bei Neuzeichnen wohl nicht.
Angehängte Dateien
Dateityp: zip Listview.zip (31,1 KB, 17x aufgerufen)
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist gerade online   Mit Zitat antworten
Alt 23.11.2011, 16:47   #23 (Direktlink)
Dauergast
 
Benutzerbild von p. specht
 
Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.078
Standard

Und woran lag es nun, Frank? Vielleicht löst das ja auch mein Altprogramm-Pluginproblem (Einmalig nutzbar, danach streikt es unter Win7)...
Danke im voraus!
__________________
Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,XPSE,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB2:USB3

Geändert von p. specht (23.11.2011 um 19:17 Uhr)
p. specht ist offline   Mit Zitat antworten
Alt 23.11.2011, 17:07   #24 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
Standard

Zitat:
Zitat von p. specht Beitrag anzeigen
Und woran lag es nun, Frank? Vielleicht löst das ja auch mein Altprogramm-Pluginproblem (Einmalig nutzbar, danach streikt es unter Win7)...
Das liegt einfach daran, dass XP und 7 unterschiedlich reagieren beim Neuzeichnen, weil einige Ereignisse (z.B. Hovern) dazugekommen sind. Listview.dll's UpdateListview() ist nichts anderes als die Message LVM_UPDATE. Ich habe da bislang einfach Null übergeben. Jetzt hab ich gelesen, dass der erste Parameter die Zeile bestimmt, die upgedatet werden soll. Das ist mir neu, hat MS sicher ab Vista geändert. Und richtig, die erste Zeile (also Nummer 0) wird auch korrekt neu gezeichnet. Nun müsste ich also ermitteln, wieviel Zeilen das Listview hat, und die Message auf jede Zeile getrennt anwenden. Getestet - klappt auch, aber flackert genauso wie InvalidateRect(), welches einfach das gesamte Control updatet.
InvalidateRect() kann aber auch in einem anderen Modus betrieben werden, in dem WM_ERASEBKGND vor dem Neuzeichnen nicht angewendet wird. Funktioniert ebenfalls und das Geflacker hält sich im Rahmen. Darum arbeitet diese API jetzt zusätzlich in UpdateListview().
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist gerade online   Mit Zitat antworten
Alt 23.11.2011, 17:42   #25 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von JörgG
 
Registriert seit: 08.12.2009
Ort: Mecklenburg
Beiträge: 202
Standard

Hey - es funzt! Und das Flackern ist auch viel weniger
Danke, Frank! Du warst ja schneller, als ich erhofft habe...
Sollte ich ich bei Progstart die WinVers ermitteln und updateListview(listview&) nur höher 5.1 ausführen oder fällt das bei XP nicht ins Gewicht?
Und da ist mir aufgefallen, daß die neue Listview.dll 89kb groß ist - meine bisherige hatte 28kb?
Stecken da etwa vllt. noch Sachen drin, von denen wir nichts ahnen
__________________
Gruß Jörg

Ideen gibt es viele - man muß sie nur haben...
XProfan 11.2, XP-Pro SP2/3
JörgG ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 23.11.2011, 19:04   #26 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.093
Standard

Nein, ist nur ungepackt.

Du kannst eine Unterscheidung einbauen. Bei meinen Tests unter XP kann ich aber keinen Unterschied zu vorher feststellen.
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist gerade online   Mit Zitat antworten
Antwort

  Paules-PC-Forum.de > Programmierung > XProfan > Helfer & Tools

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Win7 home premium auf Win7 Ultimate upgraden Betatester Windows 7 8 15.12.2010 21:09
Win7-64bit gegen Win7-32bit Daryll Windows 7 7 31.05.2010 18:34
Wie baue ich listview ein? Peter C. Dlls, Includes, Units & Prozeduren 12 31.03.2009 08:14
listview Peter C. Spezielles 6 29.03.2009 00:41
Listview Peter C. Helfer & Tools 3 28.03.2009 09:30



Alle Zeitangaben in WEZ +2. Es ist jetzt 20:02 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Powered by vBCMS® 2.7.0 ©2002 - 2012 vbdesigns.de
(c) Paules-PC-Forum.de

::: Impressum :::

Search Engine Optimization by vBSEO 3.3.2