Oprettet lør. d. 13. september 2003 kl. 22:29:12

kamikaze
kamikaze (23.227 point. Point ude: 270)

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.

På forhånd tak.

Skrevet søn. d. 14. september 2003 kl. 01:10:00| #1

bertelbrander
bertelbrander (17.270 point)
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).

Skrevet man. d. 15. september 2003 kl. 14:57:51| #2

kamikaze
kamikaze (23.227 point)
Tak, jeg prøver lige.

Skrevet man. d. 15. september 2003 kl. 15:07:55| #3

kamikaze
kamikaze (23.227 point)
Jeg mangler vist en header ell. lign:
error C2065: 'InitCommonControls' : undeclared identifier

Skrevet man. d. 15. september 2003 kl. 15:14:58| #4

kamikaze
kamikaze (23.227 point)
Header:
#include "commctrl.h"

Skrevet man. d. 15. september 2003 kl. 15:30:20| #5

kamikaze
kamikaze (23.227 point)
Ahhhh, det er rækkefølgen i .rc-filen der afgør hvem der er 'buddy'.

Ok, det virker nu, men jeg har 3 problemer:

1) Jeg kan ikke få UDM_SETRANGE til at virke
2) Jeg skal bruge negative værdier, og
3) Jeg skal bruge floating point værdier

Ved du (eller andre) hvordan jeg gør det?

Skrevet man. d. 15. september 2003 kl. 15:44:30| #6

kamikaze
kamikaze (23.227 point)
Mht. 1 og 2 virker flg.:
SendMessage(SpinHWnd, UDM_SETRANGE, 0, MAKELONG(25, -25));
eller
SendMessage(SpinHWnd, UDM_SETRANGE32, -1000.0f, 1000.0f);

Men altså ikke MAKELPARAM()

Er der nogen der har prøvet at benyttes floats?

Skrevet man. d. 15. september 2003 kl. 20:35:47| #7

bertelbrander
bertelbrander (17.270 point)
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.

Skrevet man. d. 15. september 2003 kl. 23:02:36| #8

kamikaze
kamikaze (23.227 point)
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)

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Updater Hybrid App

Oprettet den 18. april 2012 kl. 13.29
sir_madsen giver 100 point for svar | Giv et svar »

Ansi-c win32API - kan ikke oprette Richedit4.1 kontrol

Oprettet den 16. april 2012 kl. 22.13
cblcbl giver 60 point for svar | Giv et svar »

Iphone Objective C - Sætte image på et imageview.

Oprettet den 7. april 2012 kl. 11.36
lasserasch giver 30 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Læserne: Her er vores værste it-indkøb

Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan siger du farvel til Facebook

Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.


Nyheder fra Computerworld

Teaser billede

Galleri: De fedeste håndholdte gennem 40 år

Her har du de mest banebrydende håndholdte computere gennem alle tider.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger