.Net Compact Framework 小技巧(1)

本文介绍如何通过调用API隐藏Form上的OK/X按钮,并提供隐藏及重新显示的方法。

在开发过程中都会遇到一些小小的问题,可能这个问题看似简单,但处理起来就相当的麻烦也说不定.
我将一些自己开发中的小技巧写出来告诉给大家,希望大家有所帮助.

这篇文章中将介绍如何隐藏起Form右上角的OK/X按钮,有时候用户觉得不需要这个按钮,那去掉它吧~~~~

再次介绍下该按钮的功能,X表示最小化,OK表示确认并关闭.通常新建一个Form后,默认窗体的最小化是True,所以如果需要显示OK的话,就需要将该属性设为False.

隐藏该按钮需要调用3个API

1  [DllImport( " aygshell.dll " )]
2  private   static   extern   bool  SHDoneButton(IntPtr hWnd, UInt32 dwState);
3 
4  [DllImport( " coredll.dll " )]
5  public   static   extern  UInt32 SetWindowLong(IntPtr hWnd,  int  nIndex, UInt32 dwNewLong);
6 
7  [DllImport( " coredll.dll " )]
8  public   static   extern  UInt32 GetWindowLong(IntPtr hWnd,  int  nIndex);


SHDoneButton--窗体为OK时,调用此方法即可.
GetWindowLong--获得指定窗口的信息
SetWindowLong--设置指定窗口的信息,这2个方法结合起来用,才能隐藏X按钮

具体使用

 1  public   const  UInt32 SHDB_SHOW  =   0x0001 ;
 2  public   const  UInt32 SHDB_HIDE  =   0x0002 ;
 3  public   const   int  GWL_STYLE  =   - 16 ;
 4  public   const  UInt32 WS_NONAVDONEBUTTON  =   0x00010000 ;
 5 
 6  ///   <summary>
 7  ///  隐藏OK按钮
 8  ///   </summary>
 9  ///   <param name="hWnd"></param>
10  public   static   void  HideDoneButton(IntPtr hWnd)
11  {
12      SHDoneButton(hWnd, SHDB_HIDE);
13  }
14 
15  ///   <summary>
16  ///  隐藏X按钮
17  ///   </summary>
18  ///   <param name="hWnd"></param>
19  public   static   void  HideXButton(IntPtr hWnd)
20  {
21      UInt32 dwStyle  =  GetWindowLong(hWnd, GWL_STYLE);
22 
23       if  ((dwStyle  &  WS_NONAVDONEBUTTON)  ==   0 )
24          SetWindowLong(hWnd, GWL_STYLE, dwStyle  |  WS_NONAVDONEBUTTON);
25  }


在实际调用时,只要将窗体的Handle作为参数传入即可.

隐藏按钮后,如何打开?
只需要设置窗体的MinimizeBox属性即可.想显示OK,设为False.想显示X,设为True即可.

显示效果:
显示OK按钮


显示X按钮

隐藏按钮

代码下载:DeviceTechDemo.rar

运行环境:VS2008 + WM6.0 + .net cf3.5

Author:AppleSeeker(冯峰)
Date:2009-2-2

文章导读:移动开发索引贴

转载于:https://www.cnblogs.com/appleseeker/archive/2009/02/02/1382583.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值