Jeg er en VB programmør som nu er færdig med et projekt, dette project skal ligge på en cd, af den grund vil jeg gerne inkludere et autorun program. Da visual basic ikke helt er egnet til autorun stiller jeg spørgsmålet her. Programmet skal indeholde disse links * Installationen af programmet * Installationen af IE6 * Starte stifinder (på cd'en)
Jeg har lavet et hurtigt billede af hvordan det gerne skulle se ud: http://web.imaginary.dk/autorun.jpg De røde firkanter er billeder: det kunne være ganz fantastisk hvis programmet loadede billederne fra det dir hvor programmet ligger (nemmere for en som mig at skifte billederne)
Jeg er villig til at give masser af flere point end annonceret
Ja, men de omhandler filen autorun.inf og hvordan man starter et program/html fil med den, det ved jeg hvordan man gør (fordi jeg har læst de artikler), det jeg leder efter er programmet der skal startes - og her mener jeg ikke at en html fil er nok.
Ønsker du et program eller at få at vide hvordan du selv laver det? Det burde være rimelig let at lave, men det vil hjælpe hvis du selv kan rette lidt og kompilere.
Hvis man har kendskab til C++ og gider læse en tutorial eller 2, samt gider at læse Microsofts dokumentation til de Windows kald, man er nødt til at bruge, er det relativt simpelt at lave den ønskede funktionalitet i ren Win32 C++ kode. Til gengæld er det svært at få det til at se pænt ud :-)
Jeg har lavet et første udkast, der er ikke nogen billeder på endnu, men fortæl mig om det kan bruges som en start. I funktionen DialogFunc er der en case 101: (og case 102: osv) kode bliver udført for hver knap der bliver trykket på. Når du trykke på den første knap skulle notepad gerne starte med c-sourcen. For de andre knapper kommer der blot en box der siger hvilken knap der er trykket. Du skal så ændre det der sker når man trykker på hver knap så det passer til dit behov. Oftes skal RunCommand kaldes med den kommando der skal udføres som parameter. Jeg har kun VC++ 6.0, men jeg tror at 7.0 kan bruge den project fil der er med (apprun.dsw). Du finder koden her: http://home20.inet.tele.dk/midgaard/apprun.zip
Ok. Jeg vil prøve at putte nogle billeder på. Vil du have billeder på knapperne og teksten ved siden af, både billede og tekst på knappen eller billede ved siden af knappen og text på knappen?
Jeg har lavet en ny version med billder på knapperne og tekster ved siden af. Det går ud fra at billederne er 32 * 32 pixel, hvis de har andre størrelser skal du rette i både C og rc filen. Billederne skal være bmp billeder. Som det er lavet skal programmet kompileres når/hvis du laver nye billeder, jeg kan måske godt få det til at loade fra disk'en når det starter, hvis du hellere vil det.
Programmet er lavet med LCC og er i ren C (dvs ing MFC eller C++) så det burde kunne kompilere med stort set alle C kompilere på windows platformen (inklusive VC++).
Det med at loade fra disken gør ikke noget; jeg kan godt finde ud af at skifte billederne... [legede lidt med det og fik billedet til at "gå med ned" når man trykkede på knapperne (følte mig lidt stolt), legede lidt mere, og så virkede ikke noget... slettede og prøvede igen] Men, hvordan kan man så få billedet til at "gå op" når man kører musen over knapperne, og hvordan kan jeg få et baggrundsbillede?
I øvrigt, jeg kan godt se hvordan du "skriver" billedet til knappen, men jeg forstår ikke hvordan du referere de billede der er i rc filen, gætter på at det har noget at gøre med: 128:... ButtonBitmap[CtrlID - IDD_BUTTON_1] ... men så stopper min forståelse også...
I WinMain loader man bitmapperne (vha LoadBitmap(...)) til ButtonBitmap[]. I DrawItem() tegner man bitmapperne, CtrlID er ID'en på den knap som windows wil have tegnet. Den første har jeg kaldt IDD_BUTTON_1 som er defineret til at være 101 i headerfilen (apprunres.h) de øvrige knapper hedder IDD_BUTTON_2, IDD_BUTTON_3, IDD_BUTTON_4, som er det samme som 102 103 og 104. heraf følger at man slår op i arrayet ButtonBitmap med index 0..3 afhængig af hvilken knap der skal tegnes.
Jeg kan godt lave et baggrunds billede. Skal det dække hele boxen inklusive knapperne eller skal det kun dække det der ligger bag ved teksten? Det er lidt mere bøvlet at lave det så knapperne kommer til at "gå op" når man fører musen over dem (jeg ved ikke helt hvordan man gør).
Jeg sad og arbejdede lidt selv, og med den kode jeg har fået fra dig, kom jeg frem til hvordan jeg kan "skrive" baggrundsbilledet direkte til vinduet: Tilføjet:
Har jeg glemt noget, jeg har fået det til at virke, men jeg ved ikke om jeg har glemt noget... har hørt nogle rygter om at i c++ er det meget farligt at glemme at rydde op efter sig, når man lukker... [jeg føler mig meget stolt - dog hugget dele af koden fra et MS eksempel...]
Du mangler vist en DeleteDC(MemDC); Problemet med at glemme at delete sine gdi-objekter er mere at det sløver systemet meget ned hvis man har for mange ubrugte objekter til at flyde. Hvis man glemmer at kalde SelectObject(...) for at få valgt det gamle objekt, kan det have overraskende indvirkning på andre programmer. Bortset fra det ser koden fin ud. Har du det der skal bruges nu?
Efter lidt arbejde med det har jeg lavet et helt nyt projekt, jeg startede fra bunden med min nye viden om C++ (og med google til at finde stumper) Så har jeg fået sat et lille program sammen, med mouseover og mere, jeg tænkte om min kode lige kunne rettes for dumme fejl... http://web.imaginary.dk/code/iAutorun.zip
Jeg kan ikke lige få øje på nogen dummen fejl. Du bør dog sætte det gamle bitmap tilbage til din memory dc inden du afslutter. Noget i stil med m_dcMem.SelectObject(pBmpOld), der passende kunne puttes ind i en destructor for din dialog. Jeg ville nok have valgt at få knapperne (1-4) til at ligne knapper, så man kan se når man trykker på dem, men det er mere et spørgsmål om smag og behag.
"Sætte det gamle bitmap tilbage i min memory?" Det jeg ikke forstå?
Speaking of smag og behag, så blev jeg færdig med grafikken... uha... http://web.imaginary.dk/code/iAutorun.jpg Men jeg har lige et enkelt spørgsmål inden vi lukker og slukker, hvordan kan jeg finde ud af hvad bibliotek programmet er startet i? (Så jeg nemt kan regne filnavnet ud på installationen)
I øvrigt: Hvis der er nogen der er interesserede i at få "windows xp" knapperne så har jeg dem liggende i photoshop format - og jeg skal med glæde ligge dem ud.
Når man vælger et objekt (f.ex en bitmap eller en font) ind i en DC med SelectObject() returnerer denne det objekt der var der. Inden man frigiver DC'en skal man sætte det oprindelige objekt tilbage i DC'en (og dermed fjerne det objekt man satte ind).
Du kan få navnet (inklusive hele stien) på exe filen med GetModuleFileName(), du kan derefter bruge _splitpath til at udtrække drev og folder.
Det ville betyde meget for mig hvis du nu fik disse point, hvis ikke for din hjælp så ihvertfald for baggrundsbilledet i test programmet...
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.