MFC mit Win32API mischen?
-
Hi,
ich versuch schon seit stunden MFC und Win32API zu mischen funzt gelegentlich auch super! Aber bei der GDI isses aus...
Wie nennen sich diese Struktur und diese Funktion bei der MFC?
HDC hdc;
hdc.GetDC(this->m_hWnd);
-
CDC heißt die DC Klasse. Gibt aber noch Spezialversionen davon.
-
-
kewl danke!
hab aber noch ne frage:
cdc.GetDeviceCaps(0); bitmapdc.CreateCompatibleDC(&cdc); ReleaseDC(&cdc);
In einer der Beiden obersten Zeilen schmiert mein Programm ab, wieso?
[ Dieser Beitrag wurde am 12.01.2003 um 17:43 Uhr von Ikari editiert. ]
[ Dieser Beitrag wurde am 12.01.2003 um 17:43 Uhr von Ikari editiert. ]
-
Der Spruch in deiner Sig gefällt mir *gg*
-
Wie wärs, wenn du uns die richtige Zeile raussuchen könntest. Das wirst ja wohl noch schaffen.
Und was heißt bei dir "abschmieren"?
-
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.