MFC C++ projesinde DEBUG modda sorunsuz derleyebiliyorken RELEASE modda “Please use the /MD switch for _AFXDLL builds” hatasi aliyorsaniz: Project Properties -> Configuration Properties -> C/C++ -> Code Generation -> Runtime Library ayarini Multi-threaded DLL (/MD) olarak degistirip oyle deneyin.
Aslinda tum olay MFC projesinde GDI+ kullanmayla basladi. GDI+ kullanmaya basladiginizda Gdiplus::GdiplusStartup, isiniz bittiginde Gdiplus::GdiplusShutdown fonksiyonlarini cagirmalisiniz. Projede devamli GDI+ kullandigim icin InitInstance() icinde start, ExitInstance() icinde stop yaptim. //////////////////////////////////////////////////////////////////////////// // GDI+ Start Stop functions ULONG_PTR gdiplusToken; Gdiplus::GdiplusStartupInput gdiplusStartupInput; Gdiplus::GdiplusStartupOutput gdiplusStartupOutput; BOOL StartGdiPlus() { if (Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL)) { MessageBox(NULL, TEXT(“GDI+ failed to start up!”), TEXT(“Error!”), MB_ICONERROR); return FALSE; } return TRUE; } void StopGdiPlus() { Gdiplus::GdiplusShutdown(gdiplusToken); } //////////////////////////////////////////////////////////////////////////// // CActivexApp::InitInstance – DLL initialization BOOL CActivexApp::InitInstance() { BOOL bInit = COleControlModule::InitInstance(); if (bInit) { […]
Pointer i eger asagidaki gibi loop bittikten sonra sileyim derseniz cok fena yanilirsiniz. Memory siser, siser, siser. Eger GDI object ise cok beklemenize de gerek kalmaz 🙂 Yanlis Brush* brush; for (int i = 0; i < 100; i++) { brush = new Brush(Color.Red, 1.0f); } delete brush; Dogrusu pointer i her kullanimdan sonra, […]
Recent Comments