Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Problem mit Crgn::getregiondata()

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
27.02.2004, 14:28 Uhr
Philipp



Hallo Leute,

hab ein Problem mit der Funktion CRgn::GetRegionData(...)!
Ich übergebe ihr im Moment ein ganz normales RGNDATA-Objekt, und einen Integer, was ja auch richtig sein sollte.

Meine Frage ist nur : Wie muss der Integer beschaffen sein, damit die Funktion funktionert? So wie ich das bis jetzt verstanden habe, muss der einen festen Wert haben, aber welcher Wert ist das und wie bekomme ich den heraus??

Denn im Moment liefert die Funktion entweder Fehler zurück, oder das Programm stürzt kurz nach der Funktion ab. Wenn ich die Stelle wo diese Funktion benutzt wird ausklammere, dann läuft alles einwandfrei.

P.S. Habe meine Frage auch unter www.c-plusplus.de/forum/viewtopic.php?t=66301&start=0&postdays=0&postorder=asc&highlight=
gepostet, aber da will mir anscheinend niemand helfen

Philipp
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.02.2004, 14:49 Uhr
mike
Pinguinhüpfer
(Operator)


Dein PS ist nicht gerade höflich
MSDN ist dein Freund:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_mfc_crgn.3a3a.getregiondata.asp

Zitat:

nCount
Specifies the size, in bytes, of the lpRgnData buffer.


mfg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.02.2004, 18:29 Uhr
Philipp




Zitat:

Dein PS ist nicht gerade höflich



Ich weiß, aber ich hab da jetzt 3x ne Frage gestellt und keine Antwort bekommen, das finde ich schon was traurig, hab irgendwie den Eindruck dass es da "früher" besser war.

Wollte trotzdem editieren, kann ich aber aufgrund des Zeitlimits net mehr!


Zitat:

nCount
Specifies the size, in bytes, of the lpRgnData buffer.


Ja, das hatte ich auch schon gesehen. Sollte das also so gehen?


C++:
class SmallShape
{
//[...]
public:
RGNDATA *TriData;



C++:
int SmallShape::TriangleApproach(int Precision)
{
//[...]
if(FullRgn.GetRegionData(TriData,sizeof(TriData))==0)
            AfxMessageBox("GetRegionData failed!");


Genau an der Stelle zeigt er immer das Dialogfeld an, d.h. die Funktion schlägt fehl! Kann es jetzt sein, dass mein Fehler nicht bei der Übergabe des Integers liegt, sondern dass meine Region "FullRgn" falsch erstellt wurde??

Hab btw. auch andere Methoden probiert, also ne lokale RGNDATA-Struktur, und dann mit sizeof() probiert, aber auch das schlägt fehl...

Thx
Philipp
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.02.2004, 19:31 Uhr
mike
Pinguinhüpfer
(Operator)


www.codeproject.com/gdi/rgnguide.asp?target=%2EGetRegionData
www.codeproject.com/gdi/regtool.asp?target=%2EGetRegionData
www.codeproject.com/directx/chitchecker.asp?target=%2EGetRegionData
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
27.02.2004, 20:33 Uhr
Philipp



Ja, das hatte ich mir auch schon verher per google.de angeschaut

Vielleicht denkst du, ich hätte nicht das Hintergrundwissen, aber ich habe mich schon bestmöglich informiert. Klar bin ich kein Profi, aber die Informationsquellen die ich habe habe ich auch genutzt(Bücher, google, MSDN, Foren...).

Mein Problem ist:

Die Fkt. GetRegionData gibt mir "NULLREGION" zurück, obwohl das dazugehörige CRgn Objekt defenitiv keine ist! Wenn ich dieses Objekt nämlich zeichne, wird es auch korrekt gezeichnet! D.h. die Daten sind korrekt in der Region drin! Das PRoblem ist nur, ich zeichne dann die Region direkt in der Funktion, in der sie erstellt wird, nicht aber in OnDraw! Und damit ich jetzt die Region nach OnDraw bekomme, habe ich ne globale RGNDATA Struktur angelegt, die ich halt mit Daten füllen will, was aber halt net funktioniert.

Würde übrigends lieber meiner Klasse(SampleClass) ein CRgn Objekt verpassen, aber das funzt net weil ich die Klasse in nem stl-vektor speicher, und der nen kopier/= operator braucht!

Hilft dir das weiter?

PHilipp
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
27.02.2004, 21:17 Uhr
mike
Pinguinhüpfer
(Operator)


Leider nicht. Ich hab mich mit der GDI noch nie beschäftigt. Imho passiert sowas nur, wenn das struct einen Fehler hat. Aber wenn du die Samples von cp auch schon durch hast, weiß ich auch nicht mehr weiter - Sorry.

mfg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
28.02.2004, 18:13 Uhr
Philipp



Juuuhhuuuu ich habs

Hab mir jetzt beholfen, indem ich nicht mehr nur MFC, sondern auch normale Win32API benutze! Ich benutze zum speichern meiner Regionen nun nicht mehr CRgn 's, sondern HRGN's Das klappt nämlich "lustigerweise"...

Somit brauch ich auch jetzt kein GetRegionData mehr... Ist zwar etwas mehr Aufwand das zu zeichnen, von wegen umwandeln des DeviceContexts, aber es geht schonmal...

Nochmal vielen Dank für deine/eure Hilfe

Philipp
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: