- 博客(62)
- 资源 (1)
- 收藏
- 关注
转载 C#托管代码与C++非托管代码互相调用二(C++调用C#代码)
上篇文章提到,目前项目想做到核心部分代码不被反编译,而考虑到团队成员都是比较熟悉C#,因此核心算法部分采用C++,而其他地方则采用C#(例如数据访问层,界面层都使用C#语言)。在上一篇文章中完成了C#托管代码调用C++非托管代码,现在接着完成第二部分,即C++非托管代码调用C#托管代码(源代码下载),分为两部分,首先C#建立COM+组件,其次是C++调用COM+组件。 C#建立COM+组件
2010-03-22 16:51:00
1201
1
转载 C#托管代码与C++非托管代码互相调用一(C#调用C++代码&.net 代码安全)
在最近的项目中,牵涉到项目源代码保密问题,由于代码是C#写的,容易被反编译,因此决定抽取核心算法部分使用C++编写,C++到目前为止好像还不能被很好的反编译,当然如果你是反汇编高手的话,也许还是有可能反编译。这样一来,就涉及C#托管代码与C++非托管代码互相调用,于是调查了一些资料,顺便与大家分享一下:源代码下载一. C# 中静态调用C++动态链接 1. 建立VC工程CppDe
2010-03-22 16:50:00
1220
转载 在非托管环境下使用托管环境下的程序集(转)
自.Net问世以后,我们习惯的VC++,VB编程模式有了很大的变换,托管与非托管的概念也不断映入程序员们的眼帘,可以说.NET正逐步成为编程的主流语言和平台之一。今天不与大家讨论谁主沉浮,也不发表慷慨激扬的陈词,到底这种编程模式(或者说是方式)好与否,由所有的程序员们在实践中去探讨证实吧!今天学习中遇到了托管与非托管环境下程序集的相互调用问题,觉得应该和大家分享一下,无论多么的简单,我只是希望在开
2010-03-22 10:22:00
1006
转载 C#多线程编程(1):线程的启动
在实例化Thread的实例,需要提供一个委托,在实例化这个委托时所用到的参数是线程将来启动时要运行的方法。在.net中提供了两种启动线程的方式,一种是不带参数的启动方式,另一种是带参数的启动的方式。 不带参数的启动方式 如果启动参数时无需其它额外的信息,可以使用ThreadStart来实例化Thread,如下面的代码: <a onclick="function onclick()
2010-01-22 13:23:00
560
1
转载 多线程编程(2):线程的同步
在《多线程编程》系列第一篇讲述了如何启动线程,这篇讲述线程之间存在竞争时如何确保同步并且不发生死锁。线程不同步引出的问题下面做一个假设,假设有100张票,由两个线程来实现一个售票程序,每次线程运行时首先检查是否还有票未售出,如果有就按照票号从小到大的顺序售出票号最小的票,程序的代码如下:<a onclick="function onclick(){dp.sh.Toolbar.C
2010-01-22 13:21:00
500
转载 详解WPF线程模型和Dispatcher
开始着手写这个WPF系列,这里的一站式,就是力争在每一个点上能把它讲透,当然,做不到那么尽善尽美,如果有不对的地方也欢迎朋友们指正,我会逐步补充,争取把这个系列写好。 通常,WPF 应用程序从两个线程开始:一个用于处理呈现,一个用于管理 UI。呈现线程有效地隐藏在后台运行,而 UI 线程则接收输入、处理事件、绘制屏幕以及运行应用程序代码。 UI 线程对一个名为 Dispatcher 的
2010-01-22 12:57:00
1002
原创 C#调用dll时的类型转换总结
C++(Win 32)C#char**作为输入参数转为char[],通过Encoding类对这个string[]进行编码后得到的一个char[]作为输出参数转为byte[],通过Encoding类对这个byte[]进行解码,得到字符串C++ Dll接口:void CplusplusToCshar
2010-01-12 14:13:00
8770
2
转载 C#调用VC的DLL的接口函数参数类型转换一览表
handle---------IntPtrhandle---------IntPtrhwnd-----------IntPtrchar *----------stringint * -----------ref intint &-----------ref intvoid *----------IntPtrunsigned char *-----ref byteSt
2010-01-12 09:57:00
1473
转载 如何在C#中使用 Win32和其他库
这一次我们将深入探讨如何在 C# 中使用 Win32 和其他现有库。 C# 用户经常提出两个问题:“我为什么要另外编写代码来使用内置于 Windows 中的功能?在框架中为什么没有相应的内容可以为我完成这一任务?”当框架小组构建他们的 .NET 部分时,他们评估了为使 .NET 程序员可以使用 Win32 而需要完成的工作,结果发现 Win32 API 集非常庞大。他们没有足够的资源为所有 W
2010-01-05 16:02:00
713
1
转载 C#调用DLL函数方法
首先,理解托管代码与非托管代码的区别: 1.托管代码所申请的资源统一由.Net Framework管理,你不用操心,非托管代码所申请的内存等资源则需要你手动去释放 2.非托管程序运行会很快,是二进制的,托管程序好写,但是速度就差的很多,资源会用的很多 3.“程序"一般都是在对操作系统进行直接或者间接的操作 "托管程序"是需要通过访问公共语言运行时(c
2010-01-05 09:19:00
2535
转载 WPF自定义控件——使用Win32控件
虽然WPF很强大,但是有些东西win32做的已经很好,我们完全可以拿来主义。 一.如何创建一个win32控件 1.首先定义一个WNDCLASSEX的类,参考http://baike.baidu.com/view/1750396.html?tp=0_11WNDCLASSEX wndClsEx = new WNDCLASSEX();wndClsEx.Init
2009-12-02 14:00:00
2555
1
转载 一站式WPF--线程模型和Dispatcher
开始着手写这个WPF系列,这里的一站式,就是力争在每一个点上能把它讲透,当然,做不到那么尽善尽美,如果有不对的地方也欢迎朋友们指正,我会逐步补充,争取把这个系列写好。 通常,WPF 应用程序从两个线程开始:一个用于处理呈现,一个用于管理 UI。呈现线程有效地隐藏在后台运行,而 UI 线程则接收输入、处理事件、绘制屏幕以及运行应用程序代码。 UI 线程对一个名为 Dispatcher
2009-11-27 19:29:00
800
转载 如何学好WPF
用了三年多的WPF,开发了很多个WPF的项目,就我自己的经验,谈一谈如何学好WPF,当然,抛砖引玉,如果您有什么建议也希望不吝赐教。 WPF,全名是Windows Presentation Foundation,是微软在.net3.0 WinFX中提出的。WPF是对Direct3D的托管封装,它的图形表现依赖于显卡。当然,作为一种更高层次的封装,对于硬件本身不支持的一些图形特效的硬实现,W
2009-11-27 14:57:00
2317
1
转载 浅谈MVP与Model-View-ViewModel(MVVM)设计模式
微软的WPF带来了新的技术体验,如Sliverlight、音频、视频、3D、动画……,这导致了软件UI层更加细节化、可定制化。同时,在技术层面,WPF也带来了 诸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由
2009-11-27 12:55:00
932
转载 一站式WPF--依赖属性(DependencyProperty)二
书接上文,前篇文章介绍了依赖属性的原理和实现了一个简单的DependencyProperty(DP),这篇文章主要探讨一下如何使用DP以及有哪些需要注意的地方。回顾 依赖属性是由DependencyObject来使用的,那么一个典型的使用场景是什么样呢?使用DependencyProperty 一个简单的使用如下: 1: public class Simple
2009-11-27 10:40:00
1931
转载 一站式WPF--依赖属性(DependencyProperty)一
Windows Presentation Foundation (WPF) 提供了一组服务,这些服务可用于扩展公共语言运行时 (CLR) 属性的功能,这些服务通常统称为 WPF 属性系统。由 WPF 属性系统支持的属性称为依赖项属性。 这段是MSDN上对依赖属性(DependencyProperty)的描述。主要介绍了两个方面,WPF中提供了可用于扩展CLR属性的服务;被这个服
2009-11-27 10:34:00
1153
转载 无法将 匿名方法 转换为类型“System.Delegate”,因为它不是委托类型
编程环境要求:VS2008/FX2.0众所周知,从VS2005/FX2.0起,在多线程环境下是不允许跨线程修改主线程上窗口控件的。例如: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->private void button1_Click
2009-11-20 13:41:00
7871
4
转载 编译源文件的时候出错处理
I need an object browser with considerable flexibility. I focused on Denis Bauer: | http://www.denisbauer.com/NETTools/FileDisassembler.aspx .NET Reflector. I downloaded the source code and the dll fi
2009-11-20 11:21:00
1412
转载 使用Reflector.FileDisassembler反编译DLL
Reflector for .NET 下载地址:http://www.aisto.com/roeder/dotnet/ Reflector.FileDisassembler.dll cs文件的工具下载地址 : http://www.denisbauer.com/Downloads/Reflector.FileDisassembler.zip 1.下载Reflector.FileDis
2009-11-20 10:44:00
1635
转载 Reflector.FileDisassembler的一个bug修复
Reflector for .NET应该是.NET程序员除了VS.NET以外必备的一个工具,当然你如果喜欢EditPlus一类的编辑器,甚至VS.NET也可以不用。Reflector内核版本升级非常的频繁,不过它的一个和重要的功能,获得反编译代码文件的功能却是一个叫Reflector.FileDisassembler的插件提供的。昨天反编译一个混淆过的assembly,发现了它的一个bug。关于
2009-11-20 09:54:00
1309
转载 wpf --自定义控件的transeform
WPF不可以对非WPF控件进行Transform操作,但是对于我们自定义的控件仍然可以曝露消息进行一些Transform 操作,Transform 一般来说就是Matrix的实现,对于Matrix我们先来做道题: 已知圆心O(0,0) ,在坐标轴上有一点P( x , y ), 逆时针旋转OP a度,使得P点到P1(x1,y1),用x,y表示p1点的坐标。<img onclick="fu
2009-11-19 14:57:00
999
转载 C#中自定义事件的触发
我想在窗体重绘时触发自定义事件,我晕了。经历了两天的浆糊,我总算弄清楚了自定义事件不是我想象的那样运作,可是就是我想象的模式,我也很晕……总的来说,我认为事件可理解为当对象状态改变时,所触发的过程,而为了过程的灵活性,自定义事件用委托来实现,于是其中产生了两层不可分离的嵌套,于是我晕掉了。作为一个简单的自定义事件例子,需要具备什么,我试着整理一下思路。建立一个Drawer.cs文件,其中有一个新
2009-11-19 13:07:00
5135
转载 WPF – 使用触发器
WPF提供了很重要的一个东西就是绑定Binding, 它帮助我们做了很多事情,这个我们在 WPF学习之绑定 这篇里边有讲过。对于Binding我们可以设置其绑定对象,关系,并通过某种规则去验证输入,或者转换值等等,这一切的背后是省去了很多我们需要自己去处理的代码。而对于WPF最主要表现的东西—渲染UI,当然是我们必须去了解和把握的了。美工设计了很多效果,并把其设计成样式展现(很大程度上我们应该认
2009-11-19 11:29:00
1471
转载 关于dll 中没有可放置在工具箱上的组件的解决技巧
我遇到的问题是再写控件库的扩展类时,没有加public关键字,如 public class MyListView: System.Windows.Forms.ListView { 。。。。}如果去掉 public 也可以生成DLL,但当你把它添加到用户控件时就会提示:在e:/mylistview/bin/myListView.dll中没有可放置在工具箱上的组件
2009-11-17 16:07:00
2665
转载 WPF and Silverlight 学习笔记(十五):WPF命令(Commands)
WPF中的命令路由与事件路由是两个很让初学者头痛的概念,对于命令路由可以理解为,系统(WPF)定义了一系列的操作,在应用程序中可以直接使用。例如,定义一系列菜单,执行对窗体中文本框的复制、剪切、粘贴操作,简单地可以这样做: 1: Grid> 2: Grid.RowDefinitions> 3: RowDefinition Height="23
2009-11-17 13:41:00
910
转载 WPF and Silverlight 学习笔记(十七):WPF资源(Resource)(2)
四、静态资源(StaticResource)和动态资源(DynamicResource)资源可以作为静态资源或动态资源进行引用。这是通过使用 StaticResource 标记扩展或 DynamicResource 标记扩展完成的。通常来说,不需要在运行时更改的资源使用静态资源;而需要在运行时更改的资源使用动态资源。动态资源需要使用的系统开销大于静态资源的系统开销。例如以下的例子:
2009-11-17 13:39:00
882
转载 WPF and Silverlight 学习笔记(十六):WPF资源(Resource)(1)
一、什么是资源通常使用 WPF 资源作为重用通常定义的对象和值的简单方法。例如定义一种可以复用的单色的Brush对象,按钮的背景及矩形的填充颜色均使用此Brush: 1: Window x:Class="WPFResource.WinBasicResource" 2: xmlns="http://schemas.microsoft.com/winfx/2006/
2009-11-17 13:04:00
622
转载 WPF and Silverlight 学习笔记(十五):WPF命令(Commands)
WPF中的命令路由与事件路由是两个很让初学者头痛的概念,对于命令路由可以理解为,系统(WPF)定义了一系列的操作,在应用程序中可以直接使用。例如,定义一系列菜单,执行对窗体中文本框的复制、剪切、粘贴操作,简单地可以这样做: 1: Grid> 2: Grid.RowDefinitions> 3: RowDefinition Height=
2009-11-17 12:48:00
503
转载 WPF and Silverlight 学习笔记(三):WPF体系结构
WPF的基础的体系结构,所引用的Assembly如下图所示:<img onclick="function onclick(){get_larger(this)}" src="http://img.ddvip.com/2009_04_09/1239279776_ddvip_4153.png" alt="WPF and Silverlight 学习笔记(三):WPF体系结构" wid
2009-11-17 10:28:00
480
转载 WPF and Silverlight 学习笔记(二十):WPF数据绑定概述
WPF数据绑定为应用程序提供了一种表示数据和与数据交互的简单而又一致的方法。元素能够以公共语言运行库 (CLR) 对象和 XML 的形式绑定到各种数据源中的数据。 一、数据绑定的基本概念: 数据绑定涉及到两个方面:一个是绑定源,再一个是绑定目标。绑定源即控件绑定所使用的源数据,绑定目标即数据显示的控件。 1、对于绑定源,在WPF可以是以下四种: CLR对象:可以绑定到CL
2009-11-17 10:22:00
537
转载 WPF and Silverlight 学习笔记(十):WPF控件模型
WPF对控件其类型的继承方式如下<IMG onclick="function onclick(){get_larger(this)}" alt="WPF and Silverlight 学习笔记(十):WPF控件模型" src="http://img.ddvip.com/2009_04_14/1239704811_ddvip_1123.png" width=470 height=
2009-11-17 10:10:00
576
转载 WPF and Silverlight 学习笔记(十三):依赖项属性和路由事件
一、依赖项属性(Dependency Property) Windows Presentation Foundation (WPF) 提供了一组服务,这些服务可用于扩展公共语言运行时 (CLR) 属性的功能。这些服务通常统称为 WPF 属性系统。由 WPF 属性系统支持的属性称为依赖项属性。本概述介绍 WPF 属性系统以及依赖项属性的功能,这包括如何在可扩展应用程序标记语言 (XAML) 中
2009-11-16 22:30:00
712
转载 WinForm控件开发总结(十二)-----让控件处理导航键
最近真的真的太忙了,以至于一个多月都没哟更新我的blog。昨天晚上,一个网上的朋友看了我的ToolBox的文章,问我一个问题,他说如何让ToolBox控件也能响应键盘操作,也就是用Up,down按键来选择工具箱控件里的Item,他添加了键盘事件,但是不起作用。一开始做这个控件的时候也只是演示一下控件的制作过程,只用了很短的时间做了一个,只考虑了用鼠标选取,没有考虑键盘操作,我想要添加键盘操作无非
2009-11-16 15:02:00
1045
转载 WinForm控件开发总结(十一)-----调试控件的设计时行为
前面的一些文章绝大部分都是要讲控件的设计时的行为,既然涉及到这么多的设计时行为的代码编写,那么就有必要就一下如何来调试控件的设计行为。 调试控件的设计时行为和调试DLL的方式非常的相似,因为DLL是不能够单独运行的,而一般的控件也会在一个DLL里。当然如果你不考虑类的可复用性而把控件写在一个Windows Application里面也无可厚非,这样调试倒也变的简单了。但是我们还是要考
2009-11-16 15:01:00
704
转载 WinForm控件开发总结(十)-----为属性设置默认值
本系列的前面几篇文章讲解了如何来定义属性以及更有效的编辑属性,接下来我要讲一下控件属性的默认值。如果我们希望自己开发的控件更易于被其它开发者使用,那么提供默认值是非常值得的。 如果你为属性设定了默认值,那么当开发者修改了属性的值,这个值在Property Explorer中将会以粗体显示。VS为属性提供一个上下文菜单,允许程序员使用控件把值重置为默认值。当VS进行控件的串行化时,他会判
2009-11-16 15:00:00
594
转载 WinForm控件开发总结(九)-----为属性提下拉式属性编辑器
在上一篇文章,我介绍了如何编写模态对话框属性编辑器,这篇文章我将介绍如何编写下拉式属性编辑器。下拉式(DropDown)属性编辑器和模态对话框属性编辑器的不同之处就是,当你点击属性值修改的时候,模态对话框编辑器是弹出一个模态对话框,而下拉式属性编辑器却是在紧贴着属性值的地方显示一个下拉的控件。不知道大家注意到了没有,这里我说的是显示一个下拉的控件,而这个控件也是需要你去开发的,接下来我还是以Sc
2009-11-16 14:51:00
1000
转载 WinForm控件开发总结(八)-----为属性提供弹出式编辑对话框
前几篇文章我们一直在讨论如何更方便的编辑复杂类型的属性,在这个过程中我介绍了类型转换器以及如何制作自己的类型转换器来实现属性值的串行化和实现子属性的编辑。对于Scope这种级别的复杂属性,一个类型转换器就已经足够了,但是对于更为复杂的属性,单单使用类型转换器已经不足以应付了,比如我们常用的Font属性。 在这种情况下,我们就需要提供更为复杂的编辑方式,比如属性编辑对话框,你还记得Fo
2009-11-16 14:26:00
656
转载 WinForm控件开发总结(七)-----为复杂属性的子属性提供编辑功能
前面的几篇文章中,我们给控件添加一个复杂的类型Scope,并且给它的类型提供的一个类型转换器,现在我们可以在属性浏览器中编辑它的值,并且它的值也被串行化的源代码里了。但是你有没有发现,在属性浏览器里编辑这个属性的值还是不太方便。因为属性只是“10,200”这种形式的,所以,你必须按照这种格式来修改,一旦格式错误就会引发异常,比如输入一个“10200”。我们期望这个属性的每一子属性都能够被独立的编
2009-11-16 14:22:00
577
转载 WinForm控件开发总结(六)-----控件属性类型转换器代码详解
在上一篇文章,我为控件添加一个一个复杂属性,并且为这个属性的类型的编写了一个类型转换器,现在我们来看看这个类型转换器的代码,并解释一下这些代码的意义。 要实现一个类型转换器,我们必须要重写(override)四个方法: CanConvertFrom()――根据类型参数进行测试,判断是否能从这个类型转换成当前类型,在本例中我们只提供转换string和InstanceDesc
2009-11-16 14:08:00
651
转载 WinForm控件开发总结(五)-----为控件的复杂属性提供类型转换器
上一篇文章我已经介绍了TypeConverterAttribute元数据的作用,本文将通过代码向你展示具体的实现。在这个例子中,我要给控件添加一个复杂的属性,这个属性对这个控件没有什么功用,纯粹是为了演示,有些牵强附会了。 现在在前一篇文章中的创建的控件代码中添加一个Scope属性: 这个属性的类型是Scope类,代码如下: 添加完以后buil
2009-11-16 13:37:00
647
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人