CDC::GetDeviceCaps()物理长度与屏幕像素间的转换

admin | 取词 | 2014-03-21
作用: 读取DC的一些打印区域信息,主要是像素和英寸方面的数据. 声明: GetDeviceCaps(int ) 使用例子: //所有像素数 int pagecx=dc.GetDeviceCaps(HORZRES); int pagecy=dc.GetDeviceCaps(VERTRES); //即每英寸点数 short cxInch = dc.GetDeviceCaps(LOGPIXELSX); short cyInch = dc.GetDeviceCaps(LOGPIXELSY); // 计算一个设备单位等于多少0.1mm doubl... [阅读全文]
ė2,656 浏览数 6没有评论 0

DPI 补充

admin | 取词 | 2014-03-19
C++ int main() { while (false) { //SetProcessDPIAware(); static int i = 0; i++; std::cout << i <<" "<< "-------------------------" << std::endl; POINT pt; if(GetCursorPos(&pt)) { std::cout << pt.x << ", " << pt.y << std::... [阅读全文]
ė2,265 浏览数 6没有评论 0

通过进程ID获得该进程主窗口的句柄

admin | Windows api | 2014-03-18
一个进程可以拥有很多主窗口,也可以不拥有主窗口,所以这样的函数是不存在的,所幸的是,相反的函数是有的。所以我们可以调用EnumWindows来判断所有的窗口是否属于这个进程。 typedef struct tagWNDINFO …{ DWORD dwProcessId; HWND hWnd; } WNDINFO, *LPWNDINFO; BOOL CALLBACK YourEnumProc(HWND hWnd,LPARAM lParam) …{ DWORD dwProce... [阅读全文]
ė2,914 浏览数 6没有评论 0

Windows 8.1 DPI 改进

admin | 取词 | 2014-03-17
8.1 修改了一下几点: 增加了 Per-Monitor DPI Virtualization,允许不同显示器拥有不同的比例;引入 WM_DPICHANGED 消息通知软件「DPI 变化」。 可以根据显示器的信息自动识别出各显示器的密度,不用手工调了。 改进了跨窗口操作时座标变换,现在 LogicalToPhysicalPoint 以及 PhysicalToLogicalPoint 没必要添加了(这俩 API 也失效了,换成了 Logic... [阅读全文]
ė2,058 浏览数 6没有评论 0

删除占用文件

admin | win32 | 2014-03-15
C++ BOOL DeleteLockedFile(DWORD dwProcessID, HANDLE hFile) { TCHAR szTargetName[MAX_PATH] = { 0 }; HANDLE hTargeFile = INVALID_HANDLE_VALUE; HANDLE hProcess = NULL; BOOL bResult = FALSE; do { hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessID); ... [阅读全文]
ė2,121 浏览数 6没有评论 0

AfxOleInit()和::CoInitialize(NULL)区别

admin | Windows api | 2014-03-15
OLE是建立在COM之上的技术,层次比COM要高。AfxOleInit()调用的是OleInitialize(),而OleInitialize()除了调用CoInitializeEx()来初始化COM库外,还进行一些其它的操作,这些操作对OLE应用来说是必须的,这些OLE应用包括: (1)Clipboard; (2)Drag   and   drop; (3)Object   linking   and   embedding(现在的OLE,已不再仅仅是Object   linking   a... [阅读全文]
ė3,452 浏览数 6没有评论 0

兼谈如何写 DPI-Aware 的 windows 程序

admin | 取词 | 2014-03-13
我在知乎上这篇关于 AlwaysMouseWheel 的文章说过,AWM 不支持高 dpi,使用有 bug。为什么我会发现呢?因为我有一个笔记本换上了 1080p 的屏幕,然后把 dpi 改成了 1.25x。Windows 从 vista 开始引入了 DPI 虚拟化技术,让 dwm 有权力直接放大窗口,而为了确保兼容性,许多 API——包括 GetCursorPos 和WindowFromPoint——都做了一些处理。 具体表现就是,... [阅读全文]
ė2,380 浏览数 6没有评论 0

关于Windows高DPI的一些简单总结

admin | 取词 | 2014-03-11
我们知道,关于高DPI的支持, Windows XP时代就开始有了, 那时关于高DPI的支持比较简单, 但是从Vista/Win7 到现在Win8 /Win8.1, Windows关于高DPI的支持已经发生了很大的变化, 下面我们依次简单介绍下。 如果说以前XP时代我们还有理由不关注高DPI,  那么在移动设备时代和大显示器的高分辨率时代, 我们就没有理由不关注高DPI了, 比如Surface Pro... [阅读全文]
ė2,618 浏览数 6没有评论 0

解决使用CHtmlView后出现的COleException异常

admin | win32 | 2014-03-05
程序中在使用CHtmlView类来实现浏览器功能时,在调整窗口大小时会窗口输出异常警告,例如我的出现的警告如下: Warning: constructing COleException, scode = DISP_E_MEMBERNOTFOUND ($80020003). htmltest.exe 中的 0x7c80bef7 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0012de68 处的 COleException。 Warning: constructing COleException, sco... [阅读全文]
ė1,938 浏览数 6没有评论 0

vista下开机启动 简单绕过UAC的方法 .转载

admin | Windows api | 2014-03-04
背景 vista下,如果不开启UAC,那就没有我下面要说的问题了,呵呵。下面说的都是在vista开启UAC的前提下说的,win7也适用。 在vista下,系统开启了UAC,如果你的软件通过manifest进行了提权(提升到管理员权限),那么exe上面会打上一个“小盾”的图标,这种程序启动的时候,会激活UAC保护机制,弹一个全局对话框出来询问用户是否允许启动,这就是微软标... [阅读全文]
ė2,105 浏览数 6没有评论 0

Ɣ回顶部

无觅相关文章插件,快速提升流量