A
Okay, der Monolog geht weiter ...
CreateWindowEx() funktioniert jetzt, ohne direkten Fehler:
// see: http://msdn2.microsoft.com/en-us/library/ms683199.aspx
HINSTANCE hInstance = ::GetModuleHandle(L"MyOwnMediaControl");
// see: http://msdn2.microsoft.com/en-us/library/ms632680.aspx
// for layered window see: http://msdn2.microsoft.com/en-us/library/ms997507.aspx
hChild = ::CreateWindowEx( NULL, // DWORD dwExStyle
CAxWindow::GetWndClassName(), // LPCTSTR lpClassName
L"", // LPCTSTR lpWindowName
WS_VISIBLE & ~WS_BORDER, // DWORD dwStyle
0, // int x
0, // int y
400, // int nWidth
300, // int nHeight
NULL, // HWND hWndParent
NULL, // HMENU hMenu
hInstance, // HINSTANCE hInstance
&lParam); // LPVOID lpParam
::ShowWindow(hChild,SW_SHOW);
// Set WS_EX_LAYERED on this window
::SetWindowLong(hChild, GWL_EXSTYLE,
::GetWindowLong(hChild, GWL_EXSTYLE) | WS_EX_LAYERED);
// Make this window 70% alpha
::SetLayeredWindowAttributes(hChild, 0, (255 * 70) / 100, LWA_ALPHA);
Alpha-Blending funktioniert damit schon prima. Allerdings nicht über meinem eigenen DirectShow Video Fenster (ActiveMovieWindow). Über dem Winedows Media Player klappts allerdings. Muss noch rausfinden wo da jetzt der Unterschied ist.
Was noch gar nicht geht ist echte Hintergrund-Transparenz.
Aber ich denke das ist "andere" Probleme die ich in nem neuen Thread behandeln werde (zumindest versuch ich's. Sonst führ ich halt doch wieder einen Monolog).
- Alex