MFC mit Win32API mischen?
-
das ist die zeile
cdc.GetDeviceCaps(0);
und mit Abschmieren meine ich solche Meldung:
Debug Asserton Failed
-
Super. Jetzt sag uns nur noch was in der "Debug Asseratation Failed" - MessageBox steht und wir können dir vielleicht weiterhelfen. Da steht normalerweise ein Dateiname und eine Zeilenangabe.
-
Programm: F:\c++\MFC\0009\programm.exe
File: afxwin1.anl
Line: 531
-
ASSERT(m_hAttribDC != NULL) wird also aufgerufen. Sieht so aus als ob das HDC keine Attribute hat.
-
ich benutz aber CDC und kein HDC *g*
-
Zeig mal die Zeilen davor? Wie hast du das CDC Objekt erstellt?
-
das ist mein Code
CDC hdc, bitmapdc; bitmap=(HBITMAP)LoadImage(GetModuleHandle(0), fileName2, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); hdc.GetDeviceCaps(0); bitmapdc.CreateCompatibleDC(&hdc); ReleaseDC(&hdc); GetObject(bitmap, sizeof(BITMAP), &binfo);
-
Na toll. Du initialisierst das CDC doch nirgendwo. Es ist doch mit garkeinem HDC assoziiert. Wie soll das dann bloß funktionieren?
-
hä? wo issn da HDC? da ist nur CDC?
-
Bevor du die GetDeviceCaps Methode benutzen kannst, muss das CDC Objekt doch mit irgendeinem HDC verbunden sein. Das was du jetzt machst ist.
CDC dc; dc.GetDeviceCaps(0);
So! Und mit welchem HDC ist das CDC Objekt jetzt assoziiert? Guck dir mal die Attach-Methode an. Du mußt dem Objekt erst ein HDC zuweißen. Falls du deinen Code in WM_PAINT ausführst, dann nimm am besten CPaintDC. Dann kannst du nämlich machen: CPaintDC PaintDC(this);
this ist in dem Fall dann ein Zeiger auf das CWnd Objekt.