11. december 2002 - 23:34Der er
19 kommentarer og 2 løsninger
Menulinie der skal kunne trækkes rundt på skærmen + Anden Cursor!
hvordan jeg kan Trække et helt vindue rundt på skærmen....
Jeg har fjernet Borderen nemlig så den er "none" (eller hvad det nu lige er det hedder), og det virker også fint, men nu kan jeg jo ikke flytte vinduet derhen hvor jeg gerne vil have det, hvilket er lidt trist... :)
Det i så lige skal hjælpe mig med er hvordan jeg kan komme til at gøre det, uden at sætte den grimme Windows standart til...?? Evnt. så den kan trækkes på en: Shape eller en Label?
Vil også gerne lige vide hvordan jeg kan indsætte en anden Cursor, også her vil jeg gerne slippe af med dem i Windows, cursoren må meget gerne være animeret.
Benytter Borland Builder 5.0
Håber i kan hjælpe, er nybegynder så fjoller lidt rundt i det :)
1) Ved tryk på venstre museknap tjekker du om punktet ligger inden for det område, på vinduet, hvor du tillader at man kan trække det 2) Hvis ja, sætter du en variabel til true (lav fx en bool m_bMove, så du sætter "m_bMove=true;") 3) Når museknappen slippes sætter du "m_bMove=false;"
Så er alt du skal gøre, at tjekke i din mousemove handler om m_bMove er true og i så fald flytte vinduet sammen med musen (fx med MoveWindow eller SetWindowPos)
hmm... okay, fatter ærlig talt ikke lige hvad du mener Tam :) Men jpk forstår jeg da lidt mere af, jeg har kun arbejdet med programmering et par uger så jeg har stadig ikke helt fundet ud af hvordan det hele fungerer, kan du ikke uddybe det noget mere og vise hvad det er jeg skal skrive for at det kommer til at fungere?
og hvordan sætter jeg egentlig et animeret gif ind?
Giver gerne flere point hvis det kan hjælpe lidt på det ;)
Det er faktisk ikke nogen dårlig idé den tam kommer med.
Når han skriver du skal håndtere WM_NCHITTEST er det fordi det er id'et på den message der skal håndteres. På samme måde sendes der fx en message med id'et WM_LBUTTONDOWN når du trykker på venstre museknap.
Nu kan jeg ikke lige huske hvordan man gør i Builder, men du skal altså have genereret en kodestump hvor du kan agere på den message. På samme måde som du gør når du fx vil fange et museklik, skal du vælge at fange denne event. Den metode du skal have fat i kan fx hedde OnNcHitTest (det gør den i VC++), prøv at kigge metoderne igennem og kig efter en hvis navn ligner...
ehh.... ?? :) ik lige sikker på hvad du mener, jeg kan sq ikke finde ud af hvad det er jeg skal skrive nogen steder, men hvis jeg opretter de 3 events kommer det til at se sådan her ud.... :
void __fastcall TForm1::Shape1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) {
Jep, så skal du have defineret en boolsk variabel i TForm1 klassen. Builder har garanteret noget indbygget funktionalitet til det, fx noget lign "add member variable". (Du kan naturligvis også vælge at tilføje den manuelt)
Det du skal bruge er noget lign.: bool m_bMove;
void __fastcall TForm1::Shape1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { if(true) m_bMove = true; }
void __fastcall TForm1::Shape1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { m_bMove = false; }
void __fastcall TForm1::Shape1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { if(m_bMove) { // Vi skal flytte vinduet her // Du kan måske bruge SetWindowPos eller MoveWindow (se evt. dokumentation) // Det kan også være der er en funktion på din form, der kan flytte den... } }
MoveWindowOrg Changes the location of the point (0,0) within a device context.
men det vel ik den, kan ik finde SetWindowPos eller MoveWindow :( men hvor skal den ligge under hvis det er? Er det ikke under formen? har prøvet at søge efter det men der finder den heller ik en skid... :(
Og nu skal jeg aflevere om en time :( skynd dig skynd dig ;)
hm... så'e det sq nok bare mig der er lidt for newbie til det her :)
kan bare ik finde det :(
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.