Deutsch
Forum

Listview und InitMessages

 

Cyberangle
Hallo,

ich habe mit der Listview.DLL Kassenverwaltung realisiert. Das funktioniert recht gut. Ich habe nur ein kl. Problem;

In einer Groupbox habe ich 3 Radiobutton zusammengefasst, Legen in nun ein anderes beliebiges Progammfenster über das Kassenfenster so hat sich nach der Schliesung des beliebigen Progammfensters die Hintergundfarbe (nur in der Goupbox ) auf die Hintergrundfarbe des vorher geöffneten belieben Progammfensters geändert..
Das passiert aber nur, wenn ich am Progammanfang nach dem öffen des Listrviews InitMessages(hwnd%) aufrufe. Wenn ich die Zeile auskommentiere tritt der Fehler nicht auf.

Kann mir das jemand erklären???
 
Viele Grüsse
Michael
17.03.2007  
 




Frank
Abbing
Dazu müsstest du schon ein kleines lauffähiges Beispiel zeigen. So aus der Ferne lässt sich sonst nichts sagen.
 
17.03.2007  
 



[tb]minimalbeispiel[/tb]
 
17.03.2007  
 




Cyberangle
Sorry,

da hätte ich auch selbst drauf kommen müssen. Anbei ein Stück der Hauptschleife:
KompilierenMarkierenSeparieren
Declare bereich#,listview&,lv2&,lvdll&,text$,bytes&,speicher&,y&,z&
Declare schleife%,nrdll&,nred1&,nred2&,nred3&,nred4&,delline&          Var Listview, Ndll u. Schleife
Declare datu&,kont&,numm&,vorg&,einz&,ausz&,grupp&,usttext2&,usttext3&,usttext4&Var. für edits
Declare radi1&,radi2&,radi3&,zugang!,abgang!,zeile&,butt1&,butt2&
Declare ust0!,ust1!,ust2!,lastfocus&,Datum$,konto%,nummer%,vorgang$,ab$,eb$
Declare ust!,ustcheck!,ende%, zug2&,abg2&,ustges&,ab2&,eb2&,gesamt!
Declare t$,n$,anz%                                                       Var für messagebox
Def GetSysColor(1) !USER32,GetSysColor
Def @GetKeyState(1) !User32,GetAsyncKeyState
Def NumbMessages(2) !NEdit.dll,InitMessages    Nummerisches Zahlenfeld
 $I Listview_Funktionen.inc
lvdll&=usedll(Listview.dll)
SetTrueColor 1
Decimals 2
Windowstyle 26+512
Windowtitle Kassenverwaltung Programm
Window 0,0-%maxX,%maxY
Cls GetSysColor(15)
alle Listviews öffenen und die Vorgangsdaten ins 2. LV übernehmen
lv2&=CreateListView(%hwnd,%hinstance,RGB(0,0,0),RGB(255,255,255),-1,$31)
IColumn(lv2&,Vorgang wählen,100,0)
AutoSortListview(lv2&,1)
ShowListView(lv2&,720,160,107,334)
listview&=CreateListView(%hwnd,%hinstance,Rgb(0,0,0),Rgb(255,255,255),-1,$31)  Leeres Listview
IColumn(listview&,Datum,100,2)    Spalten erstellen
IColumn(listview&,Konto,55,1)
IColumn(listview&,Nummer,55,1)
IColumn(listview&,Vorgang,135,0)
IColumn(listview&,Einzahlung,60,1)
IColumn(listview&,Auszahlung,60,1)
IColumn(listview&,UST,60,1)
IColumn(listview&,Anfbst,65,1)
IColumn(listview&,Endbst,60,1)
AutoSortListview listview&,1,0,1,1,0,0,0,0,0
ShowListView(listview&,10,160,687,400)
REM
InitMessages(%hwnd)
Menue erstellen
PopUp &Datei
Appendmenu 201,Dateiffnen
Appendmenu 202,Datei &schließen
AppendMenu 203,&Neuer Monat
Separator
AppendMenu 204,&Beenden
PopUp &Tools
AppendMenu 401,&Anfangsbestand eingeben
Appendmenu 402,&Monatsabschluß
PopUp &Hilfe
Appendmenu 601,&info
Appendmenu 602,&Optionen
ust0!=0                  UST mit 0 Prozent
Create(Text,%hwnd,Spaltensummen :,210,562,120,24)
Create(Text,%hwnd,Endbestand :,210,592,120,29)
zug2&=Create(edit,%hwnd,xxxx,370,562,62,24)    Summenreihe unter dem LV
abg2&=Create(edit,%hwnd,x,430,562,62,24)
ustges&=Create(edit,%hwnd,xx,490,562,62,24)
ab2&=Create(edit,%hwnd,xx,550,562,62,24)
eb2&=Create(edit,%hwnd,xxxx,370,592,61,24)
datu& = Create(DateEdit,%hwnd,,10,125,80,24) edits erzeugen
ControlEdit sind Zahlenfelder rechtsbündig
usttext2& = Create(Text,%hwnd,  +Str$(ust0!),515,30,32,36)  Text in ust-Box
usttext3& = Create(Text,%hwnd,  +Str$(ust1!),515,66,32,36)
usttext4& = Create(Text,%hwnd,Str$(ust2!),515,116,32,36)
radi1& =Create(RadioButton,%hwnd,%,580,40,32,35)
radi2& =Create(RadioButton,%hwnd,%,580,78,32,35)
radi3& =Create(RadioButton,%hwnd,%,580,110,32,35)
grupp&= Create(GroupBox,%hwnd,UST.,500,15,150,139)  Ust Box erzeugen
Clear ende%

