私はトラックバーを持っていますが、ある時点でその値はテキストを変更することになっています:
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 です。何らかの理由で、10 だけがテキストに出力されます (トラックバーの値が 15 から 19 の間であるため、テキストは 1 です。トラックバーの値が 20 から 29 の間である場合、テキストは2 で、トラックバーの値が 30 から 35 の間なので 3 になります。
もちろん、トラックバーの 10 だけでなく、絶対値をテキストに表示したいのです!
私は何をすべきか?
編集:デバッガーを実行した後、トラックバーの値によって buf DOES になることがわかりました。問題は SetWindowText 行にあるようです。
編集: 1 つの解決策は、 SetWindowText を SetWindowTextW に変更し、(LPCSTR) キャストを削除することでした。ありがとう。