Windows 窗体
一组用于开发图形用户界面的 .NET Framework 托管库。
93 个问题
你好
就我而言,我调用 SetWindowTheme 函数来禁用窗口主题(最后两个参数是空字符串),这样做,我有一个这样的 XP 样式窗口。
如您所见,窗口现在的边缘更粗。我使用 GetSystemMetrics 函数,但它返回错误的指标(BorderX = 1,Caption = 23)。是否有任何方法或 API 可以解决此问题?
谢谢。 Note:此问题总结整理于: Get Window Border Metric Corresponding to Current Theme
我可以使用 Win32 C++ 窗口应用程序重现相同的结果。 SetWindowTheme(hWnd, L"", L""); 不会导致窗口边框的宽度发生变化。 SM_CXEDGE 和 SM_CXFRAME 也有相同的行为。 您还可以检查从客户区左侧到非客户区左侧的距离,无论是否调用 SetWindowTheme(hWnd, L"", L""); 都保持不变; 像这样:
GetClientRect(hWnd, &rcClient);
GetWindowRect(hWnd, &rcWind);
ptDiff.x = ((rcWind.right - rcWind.left) - rcClient.right) / 2;
基于文档:“当 pszSubAppName 和 pszSubIdList 为 NULL 时,主题管理器将删除以前应用的关联。可以通过指定空字符串 (L“ ”)“ 来阻止将视觉样式应用于指定窗口。
似乎删除以前应用的关联和视觉样式不会影响边框的大小。您看到的 bordor 外观的变化可能是由视觉效果引起的。
如果回复有帮助,请点击“接受答案”并点赞。
注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。