.NET Framework创建基于Windows应用程序
2010-09-27 12:24:32 来源:WEB开发网访问底层系统
许多框架的一个缺点就是:如果人们编写的应用程序类型与示例和演示中的严格一致,则这些框架的效果相当不错,但有时开发人员发现,一旦他们希望用框架进行一些有创造性的工作,某些情况下就会碰到障碍或遭到失败。如果遇到这一情况,Win Forms 框架自始至终都能够允许开发人员访问系统基础结构。当然,希望 Win Forms 这样一个设计优良的框架不会使用户遭遇这种情况,但可能发生的情况几乎是无限的。所有的控件都有 Handle 属性,允许访问控件的窗口句柄 (HWND),GDI 对象也提供了类似的句柄访问过程。而且,Control 实际上拥有一个名为 WndProc 的受保护的虚拟方法,对于少数 Win Forms 尚不能支持的消息,可以替代该方法,添加处理方式。
例如,假设您的应用程序是资源密集型的,需要响应 WM_COMPACTING。如果系统检测到内存不足,会向所有高层窗口广播 WM_COMPACTING,您就会知道 Win Forms 框架对这一消息没有提供内置支持,由此,可以添加如下处理过程:
/// <summary>
/// Win32Form1 的摘要说明。
/// </summary>
public class CompactableForm : System.WinForms.Form {
private EventHandler handler;
public void AddOnCompacting(EventHandler h) {
handler = (EventHandler) Delegate.Combine(handler, h);
}
protected override void OnCompacting(EventArgs e) {
// 查看运行时系统能否释放任何东西
System.GC.Collect();
// 调用任一处理程序。
if (handler != null) handler(this, e);
}
public void RemoveOnCompacting(EventHandler h) {
handler = (EventHandler) Delegate.Remove(handler, h);
}
protected override void WndProc(ref Message m) {
case (m.msg) {
case win.WM_COMPACTING:
OnCompacting(EventArgs.Empty);
break;
}
base.WndProc(m);
}
}
只需数行代码,当系统试着收集未用资源时,利用新的 CompactableForm 类或由此派生的类即可得到通知,并作出响应。
结论
尽管在许多开发人员的计划中,针对 Web 的开发是当前工作的重点,而定位于熟悉的 Win32 平台仍然是一个不得不面对的情况。有了 Win Forms,Windows 开发人员无论是新手还是老手,都会发现使用丰富的接口创建复杂的应用程序是一个很方便的过程,而这些接口与 .NET Framework 中具有 Web 和数据功能的许多技术配合良好。
通过利用跨语言继承、碎片收集和安全性等通用语言运行时提高工作效率的优秀功能,开发人员将从 .NET Framework 和 Win Forms 中获益。
编缉推荐阅读以下文章
- 暂无相关文章
- ››创建SQL2005自动备份,定期删除的维护计划
- ››创建动态表单 javascript
- ››创建基于PPTP的站点到站点VPN连接:ISA2006系列之...
- ››创建基于L2TP的站点到站点的VPN连接:ISA2006系列...
- ››创建一个Twisted Reactor TCP服务器
- ››创建Windows Mobile上兼容性好的UI 程序
- ››创建android的Service
- ››创建远古部落环境与原住民角色
- ››Netpas加速 让非电信宽带用户流畅上网
- ››net中fckediter的图片上传时候点击\浏览服务器\出...
- ››创建并扩展Apache Wicket Web应用
- ››创建不在任务条中显示窗口按钮的应用
更多精彩
赞助商链接