Wpf下使用lib的注意事项
来源:互联网 发布:linux退出命令行界面 编辑:程序博客网 时间:2024/06/05 16:30
之前做过一个小demo,里面需要在Wpf下调用SDK(lib)的任务,有些地方仍是不太懂,甚至是错误的,简单总结下,慢慢消化。
1.c#是不能直接调用lib文件的,所以要把lib文件封装成dll文件。
2.封装是要看一看原有的lib函数接口是否支持Unicode,简单来说,如果字符串参数用Char*表示不支持,如果用Tchar表示支持(具体还要看_UNICODE是否定义)。
3. 如果不支持Unicode,需要在封装时,将参数进行转化。c#string对应c++wchar,而wchar到char是需要转化的。(Unicode到anscii)。C#dllinport声明中,函数参数应为([MarshalAs(UnmanagedType.LPWStr)]string)
4.c#中的delegate对应c++的回调函数。在调用时,需要看一下lib的编译方式, 如果啥都没写,表示默认使用_cdecl调用。而c#中是默认_pascal调用,所以在delegate声明时,特别声明下[UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
5. wpf中的控件是没有句柄中, PresentationSource.FromVisual(YourImageControl) as HwndSource; 最终获得的都是窗体句柄。
1.c#是不能直接调用lib文件的,所以要把lib文件封装成dll文件。
2.封装是要看一看原有的lib函数接口是否支持Unicode,简单来说,如果字符串参数用Char*表示不支持,如果用Tchar表示支持(具体还要看_UNICODE是否定义)。
3. 如果不支持Unicode,需要在封装时,将参数进行转化。c#string对应c++wchar,而wchar到char是需要转化的。(Unicode到anscii)。C#dllinport声明中,函数参数应为([MarshalAs(UnmanagedType.LPWStr)]string)
4.c#中的delegate对应c++的回调函数。在调用时,需要看一下lib的编译方式, 如果啥都没写,表示默认使用_cdecl调用。而c#中是默认_pascal调用,所以在delegate声明时,特别声明下[UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
5. wpf中的控件是没有句柄中, PresentationSource.FromVisual(YourImageControl) as HwndSource; 最终获得的都是窗体句柄。
6.wpf中可以利用WindowsFormsHost来使用Winform控件(winform控件是都有句柄的),但要注意窗体AllowsTranspancy不能设置成true,否则winform无法正常显示(暂时未解决)
7.在vs中对lib封装成dll时,代码生成的运行库要选用MTd方式,否则最后生成的程序在别的电脑上可能因为依赖,无法运行。
0 0
- Wpf下使用lib的注意事项
- 使用WPF的Generic.xaml加载样式的注意事项
- 使用WPF动画编程的几点注意事项
- WPF LIB
- WPF下使用WebBrowser的一个例子
- WPF使用相对路径下的图片
- Linux下使用coredump时的注意事项
- linux下使用多线程的注意事项
- was6.1下hibernate的使用注意事项
- arc下的block使用注意事项
- IE8下使用button标签的注意事项
- String框架下使用c3p0的注意事项!
- LINUX下的LIB
- wpf 作打印时的注意事项
- WPF ValidationRule 触发ErrorTemplate 的注意事项
- wpf 基本的xaml 事件触发器注意事项
- VS2003环境下使用gsl库,找不到libgsl.lib,libgslcblas.lib的问题
- vc6下的lib不能直接在vc2005使用
- JSP/Servlet工作原理
- Android_自定义View
- 319. Bulb Switcher
- Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解
- Qt文档中文版
- Wpf下使用lib的注意事项
- Object.create() 是什么?继承(继承特定的)
- Java——DOM方式生成XML
- 第七届蓝桥杯C/C++ A组 省赛
- 大对象类型数据存储
- 268. Missing Number
- 如何共享一台电脑的鼠标和键盘
- 常用的交互算法
- 144. Binary Tree Preorder Traversal