Winapi 如何仅使用gdi调用在win32中绘制选定文本?

Winapi 如何仅使用gdi调用在win32中绘制选定文本?,winapi,gdi,Winapi,Gdi,我尝试使用两个TextOut call和TA_UPDATECP flag来绘制选定的文本,但当我移动选定区域时,字符移动了一点 有人知道这样做的正确方法吗?根据MSDN文档,当您使用设置TA_UPDATECP标志时,会忽略其位置参数以支持设备上下文的当前位置。在没有看到您的代码的情况下,我怀疑您的绘图算法调用TextOut时的当前位置会根据选择略有不同 作为一种调试策略,您可以在调用TextOut之前调用,以获取当前位置,并确保它与您预期的文本绘制位置相匹配。我相信抗锯齿和ClearType可以

我尝试使用两个TextOut call和TA_UPDATECP flag来绘制选定的文本,但当我移动选定区域时,字符移动了一点


有人知道这样做的正确方法吗?

根据MSDN文档,当您使用设置TA_UPDATECP标志时,会忽略其位置参数以支持设备上下文的当前位置。在没有看到您的代码的情况下,我怀疑您的绘图算法调用TextOut时的当前位置会根据选择略有不同


作为一种调试策略,您可以在调用TextOut之前调用,以获取当前位置,并确保它与您预期的文本绘制位置相匹配。

我相信抗锯齿和ClearType可以在分数像素位置绘制文本。如果你绘制了一段文本,然后尝试重新绘制中间部分,你可能没有办法从中间的那些字符开始的完全相同的位置绘制文本。诀窍似乎是重画整个字符串,但为所选文本添加一个剪切区域

这涉及到如何绘制选定文本的一些细节