【问题标题】:Translate coords to re-position dialog box?翻译坐标以重新定位对话框?
【发布时间】:2012-07-07 20:37:48
【问题描述】:

我正在勾搭CreateDialogIndirectParam。我想对对话框进行一些操作,但是宽度、高度以及 x 和 y 位置都以对话框为单位。有人可以解释如何将它们转换为屏幕坐标吗?

提前致谢。

【问题讨论】:

    标签: c++ windows winforms dialog gdi


    【解决方案1】:

    试试MapDialogRect() 功能。我认为它符合您的想法。

    请记住,映射取决于对话框使用的字体,因此HWND 必须是那个特定的对话框。

    同样来自GetDialogBaseUnits()

    pixelX = MulDiv(templateunitX, baseunitX, 4);
    pixelY = MulDiv(templateunitY, baseunitY, 8);
    

    作为baseunitX 的值tmAveCharWidthbaseUnitY 的值tmHeight 由函数GetTextMetrics() 返回。您只需要一个 HDC 并选择对话框字体。

    【讨论】:

    • 我不能在实际调用 CreateDialogIndirectParam 之前进行转换吗?
    • @Cooker:你可以看到我更新的答案。需要进行一些额外的计算,并且您需要自己获取/创建字体。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多