windows.1ficus,
Evo, ba{ lepo {to su se setili da otvore i ovu temu...
Nedostatak ove teme je bila moja jedina sugestija na konferenciju PC.PROG
Mislim da je tek sada ova konferencija kompletna...
windows.2vitez.koja,
Pitanje: da li jedan MDI klijent (izvinite ako se frljam sa izrazima; mislim na
glavni prozor aplikacije) može da otvori pop-up prozor, a taj pop-up prozor
ondak da otvori jedan MDI child window ? Ako ne može, kako postići otvaranje
prozora X iz prozora Y (na pritisak gumba), pri čemu ni X ni Y nisu glavni ?
Pitanje2: da li MDI child prozor mož' da ima menije ?
Radim, ako je bitno, u Turbo Pascalu for Windows, neka bajata verzija.
windows.3ficus,
-> #2, vitez.kojaKojo, pa ima{ funkciju CreateWindow koja izme|u ostalog tra`i i HANDLE
roditeljskog (parent) prozora...
A, pritisak na taster je tako trivijalna stvar, da ne znam u ~emu je tvoj
problem...!
windows.5jevta,
Ima li neko ideju šta se zbilo ???
Startujem Windowse koji su najnormalnije radili do danas, kad ono
resetuje se mašina. Opet kucam win, opet reset ... Skinem memmaker,
turim Qemm 6.03 ista stvar. Dopišem u configu ono čuveno x=b000:bfff i
sve radi ok. Jasno mi je za qemm, ali šta bi memmakeru i to iz čista
mira posle dva meseca pouzdanog rada ? I šta mu uraditi da opet bude
pristojan (probao sam da ga reinstaliram , ali se isto ponaša) ?
windows.6milos,
Da li neko koristi Quick C for Windows??? Imam neke probleme oko podešavanja
boja, pa ako bi neko mogao da se javi na mail da mi pomogne...
windows.7bduke,
-> #5, jevta Kod mene je pomoglo tek kada sam ponovo instalirao
ceo WINDOWS. Pre toga se desavalo isto.
bduke
windows.8.obj,
Imam jedno pitanjce, možda se neko već petljao sa ovime.
Recimo, hoćemo da ceo dijalog ofarbamo sivom (COLOR_BTNFACE) bojom
umesto default boje (COLOR_WINDOW), slično kao u CorelDRAW!-u. To je
najlakše uraditi primanjem poruke WM_ERASEBKGND a zatim jednostavnim
farbanjem celog dijaloga. OK.
Problem je, međutim, u ostalim kontrolama dijaloga, najviše u
BUTTON-ima i STATIC-ima. Naime, na ivicama BUTTON-a ostaju 4 male bele
tačkice, i, mada mi sasvim jasno zašto se to dešava, želeo bih da znam
da li postoji način da se te tačkice uklone (tj. da se i one farbaju sa
COLOR_BTNFACE). Takođe, da je moguće na jednostavan način postaviti
boje pozadine i za STATIC kontrole - da se ne bi pravila posebna klasa
prozora (npr. MYSTATIC) samo da bi se postavile sopstvene boje?
Dakle, postoji li jednostavan način da se postavi boja pozadine za
BUTTON i STATIC kontrole? :)
Ou bi džej
windows.9nkbog,
-> #8, .obj> Dakle, postoji li jednostavan način da se postavi boja pozadine za
> BUTTON i STATIC kontrole? :)
Pogledaj opis poruke WM_CTLCOLOR. Ona ti traži "četku" (sic!) pozadine
za kontrole (a čini mi se i za dijalog - nema potrebe za petljanjem sa
brisanjem pozadine), sve što treba je da se vrati HBRUSH pozadine, a
kol'ko se sećam treba valjda izvršiti i SetBkColor na HDC-om kontrole
(dijaloga), inače ne promeni odma' boju, il' tako nešto.
NB.
windows.10milos,
-> #9, nkbogA možda je lakše da sa CreateSolidBrush lepo napravi svoju boju i da poruci
WM_CTLCOLOR prenese to. A još lakše je uzeti ResourceWorkshop iz TCWIN-a... ;)
windows.11.obj,
Verovatno znate da se startovanje programa koristi univerzalna funkcija
WinExec(LPSTR ime_programa, int inicijalni_prikaz).
Šta da se radi kada je potrebno startovati program tako da on sačeka da
se upravo startovana aplikacija završi? Na primer, program A startuje
program B koji generiše datoteku X koju koristi program A, pa je
neophodno da program A sačeka da se B završi pre nego što nastavi sa
radom.
Ja sam pronašao jedno rešenje koje i meni izgleda "prljavo", tj.
nepouzdano. To se svodi na sledeći program:
WinExec("dir > qwe", SW_NORMAL);
int cbNumTasks = GetNumTasks();
while(cbNumTasks == GetNumTasks());
WinExec("copy qwe sdf", SW_NORMAL);
Da li postoji neko bolje rešenje? Ovo ovde je upotrebljivo samo ako
program B svoj posao radi relativno kratko.
Ou bi džej
windows.12nkbog,
-> #11, .obj> Verovatno znate da se startovanje programa koristi univerzalna funkcija
> WinExec(LPSTR ime_programa, int inicijalni_prikaz).
> Šta da se radi kada je potrebno startovati program tako da on sačeka da
> se upravo startovana aplikacija završi?
Evo jedno rešenje:
//-----------------Iseci ovde--------------------------------------------
MSG msg;
HINSTANCE hinst;
hinst = WinExec("program",SW_NORMAL);
// Ovde treba proveriti da li je hinst ispravan - tj nije manji od 32
do {
if (PeekMessage(&msg,0,0,0,PM_REMOVE)) { // ovo da ne bi blokirali sistem
TranslateMessage(&msg); // treba dodati i proveru za WM_QUIT
DispatchMessage(&msg); // tj kraj programa kada stigne WM_QUIT
}
} while (GetModuleUsage(hinst) != 0);
//-----------------Iseci i ovde-------------------------------------------
Kada se program završi hinst postaje neispravan i GetModuleUsage vraća
nulu. Inače vraća neki nenulti ceo broj (a ne pola broja) (zavisno od broja
instanci programa koje su trenutno aktivne).
NB.
windows.13paki,
Pre par dana sam počeo da programiram pod Pendžerima (konkretno u
Turbo Pascal for Win) i oduševljen sam :) Još nijedna fatalna
greška u mom prvom programu ;)
Da li neko može da mi preporuči neku dobru knjigu (bilo u pisanom
bilo u elektronskom obliku) o programiranju pod Win (poželjno za
TPW, ali može i za C), jer samo pomoću Helpa, bez literature,
teško radim? Ima li još neko ovde, na Sezamu, ko programira u
TPW?
windows.14.obj,
-> #13, paki> Pre par dana sam počeo da programiram pod Pendžerima (konkretno u
> Turbo Pascal for Win) i oduševljen sam :)
Nije ni čudo. :) TPW 1.0 je bio (i ostao) fenomenalan program. Mali,
brz, moćan, generiše kratak i brz kod, dobar help, odličan IDE, puno
dodatnih alata sa strane (WRT, HC),... prosto savršen.
> Da li neko može da mi preporuči neku dobru knjigu (bilo u pisanom
> bilo u elektronskom obliku) o programiranju pod Win (poželjno za
> TPW, ali može i za C), jer samo pomoću Helpa, bez literature,
> teško radim?
Pa, pitanje je da li radiš u ObjectWindows ili kopaš po Win API-ju? Ako
je ovo prvo, teško (mislim nikako) naći literaturu osim originalne uz
TPW. A ako je ovo drugo, slobodno možeš da uzmeš bilo koju knjigu koja
obrađuje Windows API bez obrzira na jezik (mada je to uvek MS C).
Knjige koje obrađuju Windows API ionako ne koriste nikakve
specifičnosti nekih kompajlera, tako da sigurno nećeš imati problema sa
strane "kompatibilnosti" C i paskala.
Sad, koja knjiga? Definitivno je najpoznatija i najpopularnija knjiga
žarlsa Pecolda (Charles Petzold) "Programming Windows". Dosta je skupa.
U Budimpešti košta 150 maraka. Ima i ovde u Novom Sadu da se kupi u
knjižari ispod bioskopa pored dunavskog parka, i to znatno jeftinije
zato što se tu prodaju (i) strane polovne knjige. Dotična knjiga je
odlična, ima praktično sve što takva knjiga treba da ima. Ne mora
uopšte da se čita u celini (u stvari, ni ne može, jer je predebela) da
bi se nešto uradilo, tako je napisana. Tj., ne počinje, kako bih rekao,
od suštine, već odma' prelazi na komplikovanije primere i redom
objašnjava šta je šta. Knjiga vredi svaku uloženu paru.
Što se tiče elektronske pomoći, nisam još naleteo na neku "elektronsku
knjigu", mada ima dosta "poučnih tekstova" ;) čak i ovde na Sezamu,
pored ovolikih windowsomrzaca ;)). Primere po imenom adg*.zip (ili arj)
nemoj da skidaš (ako mene pitaš) pošto su neinformativni i dosadni ;)
Ali zato skini one wpj*.zip zato što tu ima nešto više, mada na
početničkom nivou. BTW, kada se nauče neke osnovne stvari, onaj
stardandan Windows API help (čija se, nešto izmenjena verzija nalazi i
u okviru TPW.HLP) je *sasvim* dovoljan za svakodnevno snalaženje. Tek
ako naleti nešto malo specifičnije što nije lako odma' naleteti u
HELP-u, pomaže dokumentacija. A mogu da ti pomognu i kolege sa Sezama,
samo pitaj. :)
Ou bi džej
windows.15djelovic,
-> #13, paki> Da li neko može da mi preporuči neku dobru knjigu (bilo u pisanom
> bilo u elektronskom obliku) o programiranju pod Win (poželjno za
> TPW, ali može i za C), jer samo pomoću Helpa, bez literature,
> teško radim?
Well, poziv Win API-ju je poziv Win API-ju, bilo da radiš na
Paskalu ili na C-u. Prema tome, ako dobiješ knjigu sa C primerima, nećeš
imati problema da se prebaciš na TP 4 Win. A najbolja knjiga na tržištu je
definitivno "Programming Windows" od Charles Petzold-a. Ukoliko imaš načina
da je dobaviš iz inozemstva, vikaj da ti ostavim detaljnije informacije.
windows.17paki,
-> #14, .obj> Ali zato skini one wpj*.zip zato što tu ima nešto više, mada na
> početničkom nivou.
Skinuo sam ih, i stvarno su dobri.
> BTW, kada se nauče neke osnovne stvari, onaj
> stardandan Windows API help (čija se, nešto izmenjena verzija
> nalazi i u okviru TPW.HLP) je *sasvim* dovoljan za svakodnevno
> snalaženje.
Da, tako je bilo i sa TP for DOS, sve što ti treba ima u helpu,
ali prvo treba da naučiš osnove.
windows.16paki,
-> #15, djelovic> Well, poziv Win API-ju je poziv Win API-ju, bilo da radiš na
> Paskalu ili na C-u. Prema tome, ako dobiješ knjigu sa C primerima,
> nećeš imati problema da se prebaciš na TP 4 Win.
Jasno, ukapirao sam to već i iz textova u R.
> A najbolja knjiga
> na tržištu je definitivno "Programming Windows" od Charles
> Petzold-a. Ukoliko imaš načina da je dobaviš iz inozemstva, vikaj
> da ti ostavim detaljnije informacije.
Videću, možda nađem način.
Thanx to all.
windows.19milos,
Paki, mislim da bez Petzold -ove knjige ne ma {ta da razgovara{ na ovu temu.
Dakle, 2 Novi Sad. [to se API-ja ti~e, mislim da je mnogo bolje "kopati" po
apiju nego radi sa OWL jer je OWL tragi~no spor i treba mu za kompilovanje
(naro~ito u T) ohaha (negde oko 15 hedera). Programi pisani API jem su mnogo
efikasniji i {to je bitno manji. Ja ne znam, kada je re~ o knjigama, za{to neko
ne preporu~i ~oveku Software Development Kit 4 Windows Programming guide.
Knjigica ;) ima negde oko 500 strana i odatle sam (barem ja) nau~io sve (!) {to
mi treba a imam je kod ku}e tako da mi nije problem. Usput imam i one odli~ne
primere iz SDK (slu~ajno sam ih pokupio sa neke ma{ine), tako da mi je i bez
OWL rad k'o bog. Ali, ne lezi vra`e, ja nabavio i oficijelnu literatutu
borlanda
za OWL (C). Iako ve} delimi~no znam OWL, ja }u je pro~itati i korisiti u nekim
ve}im stvarima dok je za male stvari mnogo bolji API. Usput, nadam se da }e ova
konferencija `ivnuti. Ponekad mi se jave neki problemi, a sve se ne{to
uzdr`avam
da ostavim poruku jer znam da ovde ljudi ne vole Windows... :(((((
Paki, obrati se dekiper-u za sve ove lepe stvari, jer su mi trenutno kod njega,
dosadan ~ovek, pa sam morao da mu dam... :)))
Ustvari bilo bi najbolje da ode{ kod njega, ili u subotu u club...
windows.20bulaja,
-> #14, .obj│Definitivno je najpoznatija i najpopularnija knjiga Carlsa Pecolda
│(Charles Petzold) "Programming Windows". Dosta je skupa. U Budimpesti
│kosta 150 maraka.
└───
Kod mene je mnogo jeftinije :), evo prodajem u kompletu Petzoldov
"Programming Windows (2nd edition)" (inace ima 1000 strana) i "Microsoft
WINDOWS 3 Programmer's Reference" (reference svih API funkcija, 1200
strana), knjige su nove a cena je svega 120 DEM za komplet :).
windows.21asterix,
Nedavno je počela da mi izlazi sledeća poruka prilikom generisanja
exec-a:
Datoteku sa vašim odgovorima nije moguće otvoriti. Pažnja:
Exec nije u potpunosti snimljen!
Da li neko možda zna o čemu je reč, i kako da se to otkloni? Dosta
je neprijatno bez exec-a kojeg sad ne mogu da pravim :(
Naravno radi se o SDW ;), zaboravih da pomenem ...
windows.22.obj,
-> #21, asterix> Nedavno je počela da mi izlazi sledeća poruka prilikom generisanja
> exec-a:
> Datoteku sa vašim odgovorima nije moguće otvoriti. Pažnja:
> Exec nije u potpunosti snimljen!
To znači da si otvorio neki odgovor (Alt-R), SDW je kreirao neku datoteku
tipa RE1.CDF, a ti si je kasnije obrisao, ali ne i naredbu iz EXEC-a.
Drugi put ;) nemoj da ručno brišeš datoteku RE*.CDF, već obriši reply
odgovarajućom opcijom u "Pregledu EXEC-a". :)
Pozdrav,
Ou bi džej
windows.23paki,
-> #19, milos> Paki, obrati se dekiper-u za sve ove lepe stvari, jer su mi
> trenutno kod njega, dosadan ~ovek, pa sam morao da mu dam... :)))
Jasno :)
P.S. set code :)
windows.24spantic,
Kad smo već kod SDW-a. To je sjajan program i govoreći to ne
govorim ništa novo :) Od nove verzije sam definitivno prešao na
njega.
Do sada je bio i izuzetno pouzdan. Ali, ima jedna stvar koja mi
smeta. Naime, kad odlučim da skinem datoteku uz poruku SDW je
odmah preusmeri u PAD. Ja tako ne radim. Postoji li način da se
tome doskoči?
windows.25jerry,
-> #24, spantic> Kad smo vec kod SDW-a. To je sjajan program i govoreci to ne
> govorim nista novo :) Od nove verzije sam definitivno presao na
> njega.
Otprilike. S' tim sto se meni desava nesto cudno...
Ucitavanje text pada mi uzrokuje izbacivanje u DOS bez opomene.
(mislim na UNZIP) Ako ga raspakujem rucno iz DOS-a pa uzitam, sve je ok.
Zasto? Ou bi dzej-ar?
windows.26.obj,
-> #25, jerry> Ucitavanje text pada mi uzrokuje izbacivanje u DOS bez opomene.
> (mislim na UNZIP) Ako ga raspakujem rucno iz DOS-a pa uzitam, sve je ok.
> Zasto?
Zato što nisi pročitao uputstvo. ;)) Šalim se.
Evo kako: (piše u uputstvu;)) Napraviš PIF datoteku PKU.PIF za
PKUNZIP.EXE. U njoj uključi sve žive opcije koje liče na Minimized,
Background i sl.
Zatim iz "Podešavanja" u SDW-u umesto npr. PKUNZIP stavi PKU.PIF.
Klikni na opciju "Minimizovan dearhiver".
Den... rileks end indžoj... brot-tu-ju baj Ou bi džej end Soni mjuzik ;)
windows.27.obj,
-> #24, spantic> Naime, kad odlučim da skinem datoteku uz poruku SDW je
> odmah preusmeri u PAD. Ja tako ne radim. Postoji li način da se
> tome doskoči?
Može, :) ja treba da doskočim tako što će sledeća verzija imati dve
naredbe u "onom" Combo-Box-u. Prva je ovako kako je i bilo (sa &) a
druga bez &.
Dakle, pritisneš "strelicu nadole" (ili klikneš mišem na odgovarajuću
opciju) kada se pojavi dijalog "Unos naredbe Sezama", i to je to.
Ou bi džej txe di džej :)
P.S.
Ukoliko neko ima neko pitanje u vezi sa SDW-om mislim da je daleko
bolje da ga postavi u SEZAM.4:sor, obzirom da nema toliko puno pitanja
(o SDW-u) da bi se uživaoci SOR-a bunili. :) Naravno, uvek može i mail
send .obj. :)
Ovu konf. najbolje da ostavimo za programerske teme. :)
windows.28viktor,
-> #27, .obj> Ovu konf. najbolje da ostavimo za programerske teme. :)
Evo da ja postavim pitanje. Na jednoj konferenciji sam procitao da (ako sam ja
dobro shvatio, ako nisam vi cete me ispraviti ;) ) u Windows programskoj
okolini postoji "komanda" GlobalCompact (ili nekako tako, nisam odmah prepisao
... ;() kojom se rascepkana (fragemented) memorija u Windows-ima "dovodi u
red". Interesuje me da li to postoji, da li neko ima nesto vec uradjeno "po tom
pitanju". Problem se javlja nakon duzeg koriscenja Windows-a bez izlaska iz
istih i bilo bi zgodno imati jedan mali programcic koji bi pozvali i
"pocistili" ...
windows.29paki,
Evo, dok ne nabavim literaturu, da priupitam:
Kako da ubacim dijaloge u svoj program?
U Resource Toolkitu sam napravio jedan dijalog i želeo bih da se
on aktivira kad iz menija izaberem određenu stavku. Tada se
poziva procedura za pravljenje dotičnog dijaloga. Šta u okviru
nje da se radi? Pretpostavljam da postoji neka API procedura koja
sve radi sama, a na meni je, posle klika na OK ili Cancel, samo
da očitam rezultate (koji čekboks je uključen/isključen, koji
text je unesen itd.). U nekom od primera iskopao sam parče koda
i ubacio ga u moj program. To trenutno glasi:
---------
procedure TMyWindow.Paki;
var
Dialog: TDialog;
begin
{ Application^.ExecDialog(New(PMyDialog, Init(@Self, 'PakiDlg')));
(Ova naredba ima naoko isto dejstvo kao i ove tri dole)}
Dialog.Init(@Self, 'PakiDlg');
Dialog.Execute;
Dialog.Done;
end;
---------
Tada dijalog radi OK, ali kako da znam npr. koje dugme je
pritisnuto pri izlasku (OK/Cancel/Help/...) ili koji je text
unesen u Edit Box, dakle, kako očitavam rezultate procedure
Execute da bi ih upotrebio u ostatku programa? I još nešto, da li
je ovakav način aktiviranja dijalog boksova OK, ili treba
drugačije?
windows.30wizard,
-> #24, spantic> Do sada je bio i izuzetno pouzdan. Ali, ima jedna stvar koja mi
> smeta. Naime, kad odlučim da skinem datoteku uz poruku SDW je
> odmah preusmeri u PAD. Ja tako ne radim. Postoji li način da se
> tome doskoči?
Kako da nema, pa već su ti doskočili, sad radiš tako. ;)))
Ozbiljno, zaista mi nije jasno zašto ne bi skidao fajlove u PAD i posle
ih DL-ovao batch Zmodem-om...
windows.31nboskovic,
-> #30, wizard*> Ozbiljno, zaista mi nije jasno zašto ne bi skidao fajlove
*> u PAD i posle ih DL-ovao batch Zmodem-om...
I još treba pridodati jedno pad do /b da ne bi arhivirao
sve datoteke u padu već da ih šalje jednu po jednu.
(c) klap
nikola
windows.33.obj,
-> #29, paki> Kako da ubacim dijaloge u svoj program?
Pre nego što još počnem ;), samo da ti kažem par stvari.
Prvo, ja nisam nikada radio u ObjectWindows, pa tu slabo mogu šta da
kažem, osim da bi, kao što je i red, dijalog trebalo da bude objekat, a
da se tom objektu šalju poruke kada korisnik kresne neki taster, skrol
bar, ovo-ono... na sve te poruke ti odgovaraš iz metoda tog objekta.
Drugo, dijalozi rade na gotovo istom principu kao i "normalni" prozori,
osim što primaju neke ekstra poruke. Sad, svaki (u principu) dijalog
mora imati svoju servisnu funkciju, *isto* kao i prozor. Tako, recimo,
imaš (pored ostalih) i poruku WM_INITDIALOG na koju možeš da reaguješ
tako što ćeš, na primer, popuniti sadržajem neku listu.
Dijalog, dakle, NIJE funkcija koja bi recimo vratila OK ili Cancel. To
je (na sreću) mnogo pametnije urađeno.
> nje da se radi? Pretpostavljam da postoji neka API procedura koja
> sve radi sama, a na meni je, posle klika na OK ili Cancel, samo
> da očitam rezultate (koji čekboks je uključen/isključen, koji
> text je unesen itd.).
Ovo što dalje piše važi ako pišeš program preko Windows API-ja, što,
BTW, ja tebi preporučujem, ako smem.
Prvo, kreiranje funkcije iz BRW-a, WRT-a, ili pisanje skripta (.RC). To
si prebrinuo.
Drugo, pisanje servisne funkcije. Koliko se razumem u TPW (nemam ga
trenutno na disku), to treba da izgleda nekako ovako:
procedure MićaDlgProc (HWND hDlg, word message, word wParam, long lParam);
// ovde treba neka deklaracija, valjda PUBLICDLL;
// ili tako nešto, zaboravio sam
begin
MićaDlgProc := false;
case (message) of
WM_INITDIALOG:
begin
...neke inicijalizacije, ako su potrebne, punjenje LISTBOX-ova, itd
end;
WM_COMMAND: // ovo se aktivira kad god korisnik uradi nešto
// sa nekom kontrolom u okviru dijaloga. Npr. klikne
// na button, listbox, ukuca nešto u edit, itd.
case (wParam) of
IDOK:
begin // ovo se aktivira ako
if (HiWord(lParam) == BN_CLICKED) // klikneš na OK!
EndDialog(hDlg, wParam); // dakle, izađemo
MićaDlgProc := true; // napolje iz dijaloga
end;
IDCANCEL:
begin // ovo se aktivira
if (HiWord(lParam) == BN_CLICKED) then // klikneš na Cancel
MessageBox (hDlg, 'Stani bre malo', 'Stop!',
MB_OK or MB_ICONSTOP);
MićaDlgProc := true;
end;
else
MićaDlgProc := true;
end;
end;
end;
Treće, kako pozvati dijalog. Lako:
var lpfnMićaDlgProc: FarProc; // lpfn = Long Pointer to FuNction...
lpfnMićaDlgProc = MakeProcInstance(MićaDlgProc, hInst);
DialogBox(hInst, "IME_DIJALOGA_IZ_RC_ILI_RES_FAJLA", hWnd, lpfnMićaDlgProc);
FreeProcInstance(lpfnMićaDlgProc);
> Tada dijalog radi OK, ali kako da znam npr. koje dugme je
> pritisnuto pri izlasku (OK/Cancel/Help/...) ili koji je text
> unesen u Edit Box, dakle, kako očitavam rezultate procedure
> Execute da bi ih upotrebio u ostatku programa? I još nešto, da li
> je ovakav način aktiviranja dijalog boksova OK, ili treba
> drugačije?
Kao što se vidi iz primera, reagovanjem na poruku WM_COMMAND. Dodatne
podatke možeš da očitaš:
wParam Identifikator kontrole (npr, IDOK, 500, 501, ID_MIĆA itd)
HiWord(lParam) Poruka kontrole (elementa dijaloga). Npr. BN_CLICKED
(BN je "Button Notification"), EN_ERRSPACE ("Edit
Notification"), LBN_SELCHANGE.
Na kraju, pošto vidim da tek počinješ, može dosta da ti pomogne primer
GENERIC.PAS iz TPW-a.
Puno sreće,
Ou bi džej
windows.32.obj,
-> #28, viktor> postoji "komanda" GlobalCompact (ili nekako tako, nisam odmah prepisao
> ... ;() kojom se rascepkana (fragemented) memorija u Windows-ima "dovodi u
> red".
Funkcija GlobalCompact postoji. Napišeš mali program, recimo u C-u,
koji će je samo pozvati sa pravim parametrima (pogledaj u help), i
moralo bi da radi.
Ou bi džej
windows.34milos,
Pa ne znam ba{ paki dal' si se odlu~io za pravu stvar. Uzeo si TPW 1.0 koliko
sam na~uo u klubu, a sa njim }e{ se vrlo te{ko sna}i iz nekoliko razloga:
1. Whitewater Resource toolkit je sme{an u odnosu na Workshop
2. Turbo Debbuger 4 windows ne radi ba{ najbolje pod win3.1
3. U 1.5 TPW-u je Object WIndows pobolj{an, tako da }e ti biti lak{e da ga
nau~i{ jer su neki kriti~ni delovi sre|eni (:))
4. Ne znam kako paskal guta API funkcije! Verovatno je OK, ali mislim da }e{ se
d`abe buniti kada bude{ prekucavao neke kodove iz C-a jer bukvalno sve bolje
knjige za Win programiranje su pisane za C, tako da ti predla`em dve stvari:
Ako ve} ho}e{ paskal uzmi BP 7.0 ili TPW 1.5,
ili {to je po meni bolje, zna{ i sam...
windows.35spantic,
-> #30, wizard> Kako da nema, pa već su ti doskočili, sad radiš tako. ;)))
Ne radim ;) Jedan kratak programčić rešava me te muke, ali ne bih da
i toliko komplikujem :(
> Ozbiljno, zaista mi nije jasno zašto ne bi skidao fajlove u PAD i posle
> ih DL-ovao batch Zmodem-om...
Zato što mi ne odgovara :)
windows.36.obj,
-> #33, .obj> Prvo, kreiranje funkcije iz BRW-a, WRT-a, ili pisanje skripta (.RC). To
========================
E i ja svašta lupam... iz BRW-a se kreira *dijalog* a ne funkcija :))
Drugo, MićaDlgProc treba da bude funkcija koja vraća Boolean, a ne
procedura. Još jednom, Paki, pogledaj GENERIC.PAS za detalje. :)
> lpfnMićaDlgProc = MakeProcInstance(MićaDlgProc, hInst);
> DialogBox(hInst, "IME_DIJALOGA_IZ_RC_ILI_RES_FAJLA", hWnd, lpfnMićaDlgProc);
> FreeProcInstance(lpfnMićaDlgProc);
Ono što je takođe bitno a nisam pomenuo je da je hInst instanca tekuće
aplikacije, a hWnd roditeljski prozor dijaloga (kom' prozoru će se
vratiti kontrola posle završetka dijaloga).
Ou bi džej Mr. Zaboravni :)
windows.37viktor,
-> #32, .objNe bavim se programiranjem u Windows-ima. Dakle, gde se nalazi ta funkcija i
kako je pozvati. Jel' moze jedan mali exe koji to radi ... ;)) Kada vec pisem u
SDW-u da ne menjam programersku kucu :)))
windows.38wizard,
-> #31, nboskovic> *> Ozbiljno, zaista mi nije jasno zašto ne bi skidao fajlove
> *> u PAD i posle ih DL-ovao batch Zmodem-om...
>
> I još treba pridodati jedno pad do /b da ne bi arhivirao
> sve datoteke u padu već da ih šalje jednu po jednu.
Pa zar to nisam i ja napisao? :))
windows.40paki,
-> #34, milos> 1. Whitewater Resource toolkit je sme{an u odnosu na Workshop
Znam, umesto njega sam nakalemio Workshop iz BP7.0. :))
> 2. Turbo Debbuger 4 windows ne radi ba{ najbolje pod win3.1
Taj odvratni hibrid sam ubio odmah po instalaciji :( Od njega bi
mi više pomogao čak i mali (ali tehničar ;) integrisani debager,
poput onog u TP.
> 3. U 1.5 TPW-u je Object WIndows pobolj{an, tako da }e ti biti
> lak{e da ga nau~i{ jer su neki kriti~ni delovi sre|eni (:))
Ne znam, mislim da je bolje da naučim API.
> 4. Ne znam kako paskal guta API funkcije! Verovatno je OK, ali
Mislim da ih guta bez problema.
> C, tako da ti predla`em dve stvari: Ako ve} ho}e{ paskal uzmi BP
> 7.0 ili TPW 1.5, ili {to je po meni bolje, zna{ i sam...
Pa imam ja kući BP7.0 ali mi ne valja disketa sa najvažnijim (;)
fajlom, helpom za Win :((( Kad budem ponovo nabavio tu disketu,
prelazim na 7.0, do tada sam na klonu TP1.0+RWshop :)
P.S. Podesi kodnu stranu na Sezamu, umesto YU slova imaš gomilu
kuka i kvaka :(
windows.39paki,
-> #33, .obj> Ovo što dalje piše važi ako pišeš program preko Windows API-ja,
> što, BTW, ja tebi preporučujem, ako smem.
Pa, kao što se može zaključiti, ja sam samo prekopao malo demo
programe i C&Povao :) parčiće koda koji rade bitne stvari.
Koristio sam objekte jer sam naleteo na njih. Ali pošto kupujem
onu literaturu (nadam se bar) preći ću na API.
> procedure MićaDlgProc (HWND hDlg, word message, word wParam, long
> lParam);
...
> begin
> MićaDlgProc := false;
Mislim da procedura ne može da vraća vrednost. Verovatno si
mislio na funkciju.
> Na kraju, pošto vidim da tek počinješ, može dosta da ti pomogne
> primer GENERIC.PAS iz TPW-a.
Hvala ti na objašnjenju i savetima. Pogledaću primer, obavezno.
windows.41ssokorac,
-> #30, wizard ─┼┤ Ozbiljno, zaista mi nije jasno zašto ne bi skidao fajlove u PAD i
─┼┤ posle ih DL-ovao batch Zmodem-om...
Ja uvek skidam fajlove u PAD pa zatim pad do /b. Prednost? Pa, skidaš sve
datoteke odjednom, dakle, pustiš da se dl i sačekaš da sve bude gotovo, a
druga prednost je - sezam obračuna vreme potrebno za sve datoteke na
početku prenosa i dozvoli prenos. E, sad, ako imaš lošu vezu možda prenos
prva 2-3 fajla traje preko predvidjenog vremena i u normalnim uslovima ne
bi(H:) mogao da preneseš poslednji fajl ali ovako - prenos je već počeo i
ništa te ne može zaustaviti :).
windows.42nboskovic,
-> #38, wizard*> Pa zar to nisam i ja napisao? :))
Ako uradiš pad do onda će Sezam napraviti arhivu
pad?????.zip a ako staviš /b slaće odvojeno :))
(c) klap
nikola
windows.43wizard,
-> #42, nboskovic> Ako uradiš pad do onda će Sezam napraviti arhivu
> pad?????.zip a ako staviš /b slaće odvojeno :))
PA ZAR TO NISAM I JA REKAO!? :))) Napisao sam "batch Zmodem", pa to je
valjda to?!
windows.44asterix,
Da li neko ima loša iskustva sa PhotoPaint-om iz Corel-ovog
novog paketa? Odmah nakon podizanja istog se javlja greška
'Gerenal Error' sa opcijama 'Close' i 'Ignore'. Da li neko
možda zna nešto više o ovome ? CorelDraw! 4 je inače instaliran
sa iskopiranih instalacionih disketa...
windows.45.obj,
Smešan i simpatičan ;) bag Turbo Linkera (u režimu EXETYPE WINDOWS)...
ako u DEF datoteci u imenu modula stavite karakter 255 (Alt-255), TLINK
se tako temeljito zaglavi da pomaže samo hard-reset.
Ou bi džej
windows.46niklaus,
-> #17, paki > Da, tako je bilo i sa TP for DOS, sve što ti treba ima u helpu,
> ali prvo treba da naučiš osnove.
Ali, stvar se komlikuje sa vremenom koje je potrebno Win-u
da učita Help fajl, odn. ubija volju.
Glavni i osnovni (ne i jedini) razlog, zbog koga sam digao
ruke od programiranja pod Win.
(:niklaus:)
windows.47paki,
-> #46, niklaus> Ali, stvar se komlikuje sa vremenom koje je potrebno Win-u
> da učita Help fajl, odn. ubija volju.
Šta znam...ja sam pre imao 286/12, tako da mi je ovo sasvim
pristojna brzina :)
windows.48peca.st,
-> #46, niklaus!-> Ali, stvar se komlikuje sa vremenom koje
!-> je potrebno Win-u da učita Help fajl,
!-> odn. ubija volju.
Tačno. Ja sam se taman zagrejao da pređem
na Win, uzeo TP4WIN, i kad sam pritisnuo
ctrl+f1, a moj seagate na 286 zatrubeo
i nastabio da trubi oxoxoxo, odmah sam
odustao. (bar za sada)
Peđa.
windows.49niklaus,
-> #48, peca.st >! -> Ali, stvar se komlikuje sa vremenom koje
>! -> je potrebno Win-u da učita Help fajl,
>! -> odn. ubija volju.
>
> Tačno. Ja sam se taman zagrejao da pređem
> na Win, uzeo TP4WIN, i kad sam pritisnuo
> ctrl+f1, a moj seagate na 286 zatrubeo
> i nastabio da trubi oxoxoxo, odmah sam
> odustao. (bar za sada)
Ma puštaj prozore nek' se lome (; - preporučujem ti da počneš
da se igraš C-om, a malo kasnije sa GNU C-om. Puno kvalitetnih programa
i biblioteka napravljenih od strane pametnih ljudi - a sve je džabe. (:
CU u GNU svetu...
(:niklaus:)
windows.50.bale.,
-> #49, niklaus> Ma puštaj prozore nek' se lome (; - preporučujem ti da počneš
> da se igraš C-om, a malo kasnije sa GNU C-om. Puno kvalitetnih
> programa i biblioteka napravljenih od strane pametnih ljudi - a sve je
> džabe. (:
>
> CU u GNU svetu...
> (:niklaus:)
To, care! Treba pobiti sve što ima veze sa MS Windowsima, pokvariće
nam omladinu! (Al' sam postao vadikalan u poslednje vveme - ovo mi
je već drugi poziv na linč, prvi je bio u vezi sa tetkicama što
uništavaju kompjutere van radnog vremena...) Unix, GNU, Internet,
Usenet... Ameri se time bave, a nas truju softverom Š klase.
windows.51dr.grba,
-> #48, peca.st>> ctrl+f1, a moj seagate na 286 zatrubeo
>> i nastabio da trubi oxoxoxo, odmah sam
>> odustao. (bar za sada)
Priznaj da nisi odmah odustao. Morao si sačekati da završi (;
windows.52idesign,
-> #44, asterix I ja imam istih problema ali ne kod startovanja nego kod otvaranja
i zatvaranja datoteka. Ako kažeš Close javlja grešku u OLE2.DLL
a ako si uporan sa Ignore proći će i radiće kasnije bez ikakvih problema,
bar ih ja nisam primetio. Inače sve to se dešava kada se otvara ili
zatvara samo prva datoteka (slika), za sledeće se ponaša normalno.
Inače problem je i sa Corelom ali on pride ima problema i sa nekim
filterima za Import (ne sećeam se kojim) i ono što me je stvarno
iznerviralo je kad mi ispomera neke objekte na ekranu ali ne onako kao
što je to radila dvojka nego su odstupanja od nekoliko milimetara i
to radi mnogo češće. Tako da se sada uveliko kajem što sam počeo da
radim jedan veliki posao na njemu jer sam više vremena potrošio u vraćanju
objekata na svoju poziciju nego što sam uštedeo koristeći nov interfejs
i moćnije naredbe.
Verujem da će se to ispraviti u nekim 4.00001 B verzijama a do tada...
pozdrav
...Zlatan
windows.53leka,
Imam problem kod Corel-a 4.0! :( Kada recimo nesto nacrtam i pokusam
da smanjim on sve lepo uradi, ali nece da isto tako proporcionalno
smanji i debljinu linije.
Ako neko moze da mi pomogne bilo bi odlicno.Stvarno je HITNO!
Pozdrav od Sase
windows.54magician,
-> #53, leka=> Imam problem kod Corel-a 4.0! :( Kada recimo nesto nacrtam i pokusam
=> da smanjim on sve lepo uradi, ali nece da isto tako proporcionalno
=> smanji i debljinu linije.
Izaberi 'pero' (pretposlednja ikonica u toolbox-u) pa jos jednom
'pero' i dobićeš jedan dialog-box u kome možeš da definišeš
različite karakteristike linije. Ono što tebe interesuje (trenutno
:) je 'Scale with image'.
windows.55oldtimer,
-> #53, leka> Imam problem kod Corel-a 4.0! :( Kada recimo nesto nacrtam i pokusam
> da smanjim on sve lepo uradi, ali nece da isto tako proporcionalno
> smanji i debljinu linije.
Odeš na alat za debljinu i boju linija (perce), otvore se njegovi
dugmići, klikneš opet na perce, otvori se prozor öOutline Penö i u
donjem desnom uglu uključiš opciju öscale with imageö. Mora da giba.
B) Miša
windows.56adiklic,
Svojevremeno je Jtitov pisao o Windowsima EE za istočnoevropsko tržište, koji
imaju ugradjene sve naše fontove, samo na nekim mestima nedostupnim na prvi
pogled korišćenju. Objašnjava da se ti fontovi mogu editovanjem datoteke
gdi.exe dovesti u opseg iz koga se mogu videti (ispod 255 acii kodnog broja) i
koristiti u radu. Pošto su ti fontovi nemodifikovani, kvalitet im je bolji u
svim rezolucijama, a posebno u većim.
Pitanje glasi:
Da li je moguće spuštanje naših slova tako napraviti da se spuste na kodne
brojeve koji odgovaraju YUASCII standardu, što bi meni odgovaralo, jer su mi do
sada svi tekstovi pisani u tom standardu ?
windows.57ssokorac,
-> #55, oldtimer ─┼┤ öOutline Penö i u
Ja ovde vidim dva slova o sa dve tačke iznad. Kod .bale.tovih
'naglašavanja' vidim dva slova ž, dok kod madamova navodnici izgledaju kao
PI :). Dakle, molim vas da koristite nešto standardnije :).
windows.60todorp,
Pa ljudi zar ne vidite da je ovo pc.prog a ne pc.os??? U poslednje vreme sve
je vise korisnickih pitanja u ovoj temi :(((((
windows.61dsoskic,
-> #57, ssokorac> ─┼┤ đOutline Penđ i u
> Ja ovde vidim dva slova o sa dve tačke iznad. Kod .bale.tovih
A ja vidim umestonavodnika dva mala slova dj (đ)
> PI :). Dakle, molim vas da koristite nešto standardnije :).
Lepo bi bilo da se koriste normalni navodnici?
windows.62dsoskic,
-> #56, adiklic> Da li je moguće spuštanje naših slova tako napraviti da se spuste na kodne
> brojeve koji odgovaraju YUASCII standardu, što bi meni odgovaralo, jer su
Normalna stvar, moguće je i sigurno da je to već neko uradio. Sorry ja
ti ne mogu pomoći jer sam ih spustio na nemačke umlaute, koji mi skoro
neće biti potrebni, a i lepo mi radi konverzija malih u velika slova.
Verovatno bi mi lepo radila konverzija i da sam ih spustio na WIN EE
kodove, al mi se žurilo pa nisam a sad me mrzi da ih pomeram.
windows.63.bale.,
-> #61, dsoskic> Lepo bi bilo da se koriste normalni navodnici?
Bljak! ;-)))
windows.64dr.grba,
-> #57, ssokorac>> PI :). Dakle, molim vas da koristite nešto standardnije :).
Ja predlažem da pokušaju da koriste ASCII karakter 34 (dec). Taj liči
na dva zareza blizu jedan drugom, malo gore, video sam neke da ga koriste.
windows.65ndragan,
-> #57, ssokorac/ ─┼┤ öOutline Penö i u
/ Ja ovde vidim dva slova o sa dve tačke iznad. Kod .bale.tovih
Ja ovde vidim najstandardnije veliko R ćirilicom.
windows.66ilazarevic,
-> #61, dsoskic> Lepo bi bilo da se koriste normalni navodnici?
Naravno :) Ja pobrljaveh pored Baletovih žž-ova...
PS. Codename - yuscii ;)
windows.67.bale.,
-> #66, ilazarevic> Naravno :) Ja pobrljaveh pored Baletovih žž-ova...
Tako piše ceo svet, šta ti ja mogu ;-)))
windows.68ssokorac,
-> #65, ndragan ─┼┤ Ja ovde vidim najstandardnije veliko R ćirilicom.
Moram se složiti da je to najčešće korišćen znak za naglašavanje ;).
windows.69dsoskic,
-> #67, .bale.> Tako piše ceo svet, šta ti ja mogu ;-)))
``ni ovo ni '' meni ne smeta, ali ono đđ je haos ;))
windows.70v.nesic,
-> #67, .bale.> Tako piše ceo svet, šta ti ja mogu ;-)))
Da promeniš YU kod ?
windows.71.bale.,
-> #70, v.nesic> Da promeniš YU kod ?
Ne razumem, koristim Custom2.
windows.72paki,
Kako da u TPW ispišem najobičniji tekst na ekran?
Probao sam s funkcijom TextOut, ali mi je veoma odbojna (da ne
kažem odvratna), jer moram da se petljam s raznim glupostima, kao
što su pointeri i formatiranje teksta :(
Treba mi samo neka naredba koja ima efekat kao u DOSu:
GotoXY(x,y); write(s);
Da li je moguće da ovako nešto ne postoji u Win? Da bih ispisao
string, moram da pravim bafer za njega, zatim da ga upisujem u
bafer i računam mu dužinu, što mi se čini apsolutno nepotrebno i
komplikovano :(
windows.73paki,
Mali problem:
U TPW, u funkciji WndProc, dakle onoj koja prima sve poruke
od Windowsa, deklarišem promenljive (npr.) x i y, i u obradi
poruke WM_CREATE dodelim x i y neke vrednosti. Kako da ih sačuvam
za 'buduća pokoljenja' :), tj. za buduće pozive funkcije WndProc,
jer želim da ih koristim u okviru obrade poruke WM_PAINT?
Mislim da se ovo u C-u označava sa 'static'.
windows.74milos,
-> #73, pakijeste, u C-u je to static, a u TPW (joj majko) ne znam... ;)))
windows.75niklaus,
-> #72, paki(:> Da li je moguće da ovako nešto ne postoji u Win? Da bih
(:> ispisao string, moram da pravim bafer za njega, zatim da ga
(:> upisujem u bafer i računam mu dužinu, što mi se čini
(:> apsolutno nepotrebno i komplikovano :(
Napravi inteligentnu proceduru tipa:
Ispiši_taj_i_taj_tekst_tim_i_tim_fontom_poznate_dužine
_sa_alignment-om_na_levo_ili_desno....
(:niklaus:)
PS Napravi je dobro, i bićeš sebi zahvalan svaki put, kad je budeš
upotrebio.
windows.77milos,
-> #72, pakiPogledaj, Petzolda, ionako mi reče da si ga kupio, pa zar pored tolike
knjižurine, ne možeš da rešiš ovako trivijalnu stvar. Rešenje ti je u funkciji
DrawText koja, kako kaže Microsoft Windows Software Development Kit Programming
Guide na strani 3-11 gde piše:
strcpy(szText,
"This text is being displayed with a single call to DrawText(). DrawText()
isn't as fast as TextOut(), and iti is somewhere more constrained, but it
provides numerous optional formatting features, such as the centering and
line breaking used in this example.");
DrawText(hDC /*display context (dobijaš ga sa GetDC)*/, szText, strlen(szText),
&rcTextBox /*(pogledaj API SetRect)*/, DT_CENTER đ
DT_EXTERNALLEADING
đ DT_NOCLIP đ DT_NOPREFIX đ DT_WORDBREAK);
windows.78.obj,
-> #72, paki> Probao sam s funkcijom TextOut, ali mi je veoma odbojna (da ne
> kažem odvratna), jer moram da se petljam s raznim glupostima, kao
> što su pointeri i formatiranje teksta :(
Ili napravi neku *svoju* funkciju za ispis koja bi bila kao neki
kompromis jednostavnosti i mogućnosti, ili probaj funkciju DrawText
pošto je relativno jednostavna a ima gomilu mogućnosti (word wrap,
centriranje itd). Primer:
LPSTR lpstr = "Bla Bla";
DrawText(hdc,
lpstr, lstrlen(lpstr),
(LPRECT)&rect, // pravougaonik gde treba da ide tekst
DT_CENTER + DT_NOPREFIX); // flegovi :)
> Mislim da se ovo u C-u označava sa 'static'.
Jes', npr. static int x :)
Ou bi džej
windows.79.obj,
-> #78, .obj>> U TPW...
>> Mislim da se ovo u C-u označava sa 'static'.
>
> Jes', npr. static int x :)
E što sam pametan :)) ... u paskalu (a TPW je kao paskal;) možeš jedino
na napraviš globalnu promenljivu u glavnom bloku, pošto nešto kao
static ne postoji.
Ou bi džej
windows.80paki,
-> #75, niklaus> Napravi inteligentnu proceduru tipa:
Nema problema, urađeno :)
windows.81paki,
-> #77, milos> Pogledaj, Petzolda, ionako mi reče da si ga kupio, pa zar pored tolike
> knjižurine, ne možeš da rešiš ovako trivijalnu stvar. Rešenje ti je u
> funkciji DrawText koja, kako kaže Microsoft Windows Software Development
Pazi, funkcijom DrawText nemam skoro nikakvu kontrolu gde će se
tekst ispisati, dakle, ne znam na kojoj X i Y poziciji, a to je
upravo ono čega se ne bih odricao :)
Rešenje je ipak da napravim svoju "kastom" :) funkciju.
windows.82paki,
-> #79, .obj> E što sam pametan :)) ... u paskalu (a TPW je kao paskal;) možeš jedino
> na napraviš globalnu promenljivu u glavnom bloku, pošto nešto kao
> static ne postoji.
Šteta, ali nema veze, važno je da radi :)
windows.83milos,
-> #81, pakiPa, ja ti lepo kažem da pogledaš objašnjenje API-ja SetRect, čiji jedan
parametar prenosiš DrawText-u. Upravo SetRect će postaviti recrangle onde gde
želiš da se ispiše text. Zato Help u RUKE!
windows.84stosic,
Na koji nacin se izlaskom iz nekog programa, npr Write, moze
izaci i iz Windows-a, a da se preskoci dijalog "Exit Windows"?
Boban
windows.85niklaus,
Pošto nikako ne mogu da se estim gde to videh, pitam
Vas, moje uzdanice. (:
"Kako se zvaše parametar iz WIN.INI za podešava proreda između
ikonica?"
Ako znate, navedite i ostale parametre za "šminkanje"... (:
Uostalom, Windows upravo za to i služi, zar ne?
(:niklaus:)
windows.86sbrk,
-> #85, niklaus>> "Kako se zvaše parametar iz WIN.INI za podešava proreda između
>> ikonica?"
>> Ako znate, navedite i ostale parametre za "šminkanje"... (:
ŠDesktopĆ
Pattern=(None)
Wallpaper=(None)
GridGranularity=0
IconSpacing=72
TileWallPaper=0
IconTitleFaceName=Avalon
IconTitleSize=10
windows.87ppekovic,
-> #85, niklaus>> "Kako se zvaše parametar iz WIN.INI za podešava proreda između
>> ikonica?"
Što diraš win.ini kad možeš da odeš u Control Panel, pa
Desktop i tamo podešavaš šta ti treba.
Paya
windows.88tales,
Jedan moj drugar se interesuje za TTF (YU) fontove. Ima li na
SEZAMU nesto tog tipa (po direktorijumima nisam video)?
POZDRAV
windows.89cnenad,
-> #87, ppekovicŁŁŁ Sto diras win.ini kad mozes da odes u Control Panel,
ŁŁŁ pa
"DOS JE MOJA PRVA LJUBAV, IAKO RADIM U WINDOWSIMA" ! :) Sta zna dete
sta je WIN !?
windows.90niklaus,
-> #87, ppekovic(:>>> "Kako se zvaše parametar iz WIN.INI za podešava proreda
(:>>> između ikonica?"
(:>
(:> Što diraš win.ini kad možeš da odeš u Control Panel,
(:> pa Desktop i tamo podešavaš šta ti treba.
Sad se i ja pitam, što sam pitao. (;
Znam da je negde bilo, al' zaboravih dal' u samim Windows-ima,
ili negde među advanced opcijama (WIN & SYSTEM.INI).
(:niklaus:)
windows.91furlani,
Jel moze neko da mi objasni kako da uradim u Windows-u da kad se
shellujem u dos da mi ostane 4dos?
Pzodrav Ceda
P.S.Znam da je vec objasnjavano ali ako moze neko malo da
pojednostavi please ;)
windows.92nboskovic,
-> #91, furlani*> Jel moze neko da mi objasni kako da uradim u Windows-u da
*> kad se shellujem u dos da mi ostane 4dos?
Staneš na ikonu i stisneš CTRL+ENTER> U tom prozoru koji se
otvori se spominje command.com. E njega prepravi u 4dos.com
i tvoj problem je rešen.
(c) klap
nikola
windows.94ppekovic,
Skinuo sam Microsoft drajvere za Windows koje je zkehler poslao
pre neki dan. Samo da naglasim ako je neko slučajno propustio to
da pročita, da ovi drajveri neće raditi u 800x600x256 i
1024x768x256 ako na kartici nema 1M.
Ja sam instaliran na mojoj Trident 8900 (512K) 800x600x16
drajver i sve radi bez problema, čak šta više primetno je ubrzanje
u odnosu na Winspeed drajvere.
Paya
windows.93ppekovic,
-> #91, furlani>> Jel moze neko da mi objasni kako da uradim u Windows-u da kad se
>> shellujem u dos da mi ostane 4dos?
Startuješ PIF editor i edituješ dosprompt.pif. Umesto
command.com staviš 4dos.com i odgovarajući path.
Paya
windows.95bulaja,
-> #94, ppekovic│Samo da naglasim ako je neko slucajno propustio to da procita, da
│ovi drajveri nece raditi u 800x600x256 i 1024x768x256 ako na
│kartici nema 1M.
└───
Video sam da su to napisali, ali im ne verujem :) - za rezoluciju
800*600 u 256 boja potrebno je 468.75 Kb memorije, sto znaci da bi
trebalo da stane u 512 K. Provericemo :).
windows.96milan,
-> #94, ppekovic> Ja sam instaliran na mojoj Trident 8900 (512K) 800x600x16
> drajver i sve radi bez problema, čak šta više primetno je ubrzanje
> u odnosu na Winspeed drajvere.
Ali je primetno i "uružnjavanje" boja. Očigledno (bar za
ET4000 koji ja imam) kada se stave ovi ubrzavajući drajveri (ovi
ili ET400 turbo) boje postanu nekako drečave. U čemu je fazon?
Pl poz M
windows.97paki,
-> #95, bulaja> Video sam da su to napisali, ali im ne verujem :) - za rezoluciju
> 800*600 u 256 boja potrebno je 468.75 Kb memorije, sto znaci da bi
> trebalo da stane u 512 K. Provericemo :).
Jes', i meni je čudno, jer ne vidim nikakav razlog zašto ne bi
radilo sa 512k kada sadašnji drajveri sasvim fino rade.
windows.98dcolak,
-> #97, paki│ Jes', i meni je čudno, jer ne vidim nikakav razlog zašto ne bi
│ radilo sa 512k kada sadašnji drajveri sasvim fino rade.
Pretpostavka: Onih drugih 512K koristi kao Video Cache, zato je
i grafika brža sa tim drajverima ;)
Sledge DAMMIR!
windows.100paki,
Kako da u Resource WorkShopu u projekat ubacim fajl sa svojim
identifikatorima? Probao sam sa 'Add to project', ali mi se ne
pruža opcija '.PAS', '.H', ili bilo šta slično. Da nije možda
'user'? Ako jeste, u kom formatu treba da bude moj fajl da bi
sarađivao sa WorkShopom?
windows.99paki,
Evo jednog pitanja:
Kako da u okviru obrade WM_SIZE poruke, u zavisnosti od veličine
glavnog prozora, promenim i veličinu child prozora. Probao sam sa
sledećim:
-----
var hwndInTerm: HWnd;
function WndProc(Window: HWnd; Message, ...):longint; export;
var ClRect : TRect;
begin
...
WndProc := 0;
case Message of
WM_SIZE:
begin
GetClientRect(Window, ClRect);
MoveWindow(hWndInTerm, ClRect.left, ClRect.top,
ClRect.right-ClRect.left, ClRect.bottom div 2, TRUE);
end;
end;
...
end;
procedure WinMain;
var ClRect : TRect;
begin
...
GetClientRect (Window, ClRect);
hwndInTerm:=CreateWindow(AppName,'Input',
WS_CHILD or WS_VISIBLE or WS_BORDER or WS_THICKFRAME or WS_CAPTION,
ClRect.left, ClRect.top, ClRect.right, ClRect.bottom div 4,
Window, ID_INTERM, hInstance, nil);
...
end;
-----
(naravno, ovo su samo najvažniji detalji iz programa), ali...
Program se tako temeljno zaglavi da pomaže samo CtrlAltDel i
njegovo zatvaranje (Win kaže da je prestao da se odaziva).
U čemu je štos?
windows.101.obj,
-> #99, paki> Kako da u okviru obrade WM_SIZE poruke, u zavisnosti od veličine
> glavnog prozora, promenim i veličinu child prozora. Probao sam sa
> sledećim:
Koliko me oči služe :), nisam primetio ni jednu grešku u onom delu
programa koji si poslao. Zato, mislim da je greška negde drugde,
pre svega zato što se program zaglupi. Iz iskustva znam da u tom
slučaju najviše problema prave čuvene funkcije GetDC/ReleaseDC i
SelectObject (eventualno BeginPaint/EndPaint). Kod ovog prvog, ne
sme se zaboraviti ReleaseDC jer Windows ima ograničen broj DC-ova
na raspolaganju i kada se taj keš napuni uzastopnim pozivima
GetDC-a, program blokira. Zato, proveri npr. ovakve situacije:
hdc = GetDC(hWnd);
NacrtajTortu(hWnd, hdc);
// bla, bla, bla...
Znači, ovde je zaboravljeno jedno ReleaseDC na kraju. BTW, GetDC je
relativno spora funkcija i nikad je ne treba stavljati u telo neke
petlje.
SelectObject je još gori po pitanju "podmuklosti". On ne blokira
odma', već malo po malo krade Windowsu resurse sve dok odjednom
nijedan program neće da radi ili se Windows ponaša čudno. Ovaj
problem se najlakše prepozna na sledeći način: startuje se Program
Manager i iz About dijaloga se vidi koliko ima slobodnih resursa,
npr 90%. Zatim startujem program i nešto drndam u njemu izvesno
vreme i na kraju ga zatvorim. Ako posle toga resursi budu ispod
90%, najverovatnije da je u programu neki bag sa SelectObject. U
ovom slučaju, možda je i od veće koristi probati program Hot Line
(ima ga i na Sezamu). On, naime, hvata bagove u programima.
Iznenadio sam se kada sam primetio da neki prilično poznati i
veliki programi vrve od bagova pri pozivima Windows API funkcija.
Npr. Ami Pro. Da još pomenem zašto se uopšte javljaju bagovi u vezi
sa SelectObject funkcijom. Za svaki DC je moguće postaviti kao
aktivne neke objekte, npr. font, brush. U jednom trenutku može biti
aktivan samo jedan npr. font, i njime se vrše, u ovom slučaju,
ispisivanja teksta. Sad', vrlo bitna stvar je da se uvek mora
vratiti stanje pre upotrebe SelectObject-a. To izgleda otprilike
ovako:
hOldObject = SelectObject(hVelikiFont); // vraća ranije
ExtTextOut... itd. // aktivni objekat
SelectObject(hOldObject);
Problemi nastaju ako se "zaboravi" ova poslednja linija.
Toliko.
windows.102paki,
-> #101, .obj> Koliko me oči služe :), nisam primetio ni jednu grešku u onom delu
> programa koji si poslao. Zato, mislim da je greška negde drugde,
Greška je u ovom delu programa:
-----
WM_SIZE:
begin
==> hWndInTerm:=GetWindow(Window, GW_CHILD);
GetWindowRect(Window, ClRect);
MoveWindow(hWndInTerm, ClRect.left, ClRect.top,
ClRect.right-ClRect.left, ClRect.bottom div 4, TRUE);
Exit;
end;
-----
Kada sam dodao red označen strelicom, sve je proradilo (nije
ni sada baš kako treba, ali se barem ne zablokira). Promenljiva
hWndInRect je deklarisana kao globalna, pa me to jedino navodi na
pomisao da se handle menja u toku izvršavanja. Da li se pre
svakog obraćanja child prozoru mora dobiti njegov handle sa
GetWindow ili nečim sličnim? I kako se pravilno dobija handle
određenog prozora?
Ovako sam samo dobio handle prvog child prozora, koji se
menja u toku programa (jer imam 2 child prozora, pa čas dobijam
handle jednog, a čas drugog), što mi ne odgovara.
> ovom slučaju, možda je i od veće koristi probati program Hot Line
> (ima ga i na Sezamu). On, naime, hvata bagove u programima.
Probao sam s njim, i tako sam i ustanovio da je bug u
pogrešnom (invalidnom ;) hendlu. I sada mi javlja neke silne
greške i upozorenja, ali bar program radi. Nažalost, i dalje ne
OK.
Od velike koristi bi mi bio neki kratak program koji
ilustruje pravilnu upotrebu child prozora i MoveWindowa na njima
(npr. kada glavni prozor promeni veličinu, i child se prilagodi),
jer ovi #%(*$!# primeri koji se dobijaju uz TPW i BP su pisani s
objektima, koje ja ič ne volim, a u Petzoldu ;) se ovakva stvar
ne nalazi (MoveWindow se pominje samo na jednom mestu).
Inače, da vam preporučim BP, jer se TPW 'ladno zablokirao
kada sam pokrenuo onu moju kupusariju, dok je BP prekinuo program
i pomenuo mi 'grešku 202'.
windows.103.obj,
-> #102, paki> Kada sam dodao red označen strelicom, sve je proradilo (nije
> ni sada baš kako treba, ali se barem ne zablokira).
Ne vidim razlog da se mučiš sa tim GetWindow. CreateWindow pri
kreiranju child prozora vrati lepo njegov (childov) handle i njega lepo
upišeš u neku globalnu promenljivu i gotovo.
> Promenljiva
> hWndInRect je deklarisana kao globalna, pa me to jedino navodi na
> pomisao da se handle menja u toku izvršavanja.
Sigurno se ne menja, zbog toga su i izmišljeni handle-ovi. Dakle, kad
jednom npr. otvoriš prozor, on će *uvek* imati isti handle. To važi i
za sve ostalo, dakle font-, brush-, pen-, DC-, ... -handleove.
> pomisao da se handle menja u toku izvršavanja. Da li se pre
> svakog obraćanja child prozoru mora dobiti njegov handle sa
> GetWindow ili nečim sličnim?
Taman posla! :) To bi bila prava robija. Sistem je prost: pri kreiranju
prozora (CreateWindow, CreateWindowEx) dobiješ njegov handle, zapišeš
ga u neku glob. promenljivu i kasnije ga UVEK možeš koristiti. Jedino
ako ne zatvoriš prozor, naravno. :)
> Probao sam s njim, i tako sam i ustanovio da je bug u
> pogrešnom (invalidnom ;) hendlu. I sada mi javlja neke silne
> greške i upozorenja, ali bar program radi. Nažalost, i dalje ne
> OK.
Potrudi se da provališ u čemu si pogrešio, jer će ti program inače biti
jako nestabilan, u onom najgorem smislu - nikad ne znaš kad će da
pukne.
> Od velike koristi bi mi bio neki kratak program koji
> ilustruje pravilnu upotrebu child prozora i MoveWindowa na njima
> (npr. kada glavni prozor promeni veličinu, i child se prilagodi),
Evo uz ovu poruku je jedan mali C modul, mislim da će ti biti jasno.
Kad smo kod tih zavrzlama o handle-ovima, da pomenem jedan problem
koji često pravi velike glavobolje početnicima. Program:
HWND hProzor;
WinMain(...)
(
hProzor = CreateWindow(...);
)
MainWndProc(HWND hWnd, ...)
(
switch(message)
(
case WM_CREATE:
NeštoUradiSaProzorom(hProzor);
) !!!!!-----------treba ..Prozorom(hWnd);
)
Stvar je što se poruka WM_CREATE pošalje pre nego što se izvrši
dodeljivanje kod CreateWindow (!) pa zato na mestu gde su uskličnici
promenljiva hProzor uopšte nije inicijalizovana!! Zato uvek treba
paziti kojim redom se šta inicijalizuje i šta u nekom trenutku sme ili
ne sme da se koristi. :) Ali, sve je to vrlo logično.
chat.cwindows.104paki,
-> #103, .obj> Sigurno se ne menja, zbog toga su i izmišljeni handle-ovi. Dakle, kad
> jednom npr. otvoriš prozor, on će *uvek* imati isti handle. To važi i
> za sve ostalo, dakle font-, brush-, pen-, DC-, ... -handleove.
OK, i mislio sam da je tako, ali me ovo malo pokolebalo.
> Potrudi se da provališ u čemu si pogrešio, jer će ti program inače biti
> jako nestabilan, u onom najgorem smislu - nikad ne znaš kad će da
> pukne.
Narafski, sigurno je greška trivijalna :)
> Evo uz ovu poruku je jedan mali C modul, mislim da će ti biti jasno.
Hvala, probaću.
windows.105dragann,
Potreban mi je exe programa opisanog u R76 Tehnike programiranja
Popunjavanje formulara. HvaÚ]la
Dragoljub