Liebe Community,
Vielleicht erinnern sich machne, das ich einst schon mal ein Problem mit dieser Funktion hatte, doch nun bin ich auf MFC umgestiegen und stehe vor ähnlichen Verständnisproblemen/Fehlern.
Grundlegend möchte ich mit GDI+ auf ein "Layered" Window zeichnen. Das Programm startet, das Fenster wird erzeugt, doch es wird nicht eingefärbt! Ich denke das ich einfach ihrgentetwas mit den CDC Klassen net raffe
Spoiler anzeigen
C
#include <afxwin.h>
#include <gdiplus.h>
#pragma comment( lib, "gdiplus.lib" )
using namespace Gdiplus;
class FFrameWnd :public CFrameWnd
{
public:
// Konstruktor
FFrameWnd()
{
//Create(NULL,"MFC Tutorial Part 1 CoderSource Window");
// Klasse registrieren
const char *cWndClass;
cWndClass = AfxRegisterWndClass( CS_HREDRAW|CS_VREDRAW , NULL,CreateSolidBrush(RGB(0,0,0)) ,NULL);
// Create Window
CreateEx(WS_EX_LAYERED |WS_EX_TOPMOST /*|WS_EX_TOOLWINDOW*/ ,cWndClass ,_T(""),WS_VISIBLE|WS_POPUP, 0,0,200,200,NULL, NULL, NULL );
ShowWindow(1);
// Blend Structur
BLENDFUNCTION hBlend;
hBlend.BlendFlags = 0;
hBlend.SourceConstantAlpha = 255;
hBlend.AlphaFormat = AC_SRC_ALPHA;
// Start GDI+
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
// Create Graphics and Bitmaps
CDC hScreen = CDC();
CDC hCDC;
hCDC.CreateCompatibleDC(&hScreen);
HBITMAP hBitmap = CreateCompatibleBitmap(hScreen,200,200);
SelectObject(hCDC,hBitmap );
// Draw
Graphics *hGraphics = Graphics::FromHDC(hCDC);
hGraphics->Clear(Color(255,200,200,200));
// Set Position/Size
POINT hPoint = {0, 0}; // Screen Position
SIZE hSize = {200,200}; // Window Size
POINT pptSrc = {0,0}; //
// Display
UpdateLayeredWindow(&hScreen,&hPoint,&hSize,&hCDC,&pptSrc,0,&hBlend,ULW_ALPHA);
}
};
class FWinApp :public CWinApp
{
FFrameWnd *wnd;
public:
BOOL InitInstance()
{
wnd = new FFrameWnd();
m_pMainWnd = wnd;
m_pMainWnd->ShowWindow(1);
return 1;
}
};
FWinApp theApp;
Alles anzeigen
Zusätzliche Links:
UpdateLayeredWindow Example (C++) (das ganze mit der API)
http://msdn.microsoft.com/en-us/library/613c3691.aspx (CWnd::UpdateLayeredWindow MSDN)
Wäre cool, wenn jemand sich das kurz anschauen könnte, den ich verzweifle nun schon nach 3 Tagen stundenlangem googlen und ausprobieren...
Mit freundlichen Grüßen
Faweyr