While ende% < 1

    WaitInput

    If MenuItem (204)              Menueaufruf >Datei  -  beenden<

        inc ende%
        inc schleife%

    EndIf

    If MenuItem (201)      Menueaufruf  >Datei  -  Datei Öfnnen<

        @ShowWindow(butt1&,1)
        @ShowWindow(butt2&,1)
        EnableMenu 401,1                         menu Anfagsbestand deaktivieren

    Endif

    If MenuItem (401)              Menueaufruf  >Tools -  Anfangbestand eingeben<

        datum$ = date$(1)
        ab$ = Input$(Bitte geben Sie den Anfangsbestand ein: ,Bestands-Eingabe,ab$)
        datum$ = Input$(Bitte geben Sie das Datum ein: ,Datums-Eingabe,date$(0))
        EnableMenu 401,1                         menu Anfagsbestand deaktivieren
        @ShowWindow(butt1&,1)   Buttons sichtbar
        @ShowWindow(butt2&,1)

    EndIf

Wend

DestroyWindow(nred1&)     nummerisches Feld zerstören
DestroyWindow(nred2&)
DestroyWindow(nred3&)
DestroyWindow(nred4&)
EraseListview(listview&)  Listviewstrukturen entfernen
EraseListView(lv2&)
DestroyWindow(listview&)  Profan Befehl, um Fensterobjekte zu zerstören
DestroyWindow(lv2&)
CloseMessages(%hwnd)      Subclassing des Parentfensters entfernen
End
 
Viele Grüsse
Michael
18.03.2007  
 




Frank
Abbing
Hallo Michael,

ich kann diesen Farbwechsel bei mir nicht bestätigen. Unter XP-Home scheint mir alles normal zu sein. Welches Betriebssystem benutzt du denn?

Ich wüsste auch nicht, warum die Radiobuttons und die Groupbox was mit dem Listviews zu tun haben könnten, komische Sache. Mal sehen, welche Erfahrungen die anderen gemacht haben...
 
18.03.2007  
 




Cyberangle
Ich habe Windows XP mit allen Servicepacks. Wenn ich das Kassen-Programm aufrufe habe ich auch ein ganz normales graues Programmfenster Mit den beiden Listviews und der Groupbox. Minimiere ich jetzt das Programmfenster mit dem Minimieren Button so dass die Fensterbezeichnung nur noch in der Taskleiste von Windows liegt und ich nur noch das Profellowfenster sehe, von dem ichdas Kassenprog. und kicke dann in der Taskleisteauf den Kassenprg-Button um das Programmfenster wieder zu öffnen, dan stimmt der Hintergund innerhalb der Groupbox nicht mehr.
Kommentiere ich jetzt die Zeile
KompilierenMarkierenSeparieren
aus und wiederhole die minimierung des Programmfenster so tritt der Fehler nicht mehr auf.

36 kB
Kurzbeschreibung: hier ein Screenbild
Hochgeladen:18.03.2007
Ladeanzahl82
Herunterladen
 
Viele Grüsse
Michael
18.03.2007  
 




Jörg
Sellmeyer
Bei mir ist ebenfalls alles normal. Keine falsch dargestellte Groupbox. Ich hatte ähnliches auch mal aber nur im Zusammenhang mit Prfellow. Leider weiß ich nicht mehr, ob ich es irgendwie lösen konnte. Tritt das denn auch, wenn Du das Programm aus dem Explorer heraus aufrufst. Vielleicht erledigt sich ja so schon das ganze. Bau doch mal ein RePaint ein, wenn das Programm wieder maximiert wird.
PrFellow erzeugt manche Controls auf eigene Art und da es (leider, leider) schon seit Jahren nicht mehr weiterentwickelt wird, hält es natürlich weder mit der Profan- noch mit der Windoesentwicklung Schritt. Ich hab mich auch schweren Herzens getrennt aber der neue XProfEd ist wirklich gut mit den Möglichkeiten, die die Codefaltungen bieten. Und fürs Erstellen des Fensters gibt es ja ROC, der mittlerweile auch schon aus den Kinderschuhen raus ist.
Gruß
Jörg
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
18.03.2007  
 




Cyberangle
Hallo Jörg,

ich habe den Programmtest jetzt nacheinander in den Profan-Pad und in den RGH ProfanED geladen und mit F7 ausgeführt.
Bei beiden tritt der gleiche Fehler auf. Sobald ich das Programm minimiere und wieder vergrößere ( Siehe JPG-Bild weiter oben).
Der neue XPrfED läuft doch noch nicht unter XPorfan 8. Ausserden tritt der Fehler ja auch auf, wenn ich einbeliebiges fremdes Progamm (z.B. Freecell) über mein Progamm lege und dann wieder schließe
 
Viele Grüsse
Michael
18.03.2007  
 




Jörg
Sellmeyer
Was ist denn, wenn Du InitMessages vor dem Erstellen des Listviews aufrufst?
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
18.03.2007  
 




Frank
Abbing
InitMessages() startet das Subclassing des Parentfensters, also des Fensters, in dem die Listviews angesiedelt werden. Dabei ist es egal, wann es aufgerufen wird, nur das Parentfenster (meisstens wohl %HWND) muss vorhanden sein. Listviews können durchaus auch später erstellt werden.
Hab im Subclassing-Quellcode nochmal nachgesehen. Nirgendwo benutze ich API, welche Einfluss nehmen auf die Grafik von %HDC oder %HWND. GDI32 wird gar nicht verwendet.
Ich vermute den Fehler irgendwo als Fehlfunktion deines Systems, vielleicht auch ein fremdes Programm. Starte deinen Code mal, nachdem du alle aktiven Programme beendet hast.
 
18.03.2007  
 



Evtl. ein Problem des Grafikkartentreibers? Da gibt es einige merkwürdige Sachen...
 
18.03.2007  
 




Michael
Wodrich
Ja, vermute ich auch.

a) Die Farbauflösung ist nicht 32 sondern 16-Bit. Das ist eine Möglichkeit für kleine Grafikfehler.

b) Der Grafiktreiber sollte auf den neuesten Stand gebracht werden.

Ich hatte solche Probleme auch, die sind mit einem neuen Treiber alle verschwunden.

Schöne Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
18.03.2007  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

11.073 Betrachtungen

Unbenanntvor 0 min.
Ernst19.05.2016
iF20.12.2012
Andreas Koch02.09.2012
Frank Vorholzer10.05.2012
Mehr...

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