Slider erstellen
-
hy, ich hab versucht einen Slider via CreateWindow zu erstellen, bei Buttons Editfelder klappt das ganz gut aber mit dem Slider bekomm ich das nicht hin.
kann mir da jemand helfen? was mach ich verkehrt?hWndParent & hInstance sind gültig. wärend hWndSlider immer Null ist.
CRect rc; rc.top = 0; rc.left = 0; rc.bottom = 50; rc.right = 100; DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_HSCROLL |TBS_AUTOTICKS | TBS_TOP; HWND hWndSlider = CreateWindow( "SLIDER",_T(""),dwStyle, rc->top,rc->left,rc->Width(),rc->Height(), hWndParent,(HMENU)IDC_SLIDER,hInstance,NULL);
-
Vielleicht weil es eine klasse "Slieder" nicht gibt

Kann mich jetzt auch irren habe ich aber noch nie bei CreateWindow was von gehört. Und falls es ein CommonControl ist vergiss die Header und lib nicht.MfG schirrmie
-
hmmm,
also ich hab in der msdn geschaut unter Common Control, dort schreiben sie das man die#include <windows.h> #include <shlwapi.h> #include <commctrl.h>includen soll,
aber von'er lib schreiben die da nix?
hab vorsichtshalber mal die ShLwApi.Lib mít in den system-ordner gepackt. mit gleichbleibenden ergebniss, das es nucht funzt.
-
Also hast du denn auch nachgeschaut ob "Slider" eine Common Control klasse ist? Wie gesagt ich glaube nicht! Und du brauchst für common Controls die commctrl.h und die Comctl32.lib! Woher hast du denn diesen "Slider" ist das irgendein Delphi oder VB "mist"

schirrmie
-
// Create HWND m_Handle = ::CreateWindow( TRACKBAR_CLASS, _T(""), WS_CHILD|WS_VISIBLE|TBS_AUTOTICKS, 10, // left 10, // top 150, // length 30, // height, m_hWndMain, reinterpret_cast<HMENU>(static_cast<ULONG_PTR>(ID_SLIDER)), 0, 0 ); // Max Steps ::SendMessage(m_Handle, TBM_SETRANGEMAX, true, 100); // Steps Wide for display the small lines ::SendMessage(m_Handle, TBM_SETTICFREQ, 10, 0); // Set Position ::SendMessage(m_Handle, TBM_SETPOS, true, 50); // Get Position int pos = static_cast<unsigned int>(::SendMessage(m_Handle, TBM_GETPOS, 0, 0));
-
danke evil,
das was mir gefehlt hat war die TRACKBAR_CLASS.hab da gleich das nächste problem.
ich würd gern ne eigene CallBack procedur für die Slider erstellen, doch der folgende Code läst die Slider wieder verschwinden.WNDPROC m_SliderProc = (WNDPROC)SetWindowLong(hWndSlider, GWL_WNDPROC, (LONG) SliderCtrlProc); LRESULT APIENTRY SliderCtrlProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { ... return CallWindowProc(m_SliderProc, hDlg, message, wParam, lParam ); }in der procedur selbst ruf ich momentan nur WM_HSCROLL ab.
weis jemand woran das liegen könnte?