c++ - 是否可以修改显示的原点? (win32)

标签 c++ winapi gdi

我有许多无法修改的应用程序(无源代码),它们被硬编码为在 0,0 处绘制。通常这不是问题,但是出现了一个新项目(kiosk),我需要在这些应用程序的外部画一个边界。我正在寻找一种方法来更改显示范围:

X: 0 to 1200
Y: 0 to 900

类似于:

X: -100 to 1100
Y: -100 to 800

我在 MSDN 上看到了几个函数,如 SetViewportExtEx、SetWorldTransform,它们符合需要,但是如果我正确理解它们,它们就不会在系统范围内进行更改。它们仅适用于当前进程。

我正在用 C++ 编程,但如果注册表/控制面板/等中有设置也可以。

有没有人以前做过这样的事情?

编辑 1:窗口位置硬编码为 0,0

最佳答案

这可能有点矫枉过正,但如果您真的想完全控制它,您始终可以使用 API Hook 来拦截窗口创建,方法是在目标进程中 Hook CreateWindow、CreateWindowEx 并在将控制权传回之前更改 X Y 坐标到系统。

流行的 API Hook 库包括:Microsoft Detours , Madshi's madCodeHook ,以及免费的开源 EasyHook .

关于c++ - 是否可以修改显示的原点? (win32),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5149044/

相关文章:

c++ - (C++) 使用指向整数的引用指针初始化字符串变量并打印一些东西?

c++ - 使用英特尔 C++ 编译器在 C++ 中实现 MATLAB 函数

c++ - 将可用空间转换为百分比 Windows C++

c++ - GDI+ 初始化使应用程序崩溃,为什么?

c++ - 连续计算器程序的段错误

c++ - 如何在 Linux 上的 clang 中获取模板实例化统计信息?

delphi - 将 WinAPI 回调封装在类中的最优雅的方法

multithreading - WaitForSingleObject 返回 WAIT_OBJECT_0 但未调用 SetEvent

c++ - 使用 CString 的 MFC TextOut 失败

c++ - 使用 WinGDI 旋转 HDC