Scrollbar im Dialog



  • hallo,

    also ich hab um mein Programm ein wenig zu verkleinern (ich sehe langsam nicht mehr durch 😞 ) einen Dialog, der eh nur auf NT-Rechnern lief als Resource neu geschrieben und benutze eine angepasste Version der WinProc. Leider will mein Scrollbar nun nicht mehr scrollen 😞
    Wie gesagt, das funzte mal als das Fenster noch mit CreateWindow gebaut war..

    BOOL CALLBACK
    ToolProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
      static C_MyButton *Wasser, *Ebene, *Berg;
      SCROLLINFO ScI;
      HDC hDC;
      PAINTSTRUCT ps;
      HRGN Circle; RECT rect;
      HBRUSH Brush;
      int CiRad; 
      char out[10];
    
        switch (message)                  /* handle the messages */
        {
    
            case WM_CREATE:
                BSize = GetDlgItem (hwnd, SCROLL_01);
    
                ScI.fMask=SIF_RANGE | SIF_PAGE | SIF_POS;
                ScI.nMin = 1; ScI.nMax = 100; ScI.nPage = 5;  ScI.nPos = 1;
                SetScrollInfo(BSize,SB_CTL,&ScI,TRUE);
    
                break;
            case WM_DESTROY:
                delete Wasser; delete Ebene; delete Berg;
                break;
    
            case BUTTON_BERG:
                Grid->ActTool = 1;
                break;    
            case BUTTON_EBENE:
                Grid->ActTool = 2;
                break;    
            case BUTTON_WASSER:
                Grid->ActTool = 3;
                break;    
    
    /* **** Eventhandler für den Scrollbar ********************************** */
            case WM_HSCROLL:
                switch (LOWORD (wParam))
                {
    
                  case SB_LINEUP:  // über Dreieck
                     Grid->ScPos -= 1;
                     if (Grid->ScPos < 1) Grid->ScPos = 1;
                     break;
                  case SB_LINEDOWN:// über Dreieck 
                     Grid->ScPos += 1;
                     if (Grid->ScPos > 100) Grid->ScPos = 100;
                     break;
                  case SB_PAGEUP: // über Klick in Balken
                     Grid->ScPos -= 10;
                     if (Grid->ScPos < 1) Grid->ScPos = 1;
                     break;
                  case SB_PAGEDOWN: // über Klick in Balken
                     Grid->ScPos += 10;
                     if (Grid->ScPos > 100) Grid->ScPos = 100;
                     break;
                  case SB_THUMBTRACK:// über ziehen des Balken
                     Grid->ScPos = HIWORD(wParam);
                     break;
                  default: 
                     break;   
    
                }
                   ScI.fMask= SIF_POS; ScI.nPos = Grid->ScPos;
                   SetScrollInfo(hwnd,SB_CTL,&ScI,TRUE);
       //           SetScrollPos(BSize, SB_CTL, Grid->ScPos, TRUE);
                  InvalidateRect(hwnd,NULL,TRUE);
                break;
    /* **** ****************************** ********************************** */
    
    /* **** Neuzeichnen des Pinselkreises in aktueller Größe etc. *********** */
            case WM_PAINT:
                hDC = BeginPaint(hwnd,&ps);
    
                /* zirkel zeichnen */
                  CiRad = (Grid->ScPos/4);
                  Brush = CreateSolidBrush(BLACK_BRUSH);
                  Circle = CreateRectRgn(29-CiRad,100-CiRad,29+CiRad,100+CiRad);
                  FillRgn(hDC, Circle, Brush); 
                /* Text ausgeben */  
                  sprintf(out,"%i", Grid->ScPos);
                  rect.left = 0; rect.top = 130, rect.bottom = 150; rect.right = 58;
                  DrawText(hDC,(LPSTR) out, strlen(out), &rect, DT_CENTER);
                /* aufräumen */
                EndPaint(hwnd, &ps);
                DeleteObject (Brush);
                DeleteObject (Circle);
                DeleteObject (hDC);
                break;    
    /* **** ***************************************************** *********** */
            default:                      /* for messages that we don't deal with */
                return FALSE;//DefWindowProc (hwnd, message, wParam, lParam);
        }
    
        return TRUE;
    }
    

    hier auch nochmal die Resource:

    DD_TOOLBOX DIALOG DISCARDABLE  100,100, 40, 100
    STYLE WS_POPUP|WS_CAPTION|WS_VISIBLE
    CAPTION "Tools"
    FONT 8, "Helv"
    BEGIN
      PUSHBUTTON "Berg",  BUTTON_BERG,    0, 0,40,12
      PUSHBUTTON "Ebene", BUTTON_EBENE,   0,12,40,12
      PUSHBUTTON "Wasser",BUTTON_WASSER,  0,24,40,12
      SCROLLBAR  SCROLL_01,               0,36,40, 8, SBS_HORZ
    END
    

    [ Dieser Beitrag wurde am 04.12.2002 um 19:00 Uhr von DocJunioR editiert. ]


Anmelden zum Antworten