http://hi.baidu.com/3582077/item/77d3c1ff60f9fa5ec9f33754 调用API函数,在窗口非客户区绘图 GDI+的Graphics类里有个FromHdc函数,这个函数可以根据窗口设备上下文(DC)创建Graphics对象,在vc++中,窗口客户区与非客户区的绘图无非就是GetWindowDC和GetDC函数的不同调用.前者获得整个窗口DC,后者获得窗口客户区DC. 那么我们就可以在C#里,调用GetWindowDC函数获取整个窗口DC,然后通过Fr…
窗口分成两大部分:客户区和非客户区.非客户区再次细分:标题栏,如图片中顶部深蓝色:左边框,如图片中红色部分:上边框,如图片中绿色部分:右边框,如图片中右侧天蓝色部分:底边框,如图片中下面棕色部分. 之所以要有这样的区分,是因为,我在用函数SystemParametersInfo得到窗口的非客户区参数时,标题栏高度确实是上面深蓝色部分,不能达到客户区,在标题栏和客户区之间还有一个白色区域,我想这可能就是上边框吧. 需要用到的几个函数: PatBlt:作用是在指定的矩形区域用指定的Brush画刷来填…
原文 http://blog.csdn.net/dengta_snowwhite/article/details/6067928 与C++不同,C#调用API函数需要引入.dll文件,步骤如下: 1. 添加命名空间 using System.Runtime.InteropServices; 2. DllImport调入EnumWindows等函数 [DllImport("user32.dll")] //EnumWindows函数,EnumWindowsProc 为处理函数 privat…
窗体分为两部分:客户区(Client area)和非客户区(Non-Client area) WM_PAINT消息.OnPaint()方法.GetDC()API函数都是处理窗体客户区绘制的   而标题栏处于非客户区中,所以WM_PAINT消息.OnPaint()方法.GetDC()API函数都用不上   GetWindowDC()是获得整个窗体的画布句柄(Device Context翻译为:设备清单,我习惯称为画布句柄),包括非客户区   GDI的绘制都离不开DC,因为操作系统必须知道你要在什么…
项目背景 应欧美客户需求,需要将文件压缩成.tar.gz格式的文件,并上传给客户端SFTP服务器. 你懂的,7-Zip软件的显著特点是文件越大压缩比越高,在Linux系统上相当于我们Windows系统上WinRAR或者好压软件一样的存在. 7-Zip软件下载与安装 网上下载相关安装包并完成安装,找到安装目录,复制7z.dll文件到D盘. .bat文件的制作 通过7-Zip软件使用手册了解到,通过动态命令行调用7z.dll可以把文件压缩成.tar.gz格式的,实际上是先将文件压缩成.tar格式的文…
var Str1, Str2: Array[..Max_Path]of Char;//开辟缓冲区 Str3: Array[..]of Char; begin GetWindowsDirectory(@Str1, );//调用API函数获取Windows目录信息 GetSystemDirectory(@Str2, );//调用API函数获取System目录信息 GetTempPath(, @Str3);//调用API函数获取Temp目录信息 end;…
原文:调用API函数减少c#内存占用(20+m减至1m以下) c#虽然内置垃圾回收机制,但是并不能解决程序占用内存庞大的问题,如果我们仔细观察任务管理器,我们会发现一个程序如果最小化的时候,它所占用的会骤然减小,这时操作系统会把程序用不到的内存暂时放到虚拟内存中,当我们再把程序最大化时,发现内存并没有完全的从虚拟内存调到内存中来,是因为操作系统的内存管理机制只调用目前需要的,那么剩下的,有可能将来调用,有可能根本没用.实现这个机理用到了一个API函数SetProcessWorkingSetSiz…
设置坐标映射    (1)Windows坐标系统 Windows坐标系分为逻辑坐标系和设备坐标系两种,GDI支持这两种坐标系.一般而言, GDI的文本和图形输出函数使用逻辑坐标,而在客户区移动或按下鼠标的鼠标位置是采用设备坐标. <1>逻辑坐标系是面向DC的坐标系,这种坐标不考虑具体的设备类型,在绘图时,Windows会根据当前设置的映射模式将逻辑坐标转换为设备坐标. <2>设备坐标系是面向物理设备的坐标系,这种坐标以像素或设备所能表示的最小长度单位为单位,X轴方向向右,Y轴方向向…
只需要将相应代码复制即可. 代码如下: #include <iostream> #include <windows.h> int main() { HWND hDos; //声明窗口句柄变量 hDos=GetForegroundWindow(); //得到窗口句柄 ShowWindow(hDos,SW_HIDE); //隐藏窗口 //中间代码 ShowWindow(hDos,SW_SHOW);//显示窗口 return 0; }…
现在能实现截屏的软件很多,就不一一列举了,连WIN7都自带截屏软件,甚至OFFICE2010开始都有截屏的功能. 截屏软件虽多,无外乎三种截屏方式:全屏截图.窗口截图.自定义矩形截图. 其中,窗口截图用的比较多,下面就是一个窗口截图的示例: 但有时我们仅仅希望截取窗口的客户区,如下图所示: 这样的软件并不多,折中的办法是用自定义矩形截图,但是要调整矩形并不是一件很容易的事. 于是,基于码农的精神,自给自足. 于是上网搜了搜解决方案.有两个 1.基于Win API函数的PrintWindow函数…