Windows预览处理器不遵循SetRect设置的绘图区域问题排查
Windows预览处理器SetRect调用的兼容性问题
在使用Windows预览处理器时,发现部分组件不遵守SetRect(&rect)设置的绘图区域,具体表现如下:
- Edge PDF预览处理器(CLSID
{3A84F9C2-6164-485C-A7D9-4B27F8AC009E}):首次调用SetRect正常,后续仅更新尺寸,位置保持不变; - PowerPoint预览处理器(CLSID
{65235197-874B-4A07-BDC5-E65EA825B718}):完全不遵循位置设置,始终固定在(0,0); - Word预览处理器(CLSID
{84F66100-FF7C-4fb4-B0C0-02CD7FB668FE}):首次获焦时会将绘图区域扩展至父窗口整个客户区,后续SetRect调用正常。
根据MSDN文档,SetRect应指定预览处理器在父窗口内的绘制区域,且仅在该区域渲染。观察文件资源管理器的实现逻辑,它会先创建指定尺寸和位置的子窗口,再将预览内容放入其中,因此不会出现上述问题。
请问是这些预览处理器本身存在行为问题,还是我的实现中有所遗漏?
附示例代码,编译命令:cl /std:c++20 /EHsc main.cpp,代码用于复现该问题。
内容的提问来源于stack exchange,提问作者lulle2007200
相关产品推荐
相关产品推荐

