【发布时间】:2012-03-16 13:03:58
【问题描述】:
我需要确定资源文件中定义的对话客户区的大小。
GetClientRect 按桌面大小裁剪设计大小。我需要按屏幕单位设计的尺寸。我找到了this,它声称从对话框资源中检索大小,但遗憾的是它使用了 MFC。
我打开了对话框并有它的 HWND 和它的 ID。如何在不使用 MFC 的情况下获得屏幕单位的设计尺寸?
【问题讨论】:
-
您链接的代码相当于使用对话框的资源 ID 调用 CreateDialog,然后调用 GetClientRect。您可能不得不求助于实际解析资源中的模板。
-
@pezcode:所以我使用 FindResource、LoadResource 和 LockResource 来获取以 DLGTEMPLATE 开头的对话框资源的指针,并从那里得到 cx 和 cy 或对话框单位的大小。然后使用 GetDialogBaseUnits 转换为屏幕单位?资源是否在进程的生命周期内保持锁定?我应该避免多次锁定它吗?
-
经典 XY 问题。假设您发现,您将如何处理这些信息?
-
@HansPassant:我有一些大于标准 800x600 的对话框在小屏幕上无法正常显示。我添加了滚动条,但需要设计尺寸才能正确操作滚动条。我有这个或多或少的工作,但在从对话框基本单元转换为屏幕单元时遇到了一些问题。
-
听起来像我遇到的问题。但我无法编译您接受的答案。