【问题标题】:Access Violation DirectWrite访问冲突 DirectWrite
【发布时间】:2013-02-26 01:30:01
【问题描述】:

我正在使用 DirectWrite API,并且正在实现自己的布局和文本渲染引擎。我已经成功创建了我的IDWriteTextLayout 对象。当我进行以下调用时,我收到了访问冲突错误,但我不知道为什么:

DWRITE_LINE_METRICS m_lineMetrics;
UINT32 m_lineCount;

DX::ThrowIfFailed(
   m_textLayout->GetLineMetrics(&m_lineMetrics,31,&m_lineCount)
);

【问题讨论】:

  • 您承诺第一个参数是一个指向包含 31 个元素的数组的指针。不是,你只有一个。卡布姆。
  • 我就是这么想的。文档对此感到困惑。它表示当函数返回时,将有一个指向 DWRITE_LINE_METRICS 结构数组的指针。当我尝试将指针传递给具有 31 个元素的数组时,它会破坏函数签名
  • 如何在不破坏签名的情况下将指针传递给具有 31 个元素的数组
  • 我想通了。我猜我正在阅读函数的文档错误。您可以将指针传递给单个 DWRITE_LINE_METRICS 结构或 DWRITE_LINE_METRICS 结构数组。我无法回答自己的问题,因为我是新手。
  • 无论哪种方式,它都是一个指针。问题是它指向的数组必须像第二个参数所指示的那样大。

标签: c++ access-violation directwrite


【解决方案1】:

我想通了。我想我错误地解释了该函数的文档。您可以将指针传递给单个 DWRITE_LINE_METRICS 结构或 DWRITE_LINE_METRICS 结构数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-06
    • 2015-04-23
    • 2018-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    相关资源
    最近更新 更多