3
我想重拍我的一些舊項目的支持Aero玻璃。雖然啓用玻璃框架很容易,但我遇到了一些主要問題。我用這個代碼:問題與Aero玻璃在Delphi 7個應用程序
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;
所以我現在拿到了漂亮的玻璃櫥窗。由於黑色現在是透明的顏色(有點愚蠢的選擇,爲什麼它不是粉紅色),所有的黑色變得透明。它意味着所有的標籤,編輯,按鈕文本...即使我在設計時將文本設置爲其他顏色,DWM仍然使它們變得顏色透明。
好吧,我的問題是 - 是否有可能以某種方式解決這個問題?
人們有時會說:「如果不破它的所有好東西,不解決它」。 但也許是時候繼續前進。我查一下2010年 THX的試用版;) – Cralias 2010-05-19 17:46:32
然而,在Vista +實在是有點破 – 2010-05-19 20:40:19
@Gerry:「* *這是一個有點壞了......」誰「它」?德爾福7或德爾福2007?我想我是在我的回答清楚... – 2010-05-20 06:50:58