Deutsch
Forum

Fehler bei Create("BITMAP"?

 
- Seite 1 -



Manfred
Barei
Hallo,

ich weiss nicht ob das ein Fehler ist und nur bei mir auftritt.
Wenn ich auf dem Hauptfenster ein Bild als Hintergrund lege werden TabControlls nicht mehr angezeigt, alle anderen Controlls jedoch werden angezeigt, siehe Code.

Bitte einmal Testen.
KompilierenMarkierenSeparieren
 $P+
SET("ERRORLEVEL",0)
DECLARE RICHEDIT1&,RICHEDIT2&
DECLARE STATICBITMAP1&,hbild&
DECLARE GRIDBOX1&
'----------Declarationen für Tabcontroll
DECLARE TabControl&,TabPage1&,TabPage2&,LastTab&
'-----------------------------------------------------------------
DEF GETSYSCOLOR(1) !"USER32","GetSysColor"
WINDOWSTYLE 538
WINDOWTITLE "Test"
WINDOW (%maxx/2 - 736/2),(%maxy/2 - 525/2) - 736,525
SET("TRUECOLOR",1)
DECLARE ENDE&
CLS GETSYSCOLOR(15)
USEFONT "MS Sans Serif",14,0,0,0,0
SETDIALOGFONT 1
'--hier ein eigenes Bild wählen---------------------------
STATICBITMAP1& = CREATE("HPIC",-1,"D:PROGRAMMEXPROFAN11EIGENE_PROGRAMMEKARTEIKARTENBMPKARTEN_TEXTUR.PNG")
'--so funktioniert es nicht mit dem TabControll
'hbild& = Create("BITMAP",%HWND,STATICBITMAP1&,0000,0000)
'--so funktioniert es mit dem TabControll--------------
DrawPic STATICBITMAP1&,0 ,0 ;0
'-----------TabControl--------------------------------------------
TabControl& = @CREATE("TABCTRL",%HWND,"Vorderseite",260,150,425,265)
TabPage1& = CONTROL("DIALOG","", $40081003,2,25,WIDTH(TabControl&)-10, HEIGHT(TabControl&)-30,TabControl&,0,%HINSTANCE)
SHOWWINDOW(TabPage1&,0)
@INSERTTAB(TabControl&,2,"Rückseite")
TabPage2& = CONTROL("DIALOG","", $40081003,2,25,WIDTH(TabControl&)-10, HEIGHT(TabControl&)-30,TabControl&,0,%HINSTANCE)
SHOWWINDOW(TabPage2&,0)
LastTab& = TabPage1&
RICHEDIT1& = CREATE("RICHEDIT",TabPage1&,"",2,0,425,-235)
RICHEDIT2& = CREATE("RICHEDIT",TabPage2&,"",2,0,425,-235)
SHOWWINDOW(LastTab&,1)
'-------------------------------------------
GRIDBOX1& = create("GridBox",%HWND,"lfd. Nr.;0;50;von;2;65;bis;2;65",3,032,145,175,280)
SETFOCUS(%HWND)
REPAINT 0
ENDE& = 0

WHILENOT ENDE&

    WAITINPUT

    If %KEY=2

        ENDE&= 1

    ElseIf @TABCHANGED(TabControl&)

        SHOWWINDOW(LastTab&,0)

        If GETACTIVETAB(TabControl&) = 0

            LastTab& = TabPage1&

        ElseIf GETACTIVETAB(TabControl&) = 1

            LastTab& = TabPage2&

        EndIf

        SHOWWINDOW(LastTab&,1)
        SETFOCUS(TabControl&)

    EndIf

EndWhile

DeleteObject STATICBITMAP1&
end

Gruß aus der Heide
Manfred
 
Zu wenig Wissen ist gefärlich, zu viel auch.(XProfan X4) | Win 10 Pro 64 | Win7 Ultimate 32/64 | AMD FX-8320, 16GB, GeForce GT 630 |
05.10.2010  
 



 
- Seite 1 -


Bei stürzt das Programm gleich ab weil im Code steht:
KompilierenMarkierenSeparieren
STATICBITMAP1& = CREATE("HPIC",-1,"D:PROGRAMMEXPROFAN11EIGENE_PROGRAMMEKARTEIKARTENBMPKARTEN_TEXTUR.PNG")
aber die Datei nicht vorhanden ist (geschweige vom Laufwerk ^^) -

wenn ich aber:
KompilierenMarkierenSeparieren
STATICBITMAP1& = CREATE("hNewPic",%maxx,%maxy,$FF7733)
schreibe funktionierts wunderbar und unter Win7 habe ich hier auch keine Anzeigeprobleme bzw. es wird alles korrekt gezeichnet.

(jetzt wiederum kein XP zur Hand...)
 
06.10.2010  
 




Thomas
Freier
Du versteht es nicht. Er möchte gerne - warum auch immer- nicht : DrawPic STATICBITMAP1&,0 ,0 ;0
sondern : hbild& = Create("BITMAP",%HWND,STATICBITMAP1&,0000,0000)

Da ist das Tab-Control nicht mehr im Vordergrund im Gegensatz zur Gridbox und nun möchte Manfred wissen, warum das so ist.
Muß er wohl mit DrawPic hinnehmen oder das Tab-Control auf hbild& legen.
 
Gruß Thomas
Windows XP SP2, XProfan X2
06.10.2010  
 




E.T.
Da reagieren einige Elemente recht unterschiedlich:
ein @CONTROL("DIALOG",... liegt auch im Hintergrund,
ein @Create("Button,%HWnd,... liegt im Vordergrund

Zitat: ...oder das Tab-Control auf hbild& legen.

In der Hilfe steht dazu:
"Hinweis; Wenn Dialogelemente auf dieser Bitmap liegen sollen, so ist bei ihnen trotzdem das Handle des übergeordneten Dialoges/Fensers anzugeben und nicht das des Bitmap-Controls. Damit wird gewährleistet, daß die Buttons, etc. wie gewohnt reagieren."

Also soll es ja so gemacht werden, wie es Manfred im Bsp. aufzeigt !

Eine Vereinheitlichung der Elemente in XProfan, so das dann auch alle Elemente im Vordergrund liegen, würde ich da für angebracht halten...
 
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
06.10.2010  
 



Mal mit einem Canvas [...]  probiert?
 
06.10.2010  
 




Manfred
Barei
Hallo iF,

wenn Du dir den Code genauer durchgelesen hättest dann hättest Du gesehen das ich über der Zeile mit dem STATICBITMAP1& einen Kommentar eingefügt habe in dem steht das mann ein eigenes Bild auswählen soll.

Wie Thomas richtig erkannt hat brauche ich es mit Create("BITMAP" und nicht mit DrawPic weil das nicht so Funktioniert wie ich es brauche

iF, ich habe das mit dem Canvas noch nicht so ganz verstanden aber ich werde es damit einmal probieren.

Fals noch jemand eine andere möglichkeit hatt, ich bin mit fast allem einverstanden, ich muß es nur verstehen.

Gruß
Manfred
 
Zu wenig Wissen ist gefärlich, zu viel auch.(XProfan X4) | Win 10 Pro 64 | Win7 Ultimate 32/64 | AMD FX-8320, 16GB, GeForce GT 630 |
06.10.2010  
 




wenn Du dir den Code genauer durchgelesen hättest dann hättest Du gesehen das ich über der Zeile mit dem STATICBITMAP1& einen Kommentar eingefügt habe in dem steht das mann ein eigenes Bild auswählen soll.


Jetzt biste ungerecht. Ich habe den Code durchaus genau angesehen und _deshalb auch erkannt das im Gegensatz zum Code im Phorum hPic statt Bitmap angewandt wird - also ein "Bild" statt ein Control und Du schreibst oben ja auch "ein Bild als Hintergrund" und nicht ein Bitmap-Static. Mein hNewPic-Hinweis war doch ein Tip wie das Beispiel hätte einfacher aussehen können.

"Wenn ich auf dem Hauptfenster ein Bild als Hintergrund lege" - steht im Eingangsposting und dies war für mich auch "schlüssig" weil Bitmaps ja scheinbar dem TabControl kein Neuzeichnen senden (was ich aber höchstens vermute).

Drum hatte ich Thomas auch nicht verstanden mit "Du versteht es nicht. Er möchte gerne - warum auch immer- nicht : DrawPic", denn das Eingangsposting weicht in Code und Text von dem Bitmap-Posting hin zum hPic-Posting ab.

Ist aber "wurscht" - wir finden schon einen Code der passt.

Was genau willst Du letztendlich erreichen? Das das Hintergrundbild auch einfach _nachträglich geändert werden kann? Wenn nicht dann wäre doch das hPic-Zeichnen auf hWnd optimal und man könnte auch mal Canvas auf DLG probieren.

Solch ein Canvas wie von der canvas.inc hergebildet kennt 2 "Modi". Der erste Modi bedeutet soviel wie "Subclasse mir Control/ Dialog XYZ und zeichne mir darauf ein hPic welches man ständig auch ändern kann wie man will einfach per auf-hPic-Zeichnen".

Der zweite Modi ((wenn mehr als 1 Param angegeben bei create) erzeugt ein Static in angegebener Größe und legt darauf ein hPic welches man ständig auch ändern kann wie man will einfach per auf-hPic-Zeichnen.

So könnte man sagen Modi2 ist wie ein Bitmap-Static mit dem Unterschied auch nachträglich einfach darauf zeichnen zu können ohne Flimmern etc., Modi1 zeichnet halt auf einem beliebigen Control solch hPic.

Könnte man sagen canvas um "hPic an Control kleben ohne selbst um Neuzeichnen kümmern zu müssen".
 
07.10.2010  
 




E.T.
Zitat: "..."hPic an Control kleben ohne selbst um Neuzeichnen kümmern zu müssen"

Das muss ich wohl doch auch gleich (also wenn Zeit ist...) mal ausprobieren....

Aber das irgendwelche Elemente in Xprofan "vorn" oder "hinten" liegen (vom Bild aus gesehen), sollte doch vereinheitlicht werden (Ah, Wunsch eingeben...).
Ich hatte kürzlich auch erstaunt geschaut, als mein "änderbares Hintergrundbild" beim erzeugen und sichtbar machen eines (@Control(...)-Statics einfach nicht in den Hintergrund wollte...
 
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
07.10.2010  
 



Man darf halt nicht annehmen dass die Z-Achse sich auch in jedem Fall optisch auswirkt - wenn ein hintenliegendes Control zeichnet und nicht an vordere Controls das Neuzeichnen anweist oder Sektionen als "beschädigt" markiert dann ist natürlich das hintenliegende Control optisch vorn. ^^
 
07.10.2010  
 




E.T.
Also XProfan mit 3D-Brille (zumindest beim testen - Intepreter), damit man sieht, wenn oben vorn und hinten links ist ... Hihi
 
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
07.10.2010  
 



Man kann ja auch einen Button auf ne Listbox legen und diese ListBox auf ne ChoiceBox und diese ChoiceBox auf ein Static - Anzegefehler produzieren kann ja nicht das Thema sein. ^^
 
07.10.2010  
 




Manfred
Barei
Hallo iF,

Entschuldige bitte, ich habe mich wohl falsch ausgedrückt.
Ich brauche das Bild als statisches (nicht veränderliches) Control, damit ich mich nicht um das neu Zeichnen kümmern muß.

Gruß
 
Zu wenig Wissen ist gefärlich, zu viel auch.(XProfan X4) | Win 10 Pro 64 | Win7 Ultimate 32/64 | AMD FX-8320, 16GB, GeForce GT 630 |
07.10.2010  
 



 
- Seite 2 -


Kein Problem und verstehe ich richtig, dass Du dies eben für Dialoge möchtest weils auf dem hWnd ja eh kein Problem ist/ wäre einfach ein hPic zu zeichnen?
 
07.10.2010  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

8.538 Betrachtungen

Unbenanntvor 0 min.
Rainer Hoefs02.07.2015
Georg Teles15.05.2014
H.Brill06.04.2014
Axel Berse20.02.2013

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