Scrollbar in DialogBox
-
Hallo Leute.
Ich habe eine ScrollBar in einer DialogBox.
Die Message WM_HSCROLL habe ich schon behandelt. Dort habe ich case (wParam) für die Pfeile, Schäfte und die Start- und Endposition. Nun möchte ich aber auch noch SB_THUMBTRACK behandeln, aber WM_HSCROLL wird nicht mit dem wParam = SB_THUMBTRACK gesendet - heißt ich kann den ThumbTracker verschieben, aber beim Loslassen verharrt er in seiner ursprünglicchen Position.
Was muss ich tun, damit SB_THUMBTRACK in DialogBoxen gesendet wird? muss ich da was aktivieren?
Danke.
case WM_HSCROLL: switch (wParam) { case SB_LINELEFT: case SB_LINERIGHT: case SB_PAGELEFT: case SB_PAGERIGHT: case SB_TOP: case SB_BOTTOM: dwFrequency = GetScrollPos(GetDlgItem(hDlg, IDC_FREQ_BAR), SB_CTL); if (wParam == SB_LINELEFT) { if (dwFrequency > FREQUENCY_MIN + 1) dwFrequency -= 2; else dwFrequency = FREQUENCY_MIN; } else if (wParam == SB_LINERIGHT) { if (dwFrequency < FREQUENCY_MAX - 1) dwFrequency += 2; else dwFrequency = FREQUENCY_MAX; } else if (wParam == SB_PAGELEFT) { if (dwFrequency > FREQUENCY_MIN + 19) dwFrequency -= 20; else dwFrequency = FREQUENCY_MIN; } else if (wParam == SB_PAGERIGHT) { if (dwFrequency < FREQUENCY_MAX - 19) dwFrequency += 20; else dwFrequency = FREQUENCY_MAX; } else if (wParam == SB_TOP) dwFrequency = FREQUENCY_MIN; else dwFrequency = FREQUENCY_MAX; SetScrollPos(GetDlgItem(hDlg, IDC_FREQ_BAR), SB_CTL, (int)dwFrequency, TRUE); SetDlgItemInt(hDlg, IDC_FREQ_VALUE, (int)dwFrequency, FALSE); break;
-
Hallo,
die WM_HSCROLL-Nachricht wird falsch behandelt, denn:
MSDN-Doku schrieb:
The low-order word specifies a scroll bar value that indicates the user's scrolling request.
The high-order word specifies the current position of the scroll box if the low-order word is SB_THUMBPOSITION or SB_THUMBTRACK; otherwise, this word is not used.MfG,
Probe-Nutzer