我有一个轨迹栏,在某些时候它的值应该改变文本:
case WM_HSCROLL:
{
LRESULT pos = SendMessage(trackBar, TBM_GETPOS, 0, 0);
WCHAR buf[3];
wsprintfW(buf, L"%ld", pos);
SetWindowText(trackBarValue, (LPCSTR)buf);
}
break;
轨迹条的范围从 15 到 35。由于某种原因,只有十位被打印到文本中(因为我的轨迹条的值在 15 到 19 之间,文本为 1,当我的轨迹条的值在 20 到 29 之间时,我的文本是2,它变成 3,因为我的轨迹栏的值在 30 到 35 之间。
当然,我希望我的文本显示我的轨迹栏的绝对值,而不仅仅是它的十位!
我该怎么办?
编辑:运行调试器后,我知道 buf 确实是由 trackbar 的值决定的。问题似乎与 SetWindowText 行有关。
编辑:一种解决方案是将SetWindowText 更改为 SetWindowTextW 并删除 (LPCSTR) 演员表。谢谢人们。