Я пытаюсь переделать некоторые из моих старых проектов для поддержки Aero Glass. Хотя включить стеклянную раму довольно просто, я столкнулся с некоторыми серьезными проблемами. Я использовал этот код:
var
xVer: TOSVersionInfo;
hDWM: THandle;
DwmIsCompositionEnabled: function(pbEnabled: BOOL): HRESULT; stdcall;
DwmExtendFrameIntoClientArea: function(hWnd: HWND; const pxMarInset: PRect): HRESULT; stdcall;
bEnabled: BOOL;
xFrame: TRect;
// ...
xVer.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
GetVersionEx(xVer);
if xVer.dwMajorVersion >= 6 then
begin
hDWM := LoadLibrary('dwmapi.dll');
@DwmIsCompositionEnabled := GetProcAddress(hDWM, 'DwmIsCompositionEnabled');
@DwmExtendFrameIntoClientArea := GetProcAddress(hDWM, 'DwmExtendFrameIntoClientArea');
if (@DwmIsCompositionEnabled <> nil) and
(@DwmExtendFrameIntoClientArea <> nil) then
begin
DwmIsCompositionEnabled(@bEnabled);
if bEnabled then
begin
xRect := Rect(-1, -1, -1, -1);
DwmExtendFrameIntoClientArea(FrmMain.Handle, @xRect);
end;
end;
FreeLibrary(hDWM);
end;
Так что теперь у меня есть красивое стеклянное окно. Из-за того, что черный цвет стал прозрачным (глупый выбор, почему он не может быть розовым), все, что является clBlack, тоже становится прозрачным. Это означает, что все надписи, правки, тексты кнопок ... даже если во время разработки я установил для текста какой-либо другой цвет, DWM все равно сделает их таким И прозрачным.
Ну, мой вопрос: можно ли как-нибудь решить это?