질문을 올리면서 생각하고 대답을 테스트 한 후 답변을 잘못 해석했으며 답변자가 나를 잘못 해석했다고 생각합니다. 원래 질문은 here입니다. 나는 사람들이 내가 문자열을 강조하고 싶다고 믿었으며, 정확한 목적을 밝히지 않았다. 그래서, 이제 할게요 :사용자 지정 텍스트 상자 : 강조 표시 및 선택
최근에 나는 GDI +를 사용하여 C++ CLR의 처음부터 100 % 텍스트 상자를 생성하려고합니다. 나는 사용자가 텍스트 박스를 클릭 할 때 캐럿을 배치하는 것에 대한 도전에 빠져있다. 간단한 수학을 (그들이 선 너비로 나누어 클릭 한 곳) 나는 클릭 한 줄을 알아낼 수 있습니다. 그러나 캐릭터를 클릭하기 위해서는 라인의 모든 문자의 경계 사각형을 비교하고 마우스가 들어가기 전에 캐럿을 배치해야합니다 (더 좋은 방법이 없다면). 이를 위해서는 각 문자열이 아닌 개별 문자의 정확한 범위를 가져와야합니다.
은 이미 어느 것도 작동 듯, 몇 가지를 시도했다 :
- Graphics::MeasureString하는 것은 누군가에 의해 권장되지 않으며, 을한다 내가
- TextRenderer::MeasureText이 더 정확 원하는 것을 제공하지만,
- Graphics::MeasureCharacterRanges 충분이 정확하지에 대한 32 문자 캡이 있고, 좀 의 경우 32 자 이상 긴 줄이 될 것으로 기대하고 있습니다
한계가있는 경우가 아니면 이러한 방법을 사용할 수 없다고 생각합니다. 나는 내가 이전에했던 것보다 훨씬 더 분명하게 나의 문제와 예상 된 해결책을 만들었 으면 좋겠다.
32 자의 뚜껑을 나타내는 Graphics :: MeasureCharacterRanges 링크에 아무것도 표시되지 않습니다. –
@ MarkRansom 나는 어딘가에 그것을 읽고, 나는 32+ 문자를 할 때 OverflowException을 받는다. – smoth190