Avatar billede stigc Nybegynder
16. maj 2000 - 19:32 Der er 24 kommentarer og
5 løsninger

Builder v4.0

Hvordan skriver jeg et program som ikke udføres i et window, med som kører direkete på skrivbordet?
Avatar billede stigc Nybegynder
16. maj 2000 - 19:33 #1
Skriv gerne et eksemple......
Avatar billede lrj Nybegynder
16. maj 2000 - 21:28 #2
På skrivebordet? Hvad i alverden mener du med det? Ligesom active desktop? I så fald laver du vel en hjemmeside :o)
Avatar billede stigc Nybegynder
16. maj 2000 - 21:31 #3
Jeg har en screensaver hvor en mand gå rundt på skrivebordet og laver skæg og ballade med vinduerne. Det er sådan noget jeg mener......
Avatar billede tigerdyr Nybegynder
16. maj 2000 - 22:29 #4
Hmm, laver en transparent baggrund ?
Avatar billede stigc Nybegynder
17. maj 2000 - 00:06 #5
Tror du det er det man gør? Det virker jo nemt nok. Er det en attribut i window-objektet?
Avatar billede stigc Nybegynder
17. maj 2000 - 00:07 #6
Eller er det farven man kan gøre transparent?
Avatar billede tigerdyr Nybegynder
17. maj 2000 - 08:44 #7
Nu har jeg aldrig selv arbejdet med Builderen... men i de visuelle programmeringssprog jeg har leget med, har man kunne sætte et vindues baggrund til "Transparent" og derved kunne se det bagvedliggende (eks. desktoppen)... og jeg vil næsten tro at du også sagtens (på en eller anden måde) kan slå vindue/menu-baren fra (et eller andet med menu-bar visible = false ??)
Avatar billede soepro Nybegynder
17. maj 2000 - 10:37 #8
En windows application har ALTID en form, hvis den skal skrive noget som helst på skærmen. Man kan ikke have f.eks. en TImage (som kunne bruges til at lave små animerede mænd) uden også at have en TForm. Det er TImage man kan gøre Transparent - men det er i forhold til den form som TImage bliver vist på.

Løsningen er derfor at nappe et bitmap snapshort af skrivebordet når din applikation startes op, og simpelthen vise den på din form - som så selvfølge hverken skal have border, minimize/maximize ikoner osv. og have typen wsMaximized. Hermed kan du lave din TImage component transparent og lave dine animationer der. Det vil så for brugeren se ud som om at det kun er animationen der kører.

De programmer du tænker på er (sjove scrensavers) skrevet uden om forms osv. om tegner direkte i skærmhukommelsen. Jeg fandt selv noget om teknikken ved at søge i alta-vista på screensavers, men hvor det var husker jeg ikke mere.
Avatar billede tigerdyr Nybegynder
17. maj 2000 - 10:55 #9
Hmm, mener da det var VB hvor selve formen kunne gøres transparent... (som sagt har jeg aldrig leget med Builder)
Avatar billede stigc Nybegynder
17. maj 2000 - 14:00 #10
Det skal være muligt at bruge skrivebordet samtidigt. Så det med at capture et billede at skrivebordet holder ikke.....

Derfor får tigerdyr point....

soepro>> Hvis du finder noget om det med at gå dirkete i skærmhukommelsen, giver jeg gerne en bunke point.....
Avatar billede stigc Nybegynder
17. maj 2000 - 14:01 #11
tigerdyr kom med et svar.......
Avatar billede tigerdyr Nybegynder
17. maj 2000 - 14:43 #12
Okay, værsågod...et stk svar :o))
Mange tak!
Avatar billede soepro Nybegynder
17. maj 2000 - 15:15 #13
Ingen af os gav dig vist det svar du behøvede - hvad med at dele !?!?
Avatar billede tigerdyr Nybegynder
17. maj 2000 - 17:08 #14
Lyder retfærdigt :o)
Avatar billede stigc Nybegynder
17. maj 2000 - 17:23 #15
Ok jeg var vist lidt for hurtig......
Jeg ser nu at det ikke kan lade sig gøre at gøre et window transparent i builder. Og spørgsmålet var jo møntet på denne compiler.......

Derfor venter jeg med at give point til jeg får noget jeg kan bruge..

