是否可以像Xentient Labels
应用程序一样更改Windows资源管理器中项目的背景颜色?在Windows 7中,从Delphi XE2是否可以实现?
由于Windows 7中Windows Explorer的列表视图使用DirectUIHWND
而不是Windows XP中的SysListView32
,因此无法实现此功能。 DirectUIHWND
类控件不会监听列表视图消息,因此您不能像在Windows XP上那样使用ListView_SetTextBkColor
宏更改文本背景颜色。
通过以下简单测试,您可以验证它。让我们在表单上放置一个编辑框和按钮。在该编辑框中输入Windows Explorer的列表视图控件的句柄(例如通过Spy++获取),并在按钮按下时运行以下代码:
uses
Winapi.CommCtrl;
procedure TForm1.Button1Click(Sender: TObject);
var
ListViewHandle: HWND;
begin
ListViewHandle := StrToInt(Edit1.Text);
ListView_SetTextBkColor(ListViewHandle, $0000CCFF);
end;
ListView_SetTextBkColor
宏不是正确的选择。它会改变列表视图中所有项目的背景颜色。但是,在Windows 7 Explorer中,列表视图仍然不会监听列表视图消息,因此在这种情况下没有必要寻找正确的解决方法。 - TLama
在这里
,它在Windows 7中不起作用。您可以找到Windows Explorer列表视图的句柄,并使用最简单的方式ListView_SetTextBkColor
宏。 - TLamaDirectUIHWND
з±»еђЌпјЊдёЌдјљдѕ¦еђ¬е€—иЎЁи§†е›ѕж¶€жЃЇпјЊе› ж¤ењЁWindows 7дёдёЌеЏЇиѓЅгЂ‚ - TLama