Der vom Objekt verwaltete Speicher liegt nicht auf dem Stack, egal wo du es anlegst. Kann auch gar nicht, weil die Größe von Stackvariablen zur Compilezeit feststeht. Lass dir mal sizeof(Bitmap) ausgeben, dann siehst du, wieviel Stackspeicher das verbraucht. Die Klasse selbst legt den Speicher für die Daten auf dem Heap an.
Hat er auch, der Code tut nur nicht das, was du erwartest. Der wundersame Komma-Operator wertet seine Operanden aus und gibt den rechten zurück.
Du hast da ein new ohne delete -> Leak.
Vermutet oder geprüft? Soweit ich weiß, kopiert GetHBITMAP die Bilddaten.