请问大家, 用 SetClassLong 设置"SHELLDLL_DefView(桌面第二层)"的背景色,为何无效?
procedure TForm_A.Button1Click(Sender: TObject);
var
SysListView32_HWND, SHELLDLL_DefView_HWND : HWND;
myBrush : TBrush;
begin
SHELLDLL_DefView_HWND:=FindWindow('Progman', 'Program Manager');
SHELLDLL_DefView_HWND:=GetWindow(SHELLDLL_DefView_HWND, GW_Child);
SysListView32_HWND:=GetWindow(SHELLDLL_DefView_HWND, GW_Child);
//myBrush:=TBrush.Create;
//myBrush.Color:=clWhite;
SetWindowRgn(SysListView32_HWND, CreateEllipticRgn(800, 600, 50,50), True);
//SetClassLong(SHELLDLL_DefView_HWND, GCL_HBRBACKGROUND, Longint(myBrush)); // 替换与类有关的背景刷子的句柄
SetClassLong(SHELLDLL_DefView_HWND, GCL_HBRBACKGROUND, Longint(GetStockObject(WHITE_BRUSH))); // 替换与类有关的背景刷子的句柄
UpdateWindow(SHELLDLL_DefView_HWND);
//ShowWindow(SHELLDLL_DefView_HWND, SW_Hide);
// Sleep(20);
//ShowWindow(SHELLDLL_DefView_HWND, SW_SHOW);
SetWindowPos(SHELLDLL_DefView_HWND, 0, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE);
end;
我该如何做?