Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Getsafehandle

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
09.08.2002, 14:35 Uhr
virtual
Sexiest Bit alive
(Operator)


Aus der MSDN:

Zitat:

CGdiObject::GetSafeHandle
This method retrieves the m_hObject data member. If this is NULL, then NULL is returned. This is part of the general handle interface paradigm and is useful when NULL is a valid or special value for a handle.


Heisst das, dass die Jungs von MS folgenden Fehler abfangen wollen:

C++:
CGdiObject* [b]poObject = NULL[/b];
HANDLE hObject;
hObject = poObject->getSafeHandle();


Also ich finde, dass ein Methodenaufruf eines Objects, welches NULL ist, verboten gehört. Oder steckt da was wirklich ernsthaftes hinter? Was hat es mit diesem Paradigma auf sich??
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.08.2002, 14:41 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ich glaub die meinen folgendes:


C++:
if(poObject->m_hObject == NULL)
  return NULL;



das Objekt selbst muss initialisiert sein, sonst stürzt ein Methodenaufruf bei mir wegen speicherverletzung ab.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.08.2002, 14:57 Uhr
Tommix



Hallo,
nein das ist schon so, wie virtual schreibt. Der code ist

C++:
_AFXWIN_INLINE HGDIOBJ CGdiObject::GetSafeHandle() const
    { return this == NULL ? NULL : m_hObject; }


Flo's Version wäre ja "doppelt gemoppelt":

C++:
if (x == 0) return 0; else return x;



Im Grunde stellt GetSaveHandle ja so was wie eine Schnittstelle zwischen C- und C++-Programmierung dar und man hat sich hier halt entschieden, die Fehlerkontrolle auf der C-Seite zu lassen (NULL: ungültig). Die MFC sind reich an dererlei Inkonsequenzen. Man muß solche Features ja nicht nutzen, sondern kann genausogut

C++:
if (poObject) handle = poObject->GetSaveHandle(); else handle = NULL;


schreiben, wenn man das für stilvoller hält.

Gruß, Tommix

Dieser Post wurde am 09.08.2002 um 14:58 Uhr von Tommix editiert.
 
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: