如何创建 Windows Mobile 6.5.x 手指友好的股票控件?

Posted

技术标签:

【中文标题】如何创建 Windows Mobile 6.5.x 手指友好的股票控件?【英文标题】:How to create Windows Mobile 6.5.x finger friendly stock controls? 【发布时间】:2011-04-30 01:44:42 【问题描述】:

我正在使用 .NET Compact Framework 3.5 用 C# 开发一个 Windows Mobile 应用程序。我的 WM 目标版本是 6.5.x。我的印象是微软在这个版本的操作系统中更新了库存控件,使其对手指更加友好(更大的字体、列表框中的行之间更大的空间等),但是当我创建例如一个 ListBox 控件时,它看起来和以前版本的操作系统一样(手写笔友好)。

我是否需要更新控件的样式才能利用这些新的手指友好的库存控件?但是,我似乎找不到任何关于此的文档。还是我误解了它;或许 WM 6.5.x 中没有新控件?

【问题讨论】:

【参考方案1】:

您可以通过向列表视图发送LVM_SETEXTENDEDLISTVIEWSTYLE 消息并将掩码和样式设置为LVS_EX_THEME 来获得“新”列表视图项渲染:

var mask = (IntPtr)LVS_EX_THEME;
var style = (IntPtr)LVS_EX_THEME;

SendMessage(this.listView.Handle, LVM_SETEXTENDEDLISTVIEWSTYLE, mask, style);

你会以一种或另一种方式需要这些声明:

[DllImport("coredll.dll", SetLastError = true)]
public static extern Int32 SendMessage(IntPtr hWnd,
                                       Int32 msg,
                                       IntPtr wParam,
                                       IntPtr lParam);

public const Int32
    LVM_FIRST = 0x1000,
    LVM_SETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 54;

public const Int32
    LVS_EX_THEME = 0x02000000;

【讨论】:

感谢 Johann,这对 listview 控件有效(我猜;还没有测试过)。其他控件(例如列表框)呢? @vonolsson:我的猜测是“普通”的 Win32 控件,如列表框,不会得到微软的改造。 在 6.5.x 中有一些列表框(例如,结帐设置 -> 今天)对手指更友好。此外,我希望能够使用新的水平滚动控件(而不是使用旧的选项卡控件)。 @vonolsson:如果您查看 PROPSHEETHEADER 的 6.5.3 文档,您会看到 PSH_PIVOT。如果安装了 Platform Builder for WM,则它是一种私有样式,在 commctrl_priv.h 中定义为 0x4000。

以上是关于如何创建 Windows Mobile 6.5.x 手指友好的股票控件?的主要内容,如果未能解决你的问题,请参考以下文章

Windows Mobile系列学习四:Windows Mobile如何进行打包设置打包显示图标

如何从 C# 动态运行 SQL Server CE [Windows mobile] 中的 SQL 脚本文件?

Windows Mobile:通过资源创建按钮控件?

如何使用命令行在 Windows Mobile 模拟器中重建 .net CF 应用程序和部署

Windows Mobile 模拟器如何设置网络连线

如何在从 Mobile First 7.1 创建的设备上构建和部署 WP8 应用程序?