3

私はトラックバーを持っていますが、ある時点でその値はテキストを変更することになっています:

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) キャストを削除することでした。ありがとう。

4

2 に答える 2