Håber ikke jeg træder nogen over tæerne.
Avatar billede tigerdyr Nybegynder
17. maj 2000 - 17:34 #16
Ok... jeg tror i øvrigt du får MEGET svært ved at lave noget i Builder, hvor du kan "bruge" desktoppen "igennem" dine applikation... så er vi nemlig derovre hvor du bliver nødt til at skrive direkte til grafikkortet/skærmen...og gå helt uden om Windoze!
Avatar billede flarup Nybegynder
01. juni 2000 - 14:39 #17
Du skriver blot til hwnd for desktoppen.
Avatar billede stigc Nybegynder
01. juni 2000 - 16:48 #18
flarup>> det kræver en forklaring.
Avatar billede flarup Nybegynder
01. juni 2000 - 20:21 #19
Det er et par dage siden jeg har programmeret så low level på windows, så jeg kan ikke huske alle detaljerne.
Men grundlæggende, så har windows API kald til at lave grafik.
Når du bruger disse kald, skal du bruge en handle for at angive hvilket vindue der skal skrives i.
Og skrivebordet, har også en sådan handle.
Så næste skridt for dig er at læse windows API igennem i help systemet.
Avatar billede soepro Nybegynder
04. juni 2000 - 12:12 #20
flarup >> Lyder fornuftigt - men hvor får vi handlen fra. (Hvis dette er måden, vil det også kunne lade sig gøre i C++ Builder - men så kan du ikke benytte de standard komponenter der er i VCL'en.)
Avatar billede bjk Nybegynder
08. august 2000 - 18:58 #21
Denne funktion, declared i winuser.h, returnerer et handle til desktoppens window..

HWND GetDesktopWindow(VOID);

Avatar billede tuxen Nybegynder
23. august 2000 - 16:07 #22
Jeps og derfra skal du have fat i Canvas´en til dektop gennem dets handle.
Og Vås alle Win app.s behøver ikke at have en form !Alt i windows er sådan set et vindue, knapper menuer olign.
Det er default at der er den meget bekendte ramme rundtom med overbjælke og luk/minimer og max knapper, men det kan man selv sætte op når man laver sin vindueklasse i windows.
Derefter registreres klassen og man kan begynde at kreere vinduer med egenskaber fra sin klasse.
Derfor:
Lav din custom vindue klasse hvor du fjerner alt unødigt.
Derefter laver du en canvas (tegneoverflade) til dit vindue der har den størrelse og position du selv har angivet (og ikke indeholder andet end ingenting), og begynder at tegne alle dine flotte tegninger på den.
Som projekt skal du vælge console wiz, og derefter vælge win32 GUI APP.
Så ruller du !
Thue
Avatar billede soepro Nybegynder
24. august 2000 - 10:11 #23
thue >> vi venter alle spændt på at du \"lige\" brygger et kort eksempel. At skulle begynde at registrere nye windows typer i Windows registry\'en lyder for mig som lidt overkill - der må da være en anden måde. Hvad men Screen->Desktop variablen ??? Giver den os ikke også en handle og dermed et canvas vi kan tegne på ???
Avatar billede tuxen Nybegynder
24. august 2000 - 10:30 #24
Først lige en ting.
At define sin vindues klasse har ikke noget med registry at gøre.
I et almindeligt windows prg som man laver fra grunden SKAL man lave sin egen vindues klasse, registrere den og derefter lave et par vinduer som så arver de egenskaber man har angivet til sin klasse.
Mange kører med default værdier til initialisering af klassen, men det behøver man ikke.
Det er muligt at skaffe sig af med alle de \'almindelige\' features som et default vindue har, ved at specificere sin klasse anderledes.
------------------------------------------
jo du kan få fat i desktop canvas via det returnerede handle fra ovenstående funktion.
canvas for desktop fylder hele desktop, hvilket jo egentlig ikke er et prob da du bare skal tegne det rigtige sted.

Det der taler for at have sin egen app. med sit eget vindue der ikke består af andet end en canvas (ganske ligesom desktop som jo også er et vindue), er at man får meget mere kontrol. Da det ikke er dig der har lavet desktop ved du heller hvordan den fungerer indeni, og du kan ikke lige erstatte de almindelige højremenuer i desktop med din egen højrekliksmenu som du jo kan hvis du selv har lavet din egen App.
Avatar billede soepro Nybegynder
24. august 2000 - 11:26 #25
Du skriver stadig \"registrere den\" - det gør jeg IKKE på noget tidspunkt ellers !
Avatar billede tuxen Nybegynder
24. august 2000 - 13:11 #26
Nej fordi du bruger Builder med vcl.
Det gør jeg også, men mange gange kan det betale sig at lave sit Win prg fra grunden og det gør man som ovenstående. Prøv at lave en console app med Win32 GUI som projekt i din builder.
Registreringen til operativsystemet er et enkelt funktionskald der fortæller windows om min vinduesklasse. Det er ikke mystisk og det har ikke noget med registry at gøre.
Builderen gør det samme med de prg du laver men det ser du ikke, ligesom der er mange andre ting man ikke har fuld kontrol over i builderen, som  ellers er et kanonfedt miljø.
Avatar billede soepro Nybegynder
24. august 2000 - 13:42 #27
tuxen >> Nåhhh, så er jeg med. Betyder det at ved at lave Win32 GUI console app, så har vi i C++ Builder faktisk \"samme\" miljø/muligheden som i MVC ???
Avatar billede tuxen Nybegynder
24. august 2000 - 13:47 #28
oh yeah :-)
Så kan du lave alt fra grunden af.
1. byg klasse.
2. registrer den til OS.
3. Lav et par vinduer.
4. Lav en eventhandler.
5. Hop i mainloop og reager på events.
6. Smid stængerne op på bordet og snup en skraver i sofaen.

Thue

Avatar billede stigc Nybegynder
26. september 2000 - 18:09 #29
tid til at lukke.........
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester