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 はそれらをその色と透明にします。
さて、私の質問は、どうにかしてこれを解決できるかどうかです。