在C#中调用一个dll函数,其中有个参数为 hdc,如何在C#中得到这个值并传给这个参数呢?
Graphics g=控件名.CreateGraphics();//这样就可以用g来在这个控件上画东西了。
但是如果我想不限范围,在整个屏幕上画,那么.NET就无能为力了。还好,我们有WIN32,我们可以用GetDC或者CreateDC来获得整个屏幕的设备驱动器句柄。用完之后别忘了用ReleaseDC或DeleteDC释放。
以下是C#中GetDC()和ReleaseDC()的声明方法
static extern IntPtr GetDC(IntPtr Hwnd); //其在MSDN中原型为HDC GetDC(HWND hWnd),HDC和HWND都是驱动器句柄(长指针),在C#中只能用IntPtr代替了
[System.Runtime.InteropServices.DllImport("User32.dll")]
static extern int ReleaseDC( IntPtr hWnd, IntPtr hDC);
然后我们获得整个屏幕的设备驱动器句柄
Hdc = GetDC(IntPtr.Zero); //MSDN中说当传入指针为空时返回整个屏幕的设备驱动器句柄
嘿嘿,接下来我们就可以利用这个设备驱动器句柄来乱画东西了,不过在此之前我们先把这个C#不常见的东西转化为熟悉的Graphics。我们只要用
Graphics g = Graphics.FromHdc(Hdc);//这样就从设备驱动器句柄中获得了.NET只能的Graphics类。
得到了这些东西,剩下的就不用我多说了吧,这些来大家就可以在这个屏幕上爱怎么画就怎么画。不过画完之后记得调用ReleaseDC()来释放这个句柄(如果画完程序就结束那倒无所谓)。
ReleaseDC(IntPtr.Zero, Hdc); //这样这个屏幕的设备驱动器句柄就被释放了。
在C#中调用一个dll函数,其中有个参数为 hdc,如何在C#中得到这个值并传给这个参数呢?相关推荐
- 在C#中调用windows API函数
Api函数是构筑Windws应用程序的基石,每一种Windows应用程序开发工具,它提供的底层函数都间接或直接地调用了Windows API函数,同时为了实现功能扩展,一般也都提供了调用Windows ...
- 如何将matlab代码转为C语言(2)--在C++中调用matlab的函数
如何将matlab代码转为C语言(2)–在C++中调用matlab的函数 在上一条博文中提供了一种直接在matlab操作中的方法,下面提供一种新的调用方法,即在C++中调用matlab中的dll文件. ...
- 在Visual C++中实现一个DLL木马
在Visual C++中实现一个DLL木马 写一个木马挂载程序,听起来似乎很玄,其实也很简单,本文将告诉你怎样用Visual C++实现一个侵入木马的程序.本文主要涉及动态链接库(DLL)木马,目前相 ...
- 在Delphi中调用外部DLL 之External DLL 导入DLL
调用一个DLL比写一个DLL要容易一些.首先给大家介绍的是静态调用方法,稍后将介绍动态调用方法,并就两种方法做一个比较.同样的,我们先举一个静态调用的例子. unit Unit1;interfaceu ...
- JAVA中调用C语言函数简单教程
背景知识 本地代码 在JAVA中使用其他语言的代码(如C/C++)称为本地代码. 历史原因 JAVA的早期阶段,很多人认为使用C和C++来加速JAVA应用中的关键部分是个好主意,但是实际上,虽然JAV ...
- java 中调用 Matlab 的函数
一.matlab版本必须支持java 在command 模式下面运行deploytool,如果支持该命令即可使用 二.matlab中function的书写 %定义一个函数operation(a,b), ...
- Js文件中调用其它Js函数的方法(转)
2019独角兽企业重金招聘Python工程师标准>>> Js文件中调用其它Js函数的方法 在项目开发过程中,也许你会遇这样的情况.在某一Js文件中需要完成某一功能,但这一功能的大部分 ...
- Js文件中调用其它Js函数的方法
2019独角兽企业重金招聘Python工程师标准>>> Js文件中调用其它Js函数的方法 在项目开发过程中,也许你会遇这样的情况.在某一Js文件中需要完成某一功能,但这一功能的大部分 ...
- Lua中调用C/C++函数 (转)
1.前言 上次偶说到从C/C++中调用Lua的函数, 然后就有朋友问从Lua中如何调用C/C++的 函数, 所以偶们这次就来说说这个问题. 首先偶们会在C++中建立一个函数, 然后 告知Lua有这个函 ...
最新文章
- linux下独立core2.1部署发布过程
- android杀死进程
- 十步让你成为一名优秀的 Web开发人员
- HDU4475(找规律+预处理加速)
- 生成某一文件夹内文件清单(批量处理)
- Epoll详解及源码分析
- strocli64 源码_storcli 简易使用介绍
- 正确评估SQL数据库性能,你必须知道的原理和方法!
- mysql批量删除数据库_数据库实现批量删除数据的操作方法(代码实例)
- Atitit office ooxml 系列 excel的读取api 框架 poi的使用
- 98版五笔字型实用学习教程
- java动态数组_Java实现动态数组
- php ftps,使用PHP Curl的FTPS获得部分下载
- 使用Python实现一个简单的聊天室
- C#数据库教程5-ADO.NET登录页面设计
- PACS系统源码 影像管理系统源码(PACS)
- html5猜大王游戏,5月8日维护:新副本金兜洞兕大王部分测试
- 图像分类的技能包及每一项的实验验证
- 菜单侧边栏拖拽_SwiftUI —侧边栏菜单教程
- DB2的HADR的搭建
热门文章
- emwin 使用外部字库_整6个月的等待,ST终于可以免费使用ThreadX全家桶了
- 在计算机上收回光驱快捷键,如何使用Windows键盘快捷键打开光盘驱动器
- 自己动手写CPU(2)流水线数据相关问题
- oracle+去括号,关于001 TK的几个问题,请大家一起讨论一下
- 肽键肽链内部分的计算机术语大全,生化资料
- 原生android 全面屏,谷歌全面屏手机曝光!谷歌pixel2,安卓8.0+骁龙836!
- rabbitnq 源码安装_linux下源码安装rabbitMq
- oracle insert into values select from,ORACLE语法中的INSERT INTO。。。SELECT。。。 收藏
- html文本框自动赋值,js给文本框赋值 value与innerHTML
- GenXus学习笔记——Transaction的建立