Sida 1 av 1

Slider i MSVC 6.0

Postat: 12 december 2006, 11:13:33
av JJ
Problemet gäller "Slider"-kontrollen i Visual C++ 6.0, språk: C

Någon som är mer hemma på Windows-programmering än vad jag är?

Jag har gjort en dialogruta med resurseditorn. I dialogrutan finns en Slider. Jag kan fånga windowsmeddelanden som jag skall. Problemet är att jag inte kan läsa av Sliderns läge mha GetScrollPos() . Denna funktion returnerar alltid noll.

Jag har försökt med andra värden än SB_CTL på flaggan, med att använda funktionen GetScrollInfo() istället. GetLastError() returnerar 0 (=OK):

Dialogens procedur (editerad):

Kod: Markera allt

BOOL CALLBACK DlgProc(HWND hwnd, UINT iMsg, 
                      WPARAM wParam, LPARAM lParam)
{
       switch (iMsg)
       {
       case WM_HSCROLL:
          switch(LOWORD(wParam))
          {
          case SB_PAGERIGHT:
          case SB_PAGELEFT:
             nPos = GetScrollPos((HWND) lParam, SB_CTL); // <- Funkar ej
             break;
          }
       }
}

Postat: 12 december 2006, 12:01:19
av Icecap
Med 'Slider' menar du då en potentiometerliknande slider eller scroll-delen av en textruta?

Jag använder BCB6 och om man då har en TrackBar (antar att det är motsvarigheten) är det "Position" som gäller.

Jag får en känsla av att du ber om scroll-positionen med ditt anrop, för mig är 'Scroll' just detta att rulla ner sidan vid mycket text t.ex.

Postat: 12 december 2006, 12:50:24
av JJ
Just det, jag menar en skjut-pot. Den heter "Slider" hos mig. Ja, ordet "scroll" är väl det du skriver...men om jag fattat saken rätt så behandlas "Slider" som en scrollbar.

Postat: 12 december 2006, 13:29:36
av Icecap
Jag ids inte installera M$VC på min dator men kan du inte läsa ut vilka properties kontrollen har?

De flesta visuella verktyg har mycket logiska namn på de olika delarna vilket är grejen som får mig att undra.

Å andra sidan finns det ju ett bra forum (även för dom stackarna som sitter i M$-träsket): Kolla här vetja, det kan vara värd att regga sig där kanske?

Men jag undrar detta med hjälpen, jag kan markera en komponent och trycka F1 vilket får fram alla properties, exempelkod och allt annat jag vill veta om komponenten...... kan inte du det bör du kanske hitta ett bättre verktyg om du kan byta.

Postat: 12 december 2006, 14:10:32
av JJ
MSVC är inget vanligt grafiskt verktyg, properties och sådant finns inte på samma sätt som i VB och Borlandverktygen etc. Och det är ju just därför de verktygen finns...

I mitt fall funkar det inte att byta verktyg tror jag, jag modifierar ett exempel nämligen...men du har rätt, programmera direkt mot windows-APIt skall man inte göra om man kan låta bli!

Jag har hittat en workaround nu iallfall så jag tar mig vidare. Tack för dina svar och för länktips!

Postat: 12 december 2006, 18:26:49
av karlstedt
Du måste mappa en variabel till kontrollen.

Markera slidern och Öppna MFC Class Wizard (Ctrl+W). Gå till fliken 'Member variables' -> Add Variable.

Skriv i ett variabelnamn, tex: m_SlideCtrl.
Välj Control i Category-rutan.
klicka ok.

Använd sedan din kontroll med . (punktoperatorn).
typ:

Kod: Markera allt

int n;
m_SlideCtrl.SetRange(0,10)
m_SlideCtrl.GetPos(n);
förutsatt att du menar en nedanstående kontroll:
Bild

Postat: 12 december 2006, 19:40:38
av JJ
Jag skriver i C så jag har inte MFC.

Postat: 12 december 2006, 19:55:58
av baron3d
Använd Borland Builder!
Finns nu gratis som Turbo c++
http://www.turboexplorer.com/cpp