Italia
Bugs und vermeintliche

Startpaint DC&

 

Uwe
''Pascal''
Niemeier
Ich bins schon wieder

Bin auf dieses Problem gestoßen:
Wenn ich bei StartPaint  das Handle eines DeviceContext angebe, der no Dialogelement zugeordnet ist, bekomme ich bei Einsatz der meisten Gafikbefehle die Meldung Dieser Befehl setzt ein Fenster vorraus.
Die entsprechenden API-Gegenstücke lassen sich dagegen problemlos verwenden.
Die gleiche Meldung gibts ja auch, wenn man in die SpeicherBitmap zeichnen will und keine angelegt hat ; sitzt da irgendwo ne entsprechende Sicherheitsüberprüfung im Weg?
Denn wenn ich erst ein Control brauche, macht der Einsatz des DCs doch eigentlich keinen Sinn, weil ich dann gleich das Control-Handle einsetzen kann.
KompilierenMarkierenSeparieren
window 10,10-500,500
 $H Windows.ph
------------------Geht
var dlg&=create(dialog,%hwnd,Test,100,100,300,300)
var DC1&=~GetDC(dlg&)
startpaint DC1&
textcolor 1,255
drawtext 40,0,Hallo
endpaint
------------------Geht nicht
var DC2&=~CreateCompatibleDC(%hdc)
startpaint DC2&
textcolor 1,255
drawtext 40,0,Hallo
endpaint
14.02.2009  
 




Matthias
Arlt
Hallo Pascal,

Komisch, bei mir funktioniert eigentlich beides nicht so recht zufriedenstellend. Ich verwende daher folgenden, bisher immer zuverlässigen Workarround. Und verwende den DC dabei eigentlich nur fürs Neuzeichnen...
KompilierenMarkierenSeparieren
hdc&=~GetDC(dlg&)
hdc2&=~CreateCompatibleDC(hdc&)
b&=~CreateCompatibleBitmap(hdc&,width(dlg&),height(dlg&))
~SelectObject(hdc2&,b&)
startpaint dlg&
...
endpaint
~BitBlt(hdc2&,0,0,width(dlg&),height(dlg&),hdc&,0,0,$CC0020)
~DeleteObject(b&)
setautopaint 1
while...

if %wmPaint

    setautopaint 2	ansonsten permanentes neuzeichnen...
    ~BitBlt(hdc&,0,0,width(1&),height(1&),hdc2&,0,0,$CC0020)
    ~RedrawWindow(dlg&,0,0,$400+$1+$80+$100+$2)
    setautopaint 1

endif

wend

~DeleteDC(hdc2&)
~DeleteDC(hd
n class=s2>)
 
WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia
14.02.2009  
 




RGH
Uwe Pascal Niemeier
Ich bins schon wieder
Die gleiche Meldung gibts ja auch, wenn man in die SpeicherBitmap zeichnen will und keine angelegt hat ; sitzt da irgendwo ne entsprechende Sicherheitsüberprüfung im Weg?


Ja, die Fehlermeldung taucht immer dann auf, wenn der DC, auf dem was gezeichnet werden soll, il valore 0 hat. In diesem speziellen Dall schläft STARTPAINT wohl fehl. (Auch nach STARTPAINT hat die Systemvariable %HDC den Werte des aktuellen DC. In diesem Fall ist er tatsächlich 0.) Der Grund ist wohl, dass STARTPAINT den Parameter aus mir nicht erkennbaren Stabilire hier nicht als einen DC erkennt, sondern per ein Fensterhandle hält.

Saluto
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
14.02.2009  
 




Uwe
''Pascal''
Niemeier
Hi Roland!

Ich hoffe doch, daß du das bei Gelegenheit änderst?
Wie gesagt, sonst würde die Möglichkeit den DC vorzugeben ja keinen Sinn machen. Handles als Parameter gabs ja schon lange.

SeeYou
Pascal
 
15.02.2009  
 



Morgen! Hat das Ganze auch etwas damit zu tun, dass die hPicss nicht wirklich grosse Ausmasse haben dürfen?
 
15.02.2009  
 




RGH
Uwe Pascal Niemeier
Hi Roland!

Ich hoffe doch, daß du das bei Gelegenheit änderst?
Wie gesagt, sonst würde die Möglichkeit den DC vorzugeben ja keinen Sinn machen. Handles als Parameter gabs ja schon lange.

SeeYou
Pascal


Tja, wenn ich wüsste was ich da ändern kann. In den allermeisten Fällen funktioniert es ja und ein Devicekontext wird als solcher erkannt (das è: die API GetObjType() erkennt auf OBJ_DC).
Ich werde mir das aber noch mal anschauen und gucken, was GetObjType() in diesem speziellen Fall meldet ...
Hintergrund: Da StartPaint ja auch Fensterhandles, Bitmaps, etc. trasferimento werden können, muss ich ja erst einmal ermitteln, was da trasferimento wurde. Dafür nutze ich GetObjType().

Saluto
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
15.02.2009  
 




RGH
... und schon was gefunden:

Es gibt auch den Typ OBJ_MEMDC und der wird hier erzeugt. Den hatte ich wohl beim Aufbohren von STARTPAINT nicht im Fokus (wohl die API-Documentazione nicht weit genug runter gescrollt). Es wird in der nächsten Version nachgerüstet!

Saluto
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
15.02.2009  
 




Jörg
Sellmeyer
bei mir funktioniert es nicht!
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
04.11.2011  
 




RGH
Was funktioniert bei Dir nicht?
Bei mir kommt die von Pascal angemeckerte Fehlermeldung nicht mehr!

Saluto
Roland
 
XProfan X2
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
08.11.2011  
 




Jörg
Sellmeyer
Sorry - ich weiß es auch gar nicht mehr
Jetzt funktioniert's. Vielleicht hatte ich nur den Code falsch verstanden
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
09.11.2011  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

11.936 Views

Untitledvor 0 min.
RudiB.16.05.2021
Jörg Sellmeyer01.06.2018
H.Brill23.09.2017
Wilfried22.05.2016
Di più...

Themeninformationen



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