Italia
Foro

Hintergrundbild in Dialogboxen

 

Hubert
Binnewies
Hallo zusammen.

Ich stehe hier vor einem besonderen Problem.
Aufgrund der Tatsache das man in Windows XP verschiedene Styles einstellen kann erhalten die Dialogboxen auch verschiedene Hintergrundfarben die zum Teil nicht mit meiner eingesetzten Grafik harmonieren.
Nun versuche ich das zu regeln indem ich die gesammte Dialogbox mit einer Bitmap hinterlege und darauf die diversen Editfelder,Auswahlboxen und Buttons erzeuge.
Funktioniert eigendlich prächtig, bis zu dem Augenblick an dem ich auf ein %wmpaint reagieren muss.
Nach dem Neuzeichnen liegt die Grafik nicht mehr hinter sondern vor den Controls.
Auch ein selektieren der Controls mit einem reihum gesetzten @setfocus hat nicht den ersehnten Erfolg, dabei werden die Controls teils verstümmelt.
Zum Beispiel werden Editfelder nicht mehr in 3D dargestellt oder bei Auswahlboxen fehlt das kleine Dreieck und so weiter.

Wie schaffe ich es die Grafik als Hintergrund zu definieren, so das die auch hinter den Controls bleibt?

Bitte kein XPSE ich hab da noch meine diversen Probs damit.

Danke schonmal im voraus.
 
WinXP Prof, XProfan 9.1 Newbie

Ein kluger Kopf sagte mal:
"Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!"
19.04.2006  
 



Lege einfach ein PictureStatic auf den Dialog - als Parentcontrol per Deine Buttons. Siehe Create (hPic
 
19.04.2006  
 




Hubert
Binnewies
Sieht so aus als wäre dieser Tipp Gold wert.
Aber ich hab mal deinen Link verfolgt und dann versucht den Befehl in der Aiuto zu suchen, denn ich weiss nicht welche Parameter die Funktion erwartet.
ich habs mit
KompilierenMarkierenSeparieren
DLGGrafik&=@CREATE("HPic",DLG&,"IMG/Bild.bmp",0,0,0640,0600)
>

und
KompilierenMarkierenSeparieren
DLGGrafik&=@CREATE("HPic",DLG&,DLGGrafik$,0,0,0640,0600)
>

versucht aber in beiden Fällen wird mir gesagt das die Bitmap nicht ladbar ist obwohl sie vorhanden ist.
(Der String im zweiten Beispiel enthält auch nur die Relative Position IMG/Bild.BMP)

Kannst du mir da auch auf die Sprünge helfen?...

Das wäre genial...

Und Danke nochmal...
 
WinXP Prof, XProfan 9.1 Newbie

Ein kluger Kopf sagte mal:
"Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!"
19.04.2006  
 



Ich helfe Dir aber nur schematisch - keine Zeit:
KompilierenMarkierenSeparieren
Def Cps(6) control("STATIC",@$(2),$5400010E,@%(3),@%(4),@%(5),@%(6),@%(1),2000, %HInstance)
dlg&=createdialog...
picstatic&=cps(dlg&,"",0,0,width(dlg&),height(dlg&))
picH&=create("hpic",-1,"bilddatei.bmp")
Sendmessage(picstatic&,$172,0,picH&)/pre>
Fertig.

Der Link den Du ansprichst ist ein Verweis auf die OnlineDoku welche zwar helfen kann, aber nicht vollständig ist. Hier ist die XProfanhilfe heranzuziehen.
 
19.04.2006  
 




Hubert
Binnewies
Ich sag ja....GOLD Wert...

Das Blöde ist nur das der Waitinput nicht mehr auf
KompilierenMarkierenSeparieren
If @EQU(%KEY,2)

    LET DIALOGENDE%= 1

ENDI

ragiert
ich kann nur noch circa einen Button das fenster verlassen.
Und der Tab in den Editfeldern funktioniert auch nicht mehr...

Oh man.......ich hab noch viel zu lernen....
 
WinXP Prof, XProfan 9.1 Newbie

Ein kluger Kopf sagte mal:
"Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!"
19.04.2006  
 




Rolf
Koch
Hi,
Richtig, dies wäre nur circa ein Subclass zu erreichen, dass die Buttons und andere Elemente wieder reagieren.
Wenn Du Lust hast bei Deinem %WMPaint zu bleiben, sieh Dir auf meiner Seite unter rokosoft.de und dort Profan/Meine Profancodes die Vorlage
Einen Dialog farblich gestalten an.
Ganz einfache Sache:
Dialog neuzeichnen bei %WMPAINT und auch in der Proc aber alle
Objekte per
showwindow(x&,0)
showwindow(x&,1)
wieder Mostra.
 
19.04.2006  
 



Hm eigendlich müsste er doch nur auf Getmessage  umstellen oder?
 
19.04.2006  
 




Hubert
Binnewies
Sorry R.Koch......aber die Lösungen von IF haben megariesigen Vorteil.
Da ich im Begriff bin eine Kommerzielle Software zu schreiben muss ich darauf achten das da so wenig wie possibile an Schönheitsfehler auftauchen.
Darum hänge ich mich ja so an Kleinigkeiten auf.
Und so leid es mir auch tut, Deine Lösung ist wirklich simpel und bequem, beinhaltet aber einen Schönheitsfehler mit dem ich nicht leben kann.
Und zwar: schieb mal dein Fenster circa den Bildschirmrand hinaus und zieh es zurück.
Das Programm wartet mit der Aktualisierung bis die Maustaste losgelassen wird, und das sieht echt grausam aus.
Das ist auch der Grund warum ich bereits nach 2 Wochen die Benutzung vom ROC verworfen habe, die Ergebnisse sehen einfach unprofessionell aus, zumal mir bei der Benutzung die Kontrolle circa die Fonts schon entglitten ist sobald ich von einem Childwindow aus ein weiteres Fenster oder Dialog öffnete in dem ich einen anderen Font verwende.
Dieser wird mir dann auch in dem besagten Childwindow dargestellt sobald ich mit der Maus alleine nur nen Button berühre oder das Childwindow verdeckt wurde.

Deine Lösungen sind echt Gut und auch Simpel, aber mit den Lösungen von IF kann man echt bessere Sauereien Programmieren ohne die Kontrolle zu verlieren, auch wenn es um ein vielfaches Komplizierter ist.

(Sorry, ist echt nicht persönlich gemeint, ich muss nur auf ein paar Kleinigkeiten achten)
 
WinXP Prof, XProfan 9.1 Newbie

Ein kluger Kopf sagte mal:
"Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!"
19.04.2006  
 




Hubert
Binnewies
Hallo IF...

Auch dieser Tipp war wieder GOLD wert....
BOAH....was damit alles überwachen kann....goil....

War Goldrichtig.....
 
WinXP Prof, XProfan 9.1 Newbie

Ein kluger Kopf sagte mal:
"Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!"
19.04.2006  
 




Rolf
Koch
[quote:b3fcf52860] Hm eigendlich müsste er doch nur auf Getmessage umstellen oder?
[/quote:b3fcf52860]
Naklar wenn es programmtechnisch geht
Meinen Erfahrungen her ist es als Hauptschleifen Wartebefehl mit Getmessage manchmal sehr problematisch. Aber wie gesagt, wenn man darauf direkt aufbaut. Klar
 
19.04.2006  
 




Rolf
Koch
[quote:1d94c7bdd6]
Darum hänge ich mich ja so an Kleinigkeiten auf.
Und so leid es mir auch tut, Deine Lösung ist wirklich simpel und bequem, beinhaltet aber einen Schönheitsfehler mit dem ich nicht leben kann.
[/quote:1d94c7bdd6]
Deswegen schrieb ich ja, wenn Du bei Deiner alten Methode bleiben willst.
Ich selbst mag es auch nicht besonders mit WMPAINT zu arbeiten.

[quote:1d94c7bdd6]
Und zwar: schieb mal dein Fenster circa den Bildschirmrand hinaus und zieh es zurück.
Das Programm wartet mit der Aktualisierung bis die Maustaste losgelassen wird, und das sieht echt grausam aus.
[/quote:1d94c7bdd6]
Ich glaube das ist per mich nix neues
Deswegen ist in Roc ja nun auch ein Subclassmangager enthalten.

[quote:1d94c7bdd6]
Das ist auch der Grund warum ich bereits nach 2 Wochen die Benutzung vom ROC verworfen habe, die Ergebnisse sehen einfach unprofessionell aus, zumal mir bei der Benutzung die Kontrolle circa die Fonts schon entglitten ist sobald ich von einem Childwindow aus ein weiteres Fenster oder Dialog öffnete in dem ich einen anderen Font verwende.
Dieser wird mir dann auch in dem besagten Childwindow dargestellt sobald ich mit der Maus alleine nur nen Button berühre oder das Childwindow verdeckt wurde.
[/quote:1d94c7bdd6]
Nagut, aber ROC erstellt im eigentlichen Sinne so wie es von Profan vorgegeben ist.
Würde ich mehr Ressonance vom User bekommen - wie Dein Problem dann bräuchte ich es nicht zu riechen, was den User stört. Aber kenne ich ja bereits.
Roc ist unter der Haube mächtiger als man denkt. Aber trotzdem muss man im erstellten Code doch noch ein bisschen händisch arbeiten.

[quote:1d94c7bdd6]
Deine Lösungen sind echt Gut und auch Simpel, aber mit den Lösungen von IF kann man echt bessere Sauereien Programmieren ohne die Kontrolle zu verlieren, auch wenn es um ein vielfaches Komplizierter ist.
[/quote:1d94c7bdd6]
Stimmt. Ich arbeite auch lieber mit Staticpics.
[quote:1d94c7bdd6]
(Sorry, ist echt nicht persönlich gemeint, ich muss nur auf ein paar Kleinigkeiten achten)
[/quote:1d94c7bdd6]
Ist doch klar. Das muss jeder.
Ist ja auch der richtige Weg mit Statics und Pics drauf - Ich mag diese Dinger *lol*
Aber wie Du siehst, haben die Teile auch ihre Kehrseite. Versuch mal Transparenz.
 
19.04.2006  
 



Jojo, da hat Rolf wohl recht.

Wenn Du tatsächlich eine possibile saubere Umgebung herstellen möchtest - dann kann ich Dir nur den Tip geben Dir den WindowProc und Messagebasierten Aufbau von z.B. Okrea anzueignen. (Source liegt ja im Paket bei.)

Dein Programm muß dann:

a) im FastMode laufen
b) eine eigene wProc haben
c) einen eigenen Messagehandler haben

Solange Du im nicht-Fastmode programmierst wird die Anwendung in manchen Situationen unprofessionell reagieren - ebenso wie im FastMode wenn Du nicht auf wichtige Messages reagierst.

Rolfs Object-Creator zielte bisher erfolgreich darauf ab, mittels den reinen XProfan-Messagemethoden Millionen Situationen unter einen Hut zu bekommen. (Respekt Rolf - keine Frage!)

Dein Anspruch jedoch erwartet entweder a) reine Handarbeit welche Dich noch oft-genug zum Verzweifeln bringen wird, oder b) einen Objekt-Creator der kommenden Generation.
 
19.04.2006  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

2.053 Views

Untitledvor 0 min.
E.T.25.06.2023
Christof Neuß11.11.2019
AndreasS23.12.2018
Uwe08.02.2018
Di più...

Themeninformationen

Dieses Thema hat 3 subscriber:

Rolf Koch (5x)
iF (5x)
Hubert Binnewies (5x)


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