Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Problem mit Scrollbars

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
19.11.2003, 12:26 Uhr
tin24



Ich habe ein kleines Programm geschrieben, um Bitmap zu drehen usw...
Da aber manche Bilder viel größer sind als mein Fenster möchte ich nun Scrollbars hinzufügen. Ich habe auch schon andere Beispielprogramme gefunden, aber wenn ich versuche den Code einzubauen, passiert nichts oder ich bekomme eine Fehlermeldung, dass mein Pointer vom Scorllbar ins Nirvana zeigt.

Das einzige, was mir aufgefallen ist, ist das mein Programm public CBitmap ist und die anderen Programme public CWnd oder public CWinApp sind. Vielleicht liegt es daran.
Man kann doch nicht jetzt erwarten, dass ich mein Programm in diese Klassen umschriebe, oder?

vielen Dank

Martin
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.11.2003, 12:42 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


also erstens ist das nicht gerade ne ANSI-C Frage und zweitens kann dir mit so wenig info hier bestimmt keiner aus dem hut helfen
lass mal ein bisschen Quellcode sehen (bitte codetags benutzen)
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
19.11.2003, 12:52 Uhr
ao

(Operator)



Zitat:
tin24 postete
Man kann doch nicht jetzt erwarten, dass ich mein Programm in diese Klassen umschriebe, oder?


Wo kämen wir denn da hin?!? ;-)

Soviel ich weiß, ist CWinApp eine Basisklasse, die extra dafür gemacht wurde, dass MFC-Applikationen davon abgeleitet werden. So was in ein bestehendes Projekt einzubauen ist immer viel Frickelkram und verlangt genaue Kenntnis darüber, wie ein MFC-Projekt aufgebaut ist.

Der einfachste Weg für dich dürfte sein, ein neues MFC-Projekt aufzumachen (mit dem Wizard) und die Bitmap-Dreh-Funktionen dort einzubauen. Dann klappts auch mit dem Scrollbar.

Ich verschieb das hier mal nach MFC.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
19.11.2003, 12:54 Uhr
tin24



Du musst mich entschuldigen, denn ich bin noch nicht, ein so geübter Forenbesucher, bzw bin ich ein C++ Neueinsteiger

Der Programmcode den ich benützen möchte:

void CScrollBitmapDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
switch (nSBCode)
{
case SB_TOP:
sourcex = 0;
break;
case SB_BOTTOM:
sourcex = INT_MAX;
break;
case SB_THUMBTRACK:
sourcex= nPos;
break;
}
m_hbar.SetScrollPos(sourcex);
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}

laut mir, dürfte hier die Position der Maus gesetzt werden.
Aber der Pointer bekommt keine Info vom Scrollbar.
In den Beispeilcode wird der Pointer nur einmal im header aufgerufen (nur dort wo man die Message beschreibt) und kommt nur noch einmal im Titel der Message und am Ende vor (siehe Code).
Woher bekommt dieser den Wert
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
19.11.2003, 13:12 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


wie hast du den die range von dem scrollbar eingestellt?
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
19.11.2003, 13:23 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ich würde mal sagen das du einfach nur

CScrollBitmapDlg durch deinen Klassen namen ersetzen musst! (bzw mim Klassenassi OnHScroll-Benachrichtigung einfügen, dann den inhalt deiner funktion in die generierte einfügen.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
19.11.2003, 14:08 Uhr
tin24



ich bin jetzt schon mit diesem Probelm seit einigen Tagen beschäftigt und habe diese kombination die du (FloSoft) mir vorgeschlagen hast, schon ausprobiert, aber die Position des Scrollbars bleibt dennoch immer an der Ursprungsstelle.
Eine weitere Frage: Buttons und andere Felder habe alle ein Klickereignis, aber bei den Scrollbars nicht(zumindest im Wizard nicht), man kann im Dialogfenster die Funktion onHscroll einbinden, aber wie will man hier unterscheiden, um welchen Scrollbar es sich handelt, wenn mehrere im Dialogfenster vorhanden sind... ( einer wurde mir schon reichen, aber trotzdem).

Mein Prog. besteht nur aus einem Dialogfenster, und das Bild das ich drehe erscheint direkt darin. Es wäre möglich, dass ich ein weiteres Dialogfenster aufmache, und dort mein Bild zeichen ( dort könnte ich auch die klasse auf CWnd ändern), aber ich denke mir es wird doch(!!) eine Möglichkeit geben, um mein Bild direkt in meinem Dialogfenster zu zeichnen.
Ich habe es auch schon mit den Schrollbars probiert, die man unter den Eigenschaften des Dialogfensters einstellen kann, aber das hat auch nichts genützt.
könnte es auch daran leigen, dass ich Win 2000 benütze? denn ich hatte schon einmal das Vergnügen; denn einige Befehle funktionieren dort nicht so richtig.

Martin
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
19.11.2003, 14:15 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


also ich nutze auch windows 2000. ich habe mal sowas ähnliches gemacht bei mir funzt das wunderbar

C++:
if(pScrollBar==GetDlgItem(IDC_HZOOMSCROLL_CAM1)){
        switch (nSBCode){
            case SB_THUMBPOSITION:
                pScrollBar->SetScrollPos(nPos);
                break;
            case SB_LINERIGHT:
                pScrollBar->SetScrollPos(pScrollBar->GetScrollPos() + 32/zoom1);
                break;
            case SB_LINELEFT:
                pScrollBar->SetScrollPos(pScrollBar->GetScrollPos() - 32/zoom1);
                break;
            case SB_PAGERIGHT:
                pScrollBar->SetScrollPos(pScrollBar->GetScrollPos() + 32);
                break;
            case SB_PAGELEFT:
                pScrollBar->SetScrollPos(pScrollBar->GetScrollPos() - 32);
                break;

        }//end switch

        topLeftPicCorner1.x=pScrollBar->GetScrollPos();
    }


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
19.11.2003, 14:24 Uhr
tin24



also ich werde das mal probieren...
einige Fragen:
* der Code wird in onHscroll eingebunden, oder?
* was ist in diesem Fall topLeftPicCorner1.x? (Was setz ich da ein? Brauche ich das)

danke!!

Martin
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
19.11.2003, 14:42 Uhr
tin24



Ich habe den Code unter onHscroll ein gebunden.... und....
ich glaube jemand hat ein Gummiband an meinem Scrollbar befestigt.
Der Schrollbar flutscht immer wieder links rüber.
nichts zu machen.
wenn ich nur wüßte was ich falsch mache????

Tin
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: