From afcfde9f7b41619d23f42ad8f499694bb8de0436 Mon Sep 17 00:00:00 2001 From: ttp Date: Sat, 6 Sep 2008 14:34:12 +0000 Subject: [PATCH] =?utf8?q?AppliStation-GUI,ListView=E3=81=AE=E3=81=A1?= =?utf8?q?=E3=82=89=E3=81=A4=E3=81=8D=E9=98=B2=E6=AD=A2=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit ListViewのVistaでのグラデーションのかかった表示をしている際に、非常にちらつきが目立っていた。これをダブルバッファリングするようにSendMessageすることでちらつきを解決した。 git-svn-id: http://localhost/svn/AppliStation/trunk@968 34ed2c89-c49f-4a4b-abdb-c318350108cf --- AppliStation/AppliStation.Util/NativeMethods.cs | 17 +++++++---------- AppliStation/InstallationConfirmForm.cs | 1 + AppliStation/PackageListViewForm.cs | 1 + 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/AppliStation/AppliStation.Util/NativeMethods.cs b/AppliStation/AppliStation.Util/NativeMethods.cs index b56ce38..36481b0 100644 --- a/AppliStation/AppliStation.Util/NativeMethods.cs +++ b/AppliStation/AppliStation.Util/NativeMethods.cs @@ -105,29 +105,26 @@ namespace AppliStation.Util #region ListView関連 - #region 選択の半透明(コメント) - /* /// - /// マウスでの選択に半透明ツールを採用する + /// リストビューにダブルバッファでの描画をするか否かを設定する /// + /// マウスでの選択に半透明ツールを採用するか否かもこの設定に依存 /// 対象のリストビュー - public static void ListView_EnableDoubleBuffer(ListView listView) + /// ダブルバッファでの描画をするときtrue + public static void ListView_SetDoubleBuffer(ListView listView, bool bEnable) { try { - // SendMessage(listView.Handle, LVM_SETEXTENDEDLISTVIEWSTYLE, LVS_EX_DOUBLEBUFFER, LVS_EX_DOUBLEBUFFER); - SendMessage(listView.Handle, 0x1036, 0x00010000, 0x00010000); + // SendMessage(listView.Handle, LVM_SETEXTENDEDLISTVIEWSTYLE, LVS_EX_DOUBLEBUFFER, bEnable? LVS_EX_DOUBLEBUFFER:0); + SendMessage(listView.Handle, 0x1036, 0x00010000, ((bEnable)? 0x00010000u:0x0u)); } catch (Exception) { } } - */ - #endregion /// /// 選択されたアイテムの部分の背景にグラデーションがかかった感じになる、 /// Vista以降でのエクスプローラの見た目をListViewに反映させる。 - /// - /// なお、Vista未満のバージョンでは何もしない。 /// + /// Vista未満のバージョンでは何もしない。 /// 対象のListView public static void ListView_EnableVistaExplorerTheme(ListView listView) { diff --git a/AppliStation/InstallationConfirmForm.cs b/AppliStation/InstallationConfirmForm.cs index 02dcdd7..9cc7f04 100644 --- a/AppliStation/InstallationConfirmForm.cs +++ b/AppliStation/InstallationConfirmForm.cs @@ -54,6 +54,7 @@ namespace AppliStation runasCheckBox.Visible = false; } AppliStation.Util.NativeMethods.ListView_EnableVistaExplorerTheme(instsListView); + AppliStation.Util.NativeMethods.ListView_SetDoubleBuffer(instsListView, true); } /// diff --git a/AppliStation/PackageListViewForm.cs b/AppliStation/PackageListViewForm.cs index 4b5dfaa..3736ba3 100644 --- a/AppliStation/PackageListViewForm.cs +++ b/AppliStation/PackageListViewForm.cs @@ -29,6 +29,7 @@ namespace AppliStation this.Icon = Icon.ExtractAssociatedIcon(Application.ExecutablePath); AppliStation.Util.NativeMethods.ListView_EnableVistaExplorerTheme(packageListView); + AppliStation.Util.NativeMethods.ListView_SetDoubleBuffer(packageListView, true); } private void ShowInfoToDetailBoxFor(Package pkg) -- 2.11.0