C# Vista Command Link Control with Windows Forms
using System;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Drawing;
using System.ComponentModel;namespace Vista.Controls
{
public class CommandLink : Button
{
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
unsafe static extern IntPtr SendMessage(HandleRef hWnd, uint Msg, void* wParam, void* lParam); const int BS_CENTER = 0x00000300;
const int BS_COMMANDLINK = 0x0000000E;
const int BS_DEFCOMMANDLINK = 0x0000000F; const uint BCM_SETNOTE = 0x00001609;
const uint BCM_GETNOTE = 0x0000160A;
const uint BCM_GETNOTELENGTH = 0x0000160B;
const uint BCM_SETSHIELD = 0x0000160C; public XButton()
{
//this.FlatStyle = FlatStyle.System;
} protected override Size DefaultSize
{
get
{
return new Size(, );
}
} protected override CreateParams CreateParams
{
get
{
CreateParams cParams = base.CreateParams;
cParams.Style |= BS_COMMANDLINK;
return cParams;
}
} private bool _shield = false; [Category("Command Link"),
Description("Gets or sets the shield icon visibility of the command link."),
DefaultValue(false)]
public unsafe bool Shield
{
get
{
return _shield;
}
set
{
_shield = value;
SendMessage(new HandleRef(this, Handle), BCM_SETSHIELD, null, &value);
}
} [Category("Command Link"),
Description("Gets or sets the note text of the command link."),
DefaultValue("")]
public string Note
{
get
{
return GetNoteText();
}
set
{
SetNoteText(value);
}
} private unsafe void SetNoteText(string value)
{
fixed (char* lpStr = value)
{
SendMessage(new HandleRef(this, Handle), BCM_SETNOTE, null, lpStr);
}
} private unsafe string GetNoteText()
{
int dwLength = (int)SendMessage(new HandleRef(this, Handle), BCM_GETNOTELENGTH, null, null) + ;
char* lpStr = stackalloc char[dwLength];
SendMessage(new HandleRef(this, Handle), BCM_GETNOTE, &dwLength, lpStr);
return new string(lpStr);
} }
}
C# Vista Command Link Control with Windows Forms的更多相关文章
- Windows Forms (一)
导读 1.什么是 Windows Forms 2.需要学Windows Forms 么? 3.如何手写一个简单的Windows Forms 程序 4.对上面程序的说明 5.Form 类与Control ...
- Windows Forms编程实战学习:第三章 菜单
第三章 菜单 1,控件和容器 所有的Windows Forms控件都是从System.Windows.Forms.Control类继承的,相关类的层次结构如下图所示: MarshalByRefObje ...
- “FormCRUD.csProj.FormMain.Name”隐藏了继承的成员“System.Windows.Forms.Control.Name”。如果是有意隐藏,请使用关键字 new。
一旦运行就显示:“FormCRUD.csProj.FormMain.Name”隐藏了继承的成员“System.Windows.Forms.Control.Name”.如果是有意隐藏,请使用关键字 ne ...
- System.Windows.Forms.Control : Component, IOleControl, IOleObject, IOleInPlaceObject, IOleInPlaceActiveObject....
#region 程序集 System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ...
- System.Windows.Forms.ListView : Control
#region 程序集 System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ...
- System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false
多线程程序中,新创建的线程不能访问UI线程创建的窗口控件,这时如果想要访问窗口的控件,发现无法对其控制. 这时可将窗口构造函数中的CheckForIllegalCrossThreadCalls设置为f ...
- create Context Menu in Windows Forms application using C# z
In this article let us see how to create Context Menu in Windows Forms application using C# Introduc ...
- Wizard Framework:一个自己开发的基于Windows Forms的向导开发框架
最近因项目需要,我自己设计开发了一个基于Windows Forms的向导开发框架,目前我已经将其开源,并发布了一个NuGet安装包.比较囧的一件事是,当我发布了NuGet安装包以后,发现原来已经有一个 ...
- Double Buffering Windows Forms
Double Buffering Windows Forms As much as we would like it not to be the case, graphics can be slow ...
随机推荐
- Android框架之Volley与Glide
PS:在看到这个题目的同时,你们估计会想,Volley与Glide怎么拿来一块说呢,他们虽然不是一个框架,但有着相同功能,那就是图片处理方面.首先我们先来看一下什么volley,又什么是glide. ...
- 关于如何通过kali linux 攻击以及破解WPA/WPA2无线加密
http://blog.csdn.net/wingstudio_zongheng/article/details/51435212 1.前期准备 1)打开一个终端 执行命令: ifconfig ...
- COSO企业风险管理框架2017版发布!看看有哪些变化?
近期,COSO发布了新版(2017版)的企业风险管理框架:<企业风险管理—与战略和业绩的整合>.相较于2004年发布的上一版框架<企业风险管理—整合框架>,新框架强调了制定战略 ...
- 下载网易云VIP音乐
有偿帮助.联系方式在个人信息里.
- Ocelot中文文档-转换Claims
Ocelot允许用户访问claims并把它们转换到头部,请求字符串参数和其他claims中.这仅在用户通过身份验证后才可用. 用户通过身份验证之后,我们运行claims转换中间件.这个中间件允许在授权 ...
- 日常踩坑笔记:spring的context:property-placeholder标签
背景: 原来的项目一直跑着没有问题,今天突然想在原有项目的基础上,加上redis进行数据的缓存,原来项目的架构就是传统的SSM框架,于是,大刀阔斧的开始改装了... 编写redis的配置文件——red ...
- 通过Django Channels设计聊天机器人WEB框架
这两个月都在忙着设计针对银联客服业务的智能聊天机器人,上一周已经交完设计报告,这一周还和部门同事一起分享了系统设计及运行效果.因为时间的关系,系统原型我使用了Flask+jQuery的组合,感觉用以原 ...
- OCR智能识别身份信息
本人研究了两款OCR智能识别的API,下面做详解! 第一款是百度云的OCR识别,填写配置信息,每天有五百次免费的识别次数,适合中小型客户流量可以使用.API文档:http://ai.baidu.com ...
- java.util.logging的使用
秉承着某种执念我今天决定不用Logback而是和Java的logging肛到底,现在总结一下研究成果: 日志等级 日志等级有七种,severe,warning,info,fine,finer,fine ...
- cocos2d-x_ Windows下Android环境搭建
在Windows环境下编译cocos2d-x-3.0 Android-NDK编译:cocos2d-x(二) Mac 下搭建:http://www.cocoachina.com/bbs/read.php ...