ASP.NET网站制作之Winform 多组合老板键Alt_Ctrl_Shift仓酷云
我觉得很重要,一般所说的不重要应该指的是:你学好一种以后再学另一种就很容易了。(因为这样大家可能有一个错觉就是语言不是很重要,只要随便学一种就可以了,其实不是这样的。某天,为了给微博粉丝精灵增添个老板键功效,找一惯的体例,入手下手从收集动手寻觅:关头字相似”C#老板键“,一搜,一堆又一堆,但是出来的代码,基础上都是一个样的:一般来讲,老板键一样平常少不了:Alt+Ctrl+Shift+XX这类多组合体例,但是各种代码就是不间接申明,也没个提醒,看来是成心埋没,终究,仍是被我发明个中的一些不为人知的埋没属性:
上面看一下自己修正自收集罕见的代码:
publicdelegatevoidHotkeyEventHandler(intHotKeyID);
publicclassSystemHotKey:System.Windows.Forms.IMessageFilter
{
List<UInt32>keyIDs=newList<UInt32>();
IntPtrhWnd;
publiceventHotkeyEventHandlerOnHotkey;
publicenumKeyFlags
{
Alt=0x1,
Ctrl=0x2,
Shift=0x4,
Win=0x8,
//组合键即是值相加
Alt_Ctrl=0x3,
Alt_Shift=0x5,
Ctrl_Shift=0x6,
Alt_Ctrl_Shift=0x7
}
publicstaticexternUInt32RegisterHotKey(IntPtrhWnd,UInt32id,UInt32fsModifiers,UInt32vk);
publicstaticexternUInt32UnregisterHotKey(IntPtrhWnd,UInt32id);
publicstaticexternUInt32GlobalAddAtom(StringlpString);
publicstaticexternUInt32GlobalDeleteAtom(UInt32nAtom);
publicSystemHotKey(IntPtrhWnd)
{
this.hWnd=hWnd;
}
publicintRegisterHotkey(KeyFlagskeyflags,System.Windows.Forms.KeysKey)
{
System.Windows.Forms.Application.AddMessageFilter(this);
UInt32hotkeyid=GlobalAddAtom(System.Guid.NewGuid().ToString());
RegisterHotKey((IntPtr)hWnd,hotkeyid,(UInt32)keyflags,(UInt32)Key);
keyIDs.Add(hotkeyid);
return(int)hotkeyid;
}
publicvoidUnregisterHotkeys()
{
if(keyIDs.Count>0)
{
System.Windows.Forms.Application.RemoveMessageFilter(this);
foreach(UInt32keyinkeyIDs)
{
UnregisterHotKey(hWnd,key);
GlobalDeleteAtom(key);
}
keyIDs.Clear();
}
}
publicboolPreFilterMessage(refSystem.Windows.Forms.Messagem)
{
if(m.Msg==0x312)
{
if(OnHotkey!=null)
{
foreach(UInt32keyinkeyIDs)
{
if((UInt32)m.WParam==key)
{
OnHotkey((int)m.WParam);
returntrue;
}
}
}
}
returnfalse;
}
}
以上有几个要点说一下:
1:System.Windows.Forms.Application.AddMessageFilter(this);这句必要对应System.Windows.Forms.Application.RemoveMessageFilter(this);这里用完要记得作废。
因为本来的程序,只在机关函数里增加,以是作废后,再设置就会生效了,这里间接在注册的时分给加上,作废时往失落,注重下这个效果便可。
2:热键的组合:
//组合键即是值相加
Alt_Ctrl=0x3,
Alt_Shift=0x5,
Ctrl_Shift=0x6,
Alt_Ctrl_Shift=0x7
这个是不经意义觉察的,网上的代码都没有提到,估量转的人太多了,晓得的又不写出来。
3:把Hastable变动成List<Unint32>体例。
比来事对照多,写文都对照复杂了,年夜伙包涵了。
2003年中微软发布最新版本的ASP.netWebMatrix,对于我们喜欢用Asp.net来编程的朋友实在是个好消息,我也实实在在的将Asp.net更深入的研究了一下,以方便我以后更好的运用它,同时我也讲讲使用它的感受。 Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。 但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。 同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。 ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。 逐步缩小出错代码段的范围,最终确定错误代码的位置。 ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。 是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错)。 碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。 这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。 通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。 是目前ASP在UNIX/Linux上的应用可以说几乎为0)。所以平台的局限性和ASP自身的安全性限制了ASP的广泛应用。
页:
[1]