13. september 2003 - 22:29Der er
7 kommentarer og 1 løsning
Spin Button Control (Up/Down Control) i Windows API
Hej.
Er der nogen der ved hvordan en Spin Button Control (også kaldet en up/down control) fungerer i Win32 API (ikke MFC)?
Jeg har en dialogbox hvorpå der er en række edit boxe, og til hver edit box vil jeg gerne have en spin button. Så vidt jeg har kunnet læse mig til, kan man sætte en 'buddy' til spin control'en, men jeg kan kun finde MFC dokumentationen og det er ikke en MFC applikation.
I rc-filen for din dialog putter du noget der ligner: EDITTEXT IDC_EDIT1,26,25,39,13,ES_AUTOHSCROLL CONTROL "Spin2",IDC_SPIN2,"msctls_updown32",UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ARROWKEYS, 67, 25, 16, 16
På denne måde finder den selv ud af at den skal matche spin button'en med edit box'en.
For at få det til at virke skal du huske at kalde InitCommonControls() inden du kalder DialogBox(...), f.ex i WinMain().
Du skal også huske at linke med comctl32.lib
Du kan bruge følgende til at sætte range for din spin/edit: HWND SpinHWnd = GetDlgItem(hDlg, IDC_SPIN2); SendMessage(SpinHWnd, UDM_SETRANGE, 0, MAKELPARAM(25, 0)); Hvor 25 er max og 0 er min (det sidste 0).
Jeg er ret sikker på at man ikke kan bruge andet en int's med en standard spin. Der vel også et problem med at definere hvor meget den skal ændre på tallet når der trykkes på knapperne.
Det burde være rimelig let at lave en simpel spin der virker med floats, vha to knapper.
Du kan i øvrigt bruge UDM_SETBUDDY til at fortælle din spin hvilken edit den skal modificere.
Ja, som standard kan man kun bruge int's. Men den sender en notifikation som kan fanges med WM_NOTIFY, og der kan man aflæse værdien (vha. UDM_GETPOS), dividere med fx. 100.0f, og så tælle sin værdi op i edit box'en manuelt.
På den måde kan man selvfølgelig ikke bruge autobuddy, så det bliver til en del mere kode - men det bliver nok måden jeg gør det på.
Tak for din hjælp, jeg kom da godt på sporet :o)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.