Windows mobile 的鼠标状态控制
很多人都会遇到一个问题,当我们执行一个复杂的操作是,界面会卡住。用户体验会感觉不好。那如果可以添加一个鼠标的忙碌状态的话就会好很多了。
以下是很简单的代码,用于控制鼠标的状态。
1 public static class Cursor
2 {
3 [DllImport("coredll.dll")]
4 public static extern IntPtr LoadCursor(IntPtr hInstance, CursorType lpCursorName);
5 [DllImport("coredll.dll")]
6 public static extern IntPtr SetCursor(IntPtr pCursor);
7
8 public delegate void doing();
9
10 public enum CursorType : uint
11 {
12 IDC_ARROW = 32512U,
13 IDC_WAIT = 32514U
14 }
15
16 public static void Wait(){
17 SetCursor(LoadCursor(IntPtr.Zero, CursorType.IDC_WAIT));
18 }
19
20 public static void Default()
21 {
22 SetCursor(LoadCursor(IntPtr.Zero, CursorType.IDC_ARROW));
23 }
24
25 public static void DoSomething(doing something)
26 {
27 Wait();
28 something();
29 Default();
30 }
31
32 }
3 [DllImport("coredll.dll")]
4 public static extern IntPtr LoadCursor(IntPtr hInstance, CursorType lpCursorName);
5 [DllImport("coredll.dll")]
6 public static extern IntPtr SetCursor(IntPtr pCursor);
7
8 public delegate void doing();
9
10 public enum CursorType : uint
11 {
12 IDC_ARROW = 32512U,
13 IDC_WAIT = 32514U
14 }
15
16 public static void Wait(){
17 SetCursor(LoadCursor(IntPtr.Zero, CursorType.IDC_WAIT));
18 }
19
20 public static void Default()
21 {
22 SetCursor(LoadCursor(IntPtr.Zero, CursorType.IDC_ARROW));
23 }
24
25 public static void DoSomething(doing something)
26 {
27 Wait();
28 something();
29 Default();
30 }
31
32 }
其实方法很简单,在复杂耗时的操作之前调用Cursor.Wait()方法,在方法执行完之后再调用Cursor.Default()。而每次都要进行这两次操作会比较麻烦,所以我加入了DoSomething方法,用委托去实现,则可以直接调用Curosr. DoSomething(委托)去实现。当然委托还可以自己拓展,用于满足自己程序的需要。

浙公网安备 33010602011771号