PCPROG.3

26 Jul 1993 - 22 Apr 1994

Messages - windows

windows.219 spantic, -> #218, asterix
> Jel' se pojavila nekom poruka o isteku vremena probanja > Barclocka ? Molio bih onoga ko ima registrovanu veriju Nije za uzrujavanje. Posle se više ni ne pojavljuje. Ali ako ne želiš ni nju, vrati se na 2.2. Funkcionalno su potpuno isti.
windows.220 wizard, -> #218, asterix
> Jel' se pojavila nekom poruka o isteku vremena probanja > Barclocka ? Molio bih onoga ko ima registrovanu veriju > da me mail-ne. A kad sam ja govorio... Meni se pojavila još pre mesec-dva, ali nisam hteo da javljam da ne bi mislili da lažem. Srećom, od tada je nema...
windows.221 novim,
"WinExit v2.0 Copyright 1990 by Howard Silver (for Windows 3.0 or higher) W H A T I S W I N E X I T? Well, this is one of those simple little programs that can make life a little easier. The purpose of this program is simply to allow you to double-click on an icon and shutdown Windows. This I found to be easier than going through Program Manager. I am releasing this program in public domain." winexit.zip
windows.222 .bale., -> #221, novim
> The purpose of this program is simply to allow you > to double-click on an icon and shutdown Windows. :))) Suvi genije!
windows.223 fancy,
Da pitam i ovde... sorry onima koji čitaju drugi put..:) U ACCESS-u, pri ulasku u bilo koju tabelu ili query, ili form... primetio sam da mi na dugmićima čijim se pritiskom pomera kursor na sledeće polje, fale TROUGLIĆI na desno i na levo !!! Bizarno ;))) ! Pošto sam ponovo instalirao ACCESS, a zatim i (pazi sad!) Windows :)) ništa se nije promenilo, dok se nisam setio da možda nije do nekog sistemskog fonta, što bi reklo do drajvera za video karticu... Kad sam promenio rezoluciju (inače radim u 800*600*64000) trouglići ;) su se VRATILI! ...žak i kad sam ostavio istu rezoluciju, ali promenio broj boja (256) trouglići su opet bili tu..! (da ne zaboravim, dugmići su ostali POTPUNO FUNKCIONALNI i bez trouglića, samo su izgledali malo ćelavo :))) Ima li neko ideju kako da vratim trougliće na dugmiće... a da ostanem u svom omiljenom graf. modu..?
windows.224 wizard, -> #223, fancy
> Ima li neko ideju kako da vratim trougliće na dugmiće... a da ostanem > u svom omiljenom graf. modu..? Reinstaliraj Win, arhiviraj '*.FON' fajlove, instaliraj drajvere za karticu, dearhiviraj '*.FON' fajlove.
windows.225 fancy, -> #224, wizard
ŮŢ> Reinstaliraj Win, arhiviraj '*.FON' fajlove, instaliraj drajvere ŮŢ> za karticu, dearhiviraj '*.FON' fajlove. OK, znači kol'ko sam sFatio da instaliram neki WIN-ov standardni driver, sačuvam .FON... pa ih uporabim posle inst. drajvera za karticu... Thanx, eto meni zabave za noćas...
windows.226 asterix, -> #225, fancy
> ŮŢ> Reinstaliraj Win, arhiviraj '*.FON' fajlove, instaliraj drajvere > ŮŢ> za karticu, dearhiviraj '*.FON' fajlove. > > OK, znači kol'ko sam sFatio da instaliram neki WIN-ov standardni > driver, sačuvam .FON... pa ih uporabim posle inst. drajvera za > karticu... Thanx, eto meni zabave za noćas... Eto kako vas dvojica ipak možete da budete konstruktivni. NoRMaLno ? ;)
windows.227 pbojan,
Postoji li neki brzi nacin za ispis teksta od TextOut? Mozda neki ASM?
windows.228 paki,
Može li neko da šiljne sintaksu GetOpenFileName funkcije (u helpu je nema, a diskete s primerima nisu kod mene :()?
windows.229 paki, -> #228, paki
Zaboravih, treba mi i sintaksa funkcije za dijalog za izbor fontova.
windows.230 i.a.n., -> #228, paki
>> Može li neko da šiljne sintaksu GetOpenFileName funkcije (u >> helpu je nema, a diskete s primerima nisu kod mene :()? BOOL GetOpenFileName(OPENFILENAME FAR *lpofn); BOOL ChooseFont(CHOOSEFONT FAR *lpcf); ... ali ništa ti ne vredi bez opisa struktura OPENFILENAME i CHOOSEFONT, jedno 45 kilobajta teksta. Da šaljem?
windows.231 dekiper, -> #230, i.a.n.
ŠALJI OBAVEZNO (I NEKI SOURCE AKO IMAŠ UZ TO) Pozdrav, Deki
windows.232 i.a.n., -> #231, dekiper
>> ŠALJI OBAVEZNO (I NEKI SOURCE AKO IMAŠ UZ TO) Evo. U arhivi je, osim opisa struktura, i primer iz BC++ 3.1 koji sve to koristi. cdlgex.zip
windows.233 zkadovic,
Imam jedan problem! Skoro sam nabavio Visual C/C++ v1.0 da bih "malo cackao" po Windows-ima. Prilikom link-ovanja primera dobijenih uz compiler obavezno dobijam gresku: "R6000 - stack overflow". Imam instalirano 4 MB na ploci. Za probu, dodao sam jos 4 MB. Tada sam samo neke od primera (manji broj) mogao da ulinkujem. Iz komandne linije (iz DOS-a), naravno, svaki od primera moguce je prevesti (nmake -f ...). Koliko memorije je minimalno potrebno da bi compiler (linker) radio? Da li ima neki fazon prilikom instalacije (li nesto kao konfiguracija???) koga nisam primetio? Uopste, interesuju me detalji/iskustvo sa ovim paketom. Unapred hvala. Zoran.
windows.234 spantic,
Bar Code Control (VBX) <ASP> BarCod makes bar code display really easy. Just pick the orientation, set the size, and pick the bar code style. Then, set the text to whatever you want the bars to be. Nothing else to do! barcod11.zip
windows.235 spantic,
Disk and File Info Control (VBX) <ASP> This control gives you disk and file information that VB doesn't provide. It also allows you to change some aspects of a file (attributes, size, date, time, etc.). dfinfo14.zip
windows.236 spantic,
Security for Windows - contains two programs that add a measure of security to Windows. The first utility alters Program Manager to remove the FILE command and SAVE options so no programs can be run that are not on the ProgMan menu.The second is a program launcher with passwords. VB source code and VBRUN200 is included. seclau.zip
windows.237 spantic,
Telefonski imenik. Ako neko uspe da priključi sliku obavezno neka se javi :) V.I.P. 2.1 is an easy to use phonebook. As a special feature displaying pictures (BMP format) and playing VIDEO FOR WINDOWS files ( AVI format ) is provided. Requirements: - Microsoft Windows 3.1. - a 256 color graphics adapter is recommended. - To play AVI's: Video for Windows, Runtime Version Features : - up to 333 entries. - up to 256 color Bitmaps ( RGB encoded BMP format ). - searching is done on name, city and the extra field. - export is supported by copying of the selected entry to the clipboard. - automatic backup to VIP.BAK - printing of a addresses, entries sorted by name File list: - VIP.EXE _________ programm - VIP.DAT _________ data file ( sample entries ) - DJ.BMP, BS.BMP __ sample bitmaps - README _________ this file vip.zip
windows.239 sjocic, -> #237, spantic
├> Telefonski imenik. Ako neko uspe da priključi sliku obavezno ├> neka se javi :) └────────────────────────────────────────────────── Uspeo ja, ne vidim u cemu je problem to izvesti ???
windows.240 bigbrada,
Pitanje se tiče TPW-a. Situacija je ovakva : Imam Resource fajl koji se zove, npr. NESTO.RES (nije bitno). U njemu se nalaze Menu i Dialog. Imam recimo tri Dialog-a koji se zovu npr. PRVI, DRUGI i TRECI. Kako mogu na određenu opciju iz menija da prikačim određeni Dialog? U Dialog-u imam Edit Window. Gde se pamti to što ja upišem tu (u Edit-u)? Kako mogu iz programa da prosledim nešto (neku promenljivu) Dialog-u, koju će on da upiše u određeno polje? Ako ima nekoga koga ne mrzi da objašnjava, bio bih mu veeeoma zahvalan da to i učini... Patim se s ovim već nedelju dana i sve što sam uspeo da uradim je da osposobim Menu, i ništa više... Brada.
windows.241 mzgrdja,
Da li neko moze ostaviti primer pozivanja DLL-ova iz Visual Basica 3.0. Hitno potrebno je VB stalno javlja nesto kao invalid DLL. Unapred zahvalan.
windows.242 dekiper, -> #240, bigbrada
> Imam Resource fajl koji se zove, npr. NESTO.RES (nije bitno). > U njemu se nalaze Menu i Dialog. Imam recimo tri Dialog-a > koji se zovu npr. PRVI, DRUGI i TRECI. Kako mogu na određenu > opciju iz menija da prikačim određeni Dialog? U Dialog-u imam > Edit Window. Gde se pamti to što ja upišem tu (u Edit-u)? > Kako mogu iz programa da prosledim nešto (neku promenljivu) > Dialog-u, koju će on da upiše u određeno polje? Pazi ovako. Svaka stavka menija ima svoj karakteristični broj koji si morao zadati još pri izgradnji menija. U heder fajl (to je u TPW-u valjda .INC) te brojeve pretvori u neke fine labele da bi ti bilo lakše kasnije. Na primer ako je za prvu stavku broj 101 (najčešće) onda napiši nešto kao: const IDM_PRVI=101; itd. za sva tri. Kada si to uradio, meni osposobljavaš u WNDCLASS dodavanjem odgovarajuće stavke (pogledaj help) recimo (isečak iz jednog mog programa doduše u C-u): WNDCLASS wc; wc.style=NULL; wc.lpfnWndProc=MainWndProc; wc.cbClsExtra=0; wc.cbWndExtra=0; wc.hInstance=hInstance; wc.hIcon=LoadIcon(hInstance, "1_IKONA"); wc.hCursor=LoadCursor(NULL, IDC_ARROW); wc.hbrBackground=COLOR_APPWORKSPACE+1; wc.lpszMenuName="FSIMenu"; !!!!!!!!!!!!!!!!!!!!!! wc.lpszClassName="FSIClass"; return(RegisterClass(&wc)); Naravno u .RES fajlu si morao zadati ime meniju a to je ovde ko- nkretno FSIMenu. Kasnije ćeš u WndProc dodati stavku WM_COMMAND: Napomena da i svakom dijalogu moraš u okviru .RES fajla dati ime. Recimo da su imena PRVI, DRUGI i TRECI: FARPROC lpPrviDialog; // promenljive za dijaloge (nevezano za FARPROC lpDrugiDialog; // imena dijaloga) FARPROC lpTreciDialog; switch(message) š case WM_COMMAND: !!!!!!!!!!!!!!!!!! switch(wParam) š case IDM_PRVI: // prva stavka menija lpPrviDialog=MakeProcInstance(One, hInst); DialogBox(hInst, "PRVI", hWnd, lpPrviDialog); FreeProcInstance(lpPrviDialog); break; case IDM_DRUGI: // druga stavka menija lpDrugiDialog=MakeProcInstance(Two, hInst); DialogBox(hInst, "DRUGI", hWnd, lpDrugiDialog); FreeProcInstance(lpDrugiDialog); break; case IDM_TRECI: // treca stavka menija lpTreciDialog=MakeProcInstance(Three, hInst); DialogBox(hInst, "TRECI", hWnd, lpTreciDialog); FreeProcInstance(lpTreciDialog); break; ć Eto ga, a sada da znaš da su One, Two i Three u MakeProcInstance u stvari imena funkcija koje rade sa dijalogom (svaki dijalog MORA imati jednu, daću ti posle primer). PRVI, DRUGI i TRECI su imena dijaloga u .RES. Što se promenljivih sa završetkom Instance tiče, shvati da to tako mora. Priča o njima je dugačka i nepotrebna. E sada recimo da uradimo funkciju za prvi dijalog (podrazumeva se da dijalog ima samo jedan OK taster i ništa više): BOOL FAR _export PASCAL One(HWND hDlg, unsigned message, WORD wParam, LONG lParam) š switch(message) š case WM_INITDIALOG: return(TRUE); case WM_COMMAND: if(wParam==IDOK) š EndDialog(hDlg, TRUE); return (TRUE); ć break; ć return(FALSE); ć I, voila, treba da radi. Tako fino sve definiši, a posebno ono u .INC i .RES fajlu i nema problema. Funkcije jednostavno prepiši i promeni imena u Two i Three da bi radila sva tri dijaloga. Kasnije, kada ti bude trebalo nešto komplikovanije, proširićeš. Što se Edit-a u dijalogu tiče, postoje tri funkcije a to su GetDlgItemText, GetDlgItem i GetDlgItemInt. Prva ti daje tekstu- ali sadržaj recimo Edit Window-a, druga to isto samo u obliku broja dok treća daje pointer na objekat u okviru dijaloga (ovo ti još nije potrebno ali je vrlo bitno kada recimo treba treba raditi sa Check Box-ovima). Što se upisa u polja tiče, lako. PAZI!!! Ne smeš menjati funkciju One (u stvari ne smeš menjati listu parametara koju prima) jer je funkcija _export što znači da je poziva direktno Windows i daje joj tačan broj parametara koji ne smeš menjati. Inače, rešenje možeš naći u globalnim promenljivama ili još bolje, da definišeš potre- bne podatke u okviru funkcije One (ovo je dozvoljeno). I posle ćeš sa SetDlgItemText i SetDlgItemInt postavljati vrednosti u polja. Izgleda jednostavno kad ja objašnjavam, ali u praksi nije. Srećno i javi se ako zapne jer je bitno da stvorimo veliki broj poruka koje će oslikavati iskustvo stečeno u Win programiranju. Ovo je relati- vno nova tema i teško da postoji među nama neko ko je recimo savla- dao celog Petzold-a. Poenta je u tome da se postavi što veći broj raznih pitanja koja će možda neko drugi spojiti u celinu. Win pro- gramiranje kod nas baš i nije popularno, ali polako ljudi prelaze sa DOS-a na "pravu stvar" pa ih treba nečim dočekati :))). Pozdrav, Deki
windows.244 bigbrada, -> #242, dekiper
!##! Pazi ovako. Svaka stavka menija ima svoj karakteristični !##! broj koji si morao zadati još pri izgradnji menija. U heder !##! fajl (to je u TPW-u valjda .INC) te brojeve pretvori u neke !##! fine labele da bi ti bilo lakše kasnije. Na primer ako je za !##! prvu stavku broj 101 (najčešće) onda napiši nešto kao: const !##! IDM_PRVI=101; itd. za sva tri. OK. To sam i sam otkrio. U TPW-u ne postoji nikakav .INC fajl nego u samom programu napišeš: const IDM_Prvi = 101; IDM_Drugi = 102; ... !##! wc.lpfnWndProc = MainWndProc; Koja je to MainWndProc? Šta se u njoj dešava? !##! return(RegisterClass(&wc)); Šta vraća tu vrednost? žemu da je dodelim? U Pascalu ne postoji Return nego moraš da kažeš : To_i_to := RegisterClass (wc); !##! lpPrviDialog=MakeProcInstance(One, hInst); E ovde mi pravi probleme. Kaže (što je i istina :) da One mora da bude tipa TFarProc. OK to je u redu, stavim ja nju da bude tog tipa. Ali, u samoj funkciji se pojavljuje sledeće : !##! return(TRUE); Zbog toga funkcija mora da bude tipa Boolean! Ne mogu da joj dam dva tipa! Kako to rešiti? Kod tebe piše : !##! BOOL FAR _export PASCAL One(HWND hDlg, unsigned message, !##! WORD wParam, LONG lParam) Ja NE mogu da napišem : Function One (hDlg : Hwnd; Message : Word; wParam : Word; lParam : LongInt) : Boolean TFarProc; !!!!!!!!!! ================ Pozdrav, Brada.
windows.245 dekiper, -> #224, wizard
Ovako, MainWndProc u stvari obrađuje sve poruke koje stižu prozoru. U njoj se nalazi ona case struktura. Što se tiče ovog problema sa fukcijom One, pogledaj u bilo koji primer koji si dobio uz TPW a koji ima dijalog boks. Rado bi ti pomogao, PASCAL znam odlično ali nemam TPW (ni BPW) pa ne mogu da vidim šta je. Što se onog return-a tiče, izgleda da tebi uopšte nije jasna ni struktura Windows programa. Funkcija InitInstance u kojoj se nalazi punjenje WNDCLASS strukture mora vratiti rezultat da bi WinMain skontao da li je sve u redu prošlo. Najbolje uzmi kostur najosnovnijeg Win programa iz TPW i lepo dogradi šta nedostaje (neka to bude HelloWorld najbolje). Jedan savet. Nemam ništa protiv paskala, čak što više, više mi se sviđa od C-a, ali Windows programiranje je teško zamislivo bez C(++)-a. Bukvalno sva literatura (uključujući Petzold-a) referiše na C. Mislim da ćeš imati velikih problema ako budeš sve konvertovao u Paskal i natrag. Savet: Uzmi Turbo C+ for Windows ili Quick C for Windows. Oni su mali (relativno (oko 20 MB)) ali su efikasni do daske i što je najbolje vrlo brzi (doduše ne kao TPW) a i rad je mnogo lakši (što se direktnog rada sa API-jima tiče). Pozdrav, Deki
windows.246 .obj, -> #242, dekiper
> Izgleda jednostavno kad ja objašnjavam, ali u praksi nije. Srećno i > javi se ako zapne jer je bitno da stvorimo veliki broj poruka koje > će oslikavati iskustvo stečeno u Win programiranju. Ovo je relati- > vno nova tema i teško da postoji među nama neko ko je recimo savla- > dao celog Petzold-a. Poenta je u tome da se postavi što veći broj > raznih pitanja koja će možda neko drugi spojiti u celinu. Win pro- > gramiranje kod nas baš i nije popularno, ali polako ljudi prelaze > sa DOS-a na "pravu stvar" pa ih treba nečim dočekati :))). Slažem se. :) Iskreno, nisam očekivao da će neko odgovoriti BigBratu na onako uopštena pitanja. Da bih i ja malo pomogao, počeću sa par prostih primera. Pošto je neko (dekiper? :) tražio primere za upotrebu COMMDLG.DLL, evo samo tri najprostija primera za COMMDLG.GetOpenFileName, COMMDLG.ChooseFont i COMMDLG.ChooseColor. Pre upotrebe bilo koje od funkcija, morate imati tri stvari: o COMMDLG.DLL Biblioteka sa common dijalozima o COMMDLG.LIB Kreira se pozivom programa IMPLIB, neophodan pri linkovanju o COMMDLG.H Prototipi funkcija iz COMMDLG.DLL, strukture i konstante Sve funkcije se u principu koriste tako što se popuni posebna struktura, i zatim jednostavno izvede poziv odgovarajuće funkcije koja vrati TRUE ili FALSE, zavisno od toga da li je korisnik pritisnuo OK ili Cancel. Još par detalja. Gotovo sve funkcije dozvoljavaju i tzv. template-ove. Naime, možete biti nezadovoljni izgledom nekog od dijaloga, ili jednostavno želite da uklonite neku kontrolu ili taster. Tada jednostavno prekopirate dijalog iz COMMDLG.DLL u neki skript (npr. MYCHFONT.DLG), u njemu izvršite potrebne promene, i na kraju dijalog pomoću RC-a uključite u EXE. Potrebno je još samo da u odgovarajućoj strukturi pri pozivanju neke od ChooseXxx funkcija podesite polje lpTemplateName koje treba da sadrži ime promenjenog dijaloga. Druga primamljiva mogućnost je definisanje hook funkcije. Ova funkcija nasleđuje neku od originalnih DLGPROC iz COMMDLG.DLL, praktično je moguća izmena ponašanja u okviru samog dijaloga, npr. dodavanje dodatnih tastera, ListBox-ova itd. Sa ovom mogućnošću je praktično omogućena potpuna fleksibilnost i izmenljivost COMMDLG dijaloga. //--------------------------------------------------------------- // Primer za COMMDLG.ChooseFont() CHOOSEFONT cf; LOGFONT lf; memset(&lf, 0, sizeof(LOGFONT)); strcpy(lf.lfFaceName, "MS Sans Serif"); // ime fonta lf.lfHeight = 8; // veličina memset(&cf, 0, sizeof(CHOOSEFONT)); cf.lStructSize = sizeof(CHOOSEFONT); cf.hwndOwner = hWnd; // roditeljski prozor cf.lpLogFont = &lf; cf.Flags = CF_SCREENFONTS | CF_NOSIMULATIONS | CF_INITTOLOGFONTSTRUCT; cf.nFontType = REGULAR_FONTTYPE | SCREEN_FONTTYPE; if(ChooseFont(&cf)) MessageBox(hWnd, lf.lfFaceName, "ChooseFont demo:", MB_OK); // Primer za COMMDLG.GetOpenFileName() OPENFILENAME ofn; char szFile[256], szFileTitle[256], *p, char szFilter[256]; szFile = '\0'; // ovde se može staviti default ime strcpy(szFilter, "INI files,*.INI,All files,*.*,"); p = szFilter; while(*p) if(*p++ == ',') *--p = 0; // svaku pojavu zareza menjamo u (char)0 memset(&ofn, 0, sizeof(OPENFILENAME)); ofn.lStructSize = sizeof(OPENFILENAME); ofn.hwndOwner = hWnd; ofn.lpstrFilter = szFilter; ofn.nFilterIndex = 1; // inicijalno aktivni filter (*.INI) ofn.lpstrFile= szFile; // pointer na ime ofn.nMaxFile = sizeof(szFile); ofn.lpstrFileTitle = szFileTitle; ofn.nMaxFileTitle = sizeof(szFileTitle); ofn.lpstrInitialDir = "."; ofn.lpstrTitle = "Open file..."; // ime prozora ofn.Flags = OFN_HIDEREADONLY; if(GetOpenFileName(&ofn)) MessageBox(hWnd, szFile, "GetOpenFileName demo:", MB_OK); // Primer za COMMDLG.ChooseColorI() CHOOSECOLOR cc; COLORREF Color, CustomColors[16]; int i; for(i = 0; i < 16; i++) CustomColors[i] = RGB(0, 0, 0); // ovde se mogu dodati sopstvene boje memset(&cc, 0, sizeof(CHOOSECOLOR)); cc.lStructSize = sizeof(CHOOSECOLOR); cc.hwndOwner = hWnd; // roditeljski prozor cc.rgbResult = RGB(123, 34, 158); // boja koja se menja cc.lpCustColors = CustomColors; cc.Flags = CC_FULLOPEN | CC_RGBINIT; if(ChooseColor(&cc)) // u cc.rgbResult je izabrana boja //--------------------------------------------------------------- Ovo će pomoći da vaši izgledaju puno lepše, na stranu što je mnogo lakše pozvati par funkcija umesto da se pišu kompletni dijalozi. Kad smo već kod vizuelnog utiska, možda želite da vaši dijalozi izgledaju kod oni u Excel-u 4.0? Ništa lakše! Prekopirajte CTL3D.DLL iz Excelovog direktorijuma u direktorijum vašeg programa (CTL3D je u javnom vlasništvu). Zatim u headeru dodajte sledeće prototipove: BOOL WINAPI Ctl3dRegister(HINSTANCE); BOOL WINAPI Ctl3dUnregister(HINSTANCE); BOOL WINAPI Ctl3dAutoSubclass(HINSTANCE); Da bi dijalozi bili 3D, potreban je gotovo zanemarljivo mali trud. Jednostavno, na početku programa dodajte: Ctl3dRegister(hInstance); Ctl3dAutoSubclass(hInstance); a pred skidanje iz memorije ubacite: Ctl3dUnregister(hInstance); i to je sve! Ako vam se ne sviđa (kao meni) izgled checkboxova i radio buttona, učitajte CTL3D.DLL u neki bitmap editor i doterajte ga po svom ukusu. Još je samo potrebno kreirati CTL3D.LIB (zbog linkovanja) - upotrebite IMPLIB! Have fun! OB Cool J
windows.247 paki, -> #244, bigbrada
­> OK. To sam i sam otkrio. U TPW-u ne postoji nikakav .INC ­> fajl nego u samom programu napišeš: ­> ­> const Ovo je loša praksa za veće programe, jer, ako budeš pravio menije, dijaloge i ostalo iz npr. Resource Workshopa ili Whitewater Resource Toolkita, moraćeš ručno da menjaš konstante kada praviš neku izmenu. Najbolje je da ih sve strpaš u .INC fajl, i onda ga ubaciš na početak glavnog programa, ili, još bolje, da ih strpaš u jedan unit (u interface sekciju) i onda taj unit uključiš u glavni program. Tako ćeš moći da ih menjaš i ručno i pomoću Workshopa. ­>!##! wc.lpfnWndProc = MainWndProc; ­> ­> Koja je to MainWndProc? Šta se u njoj dešava? MainWndProc je procedura za obradu poruka koje prima glavni prozor od Windowsa. Kada korisnik uradi bilo šta što se tiče tvog programa (pritisne taster, pomeri miša, klikne mišem) ili kad Windows želi da te obavesti o nekom događaju od važnosti za tvoj program, poziva se ta procedura, kojoj se kao parametri prosleđuju kod poruke i još par informacija. U zavisnosti od toga, tvoj program radi ono što ti želiš (npr. ako je poruka WM_DESTROY, tvoj program treba da počisti za sobom :), dakle, pozatvara sve prozore, oslobodi memoriju koju je alocirao itd.). ­> Ja NE mogu da napišem : ­> ­> Function One (hDlg : Hwnd; Message : Word; wParam : Word; ­> lParam : LongInt) : Boolean TFarProc; !!!!!!!!!! ­> ================ Tačno, ne možeš, ali to ti i ne treba. Funkcija One je tipa Bool (ili Boolean, svejedno je). Treba ti i jedna promenljiva tipa TFarProc, u kojoj ćeš da čuvaš pointer na instancu funkcije One. Prvo napišeš funkciju One. Zatim, 1) Pomoću MakeProcInstance, napraviš njenu instancu i sačuvaš pointer na nju u neku promenljivu (recimo pDialogProc). 2) Sad kažeš Windowsima da napravi dialog box, i kažeš im da će funkcija One da kontroliše taj dialog box. Zatim posao preuzima funkcija One, koja vraća kontrolu nazad kad se dialog box zatvori. 3) Tada ubiješ instancu funkcije One i nastaviš dalje s radom. To u konkretnoj izvedbi izgleda ovako: -------- function One (hDialog:hWnd; Message, wParam:word; lParam:longint): Bool; export; begin ... end; procedure MakeDialog (pHandler: TFarProc; DialogID: PChar; hParent: hWnd); var pDialogProc:TFarProc; begin pDialogProc:=MakeProcInstance(pHandler, hInstance); <--1 DialogBox(hInstance, DialogID, hParent, pDialogProc); <--2 FreeProcInstance(pDialogProc); <--3 end; function MainWndProc(hWindow:hWnd; Message,wParam:word; lParam:longint): longint; export; begin MainWndProc:=0; case WParam of IDM_ONE: MakeDialog(@One,'ONE', hMainWindow); ... else MainWndProc:= DefWindowProc(hWindow, Message, WParam, LParam); end; end; -------- Nadam se da sam bar malo pomogao. Pogledaj jedan od 3-4 primera (zaboravio sam mu ime) u direktorijumu EXAMPLES, on radi upravo ono što tebi treba (otvara About dialog box na odgovarajući izbor iz menija) i moći ćeš da vidiš kako se to radi u Pascalu.
windows.248 .obj, -> #246, .obj
Ispravka: > p = szFilter; > while(*p) > if(*p++ == ',') > *--p = 0; // svaku pojavu zareza menjamo u (char)0 Ovo neće raditi ovako, nego npr. for(p = szFilter; *p; p++) if(*p == ',') *p = 0; OB Cool J
windows.249 bigbrada, -> #247, paki
!##! Nadam se da sam bar malo pomogao. I did it, I did it!!! ;))) Hvala Pakiju, hvala Dekiju! :) Ali ne! Nemojte se obradovati pre vremena! Uskoro, vrlo uskoro će se desiti to : The Return of BIGBrada (sa gomilom (prvenstveno) glupih pitanja ;) ;))))) Pozdrav, Brada. :)
windows.250 pjankovic,
BUG kod BC++3.1? :( BCW s vremena na vrijeme prekida rad sa porukom "GENERAL PROTECTION FAULT"... :( žini mi se da se to ne dešava potpuno slučajno, već da postoje neka pravila. Naime, par puta se desilo da nekoliko puta uzastopno, prilikom kompajliranja jednog te istog fajla javi ovu grešku. Onda ja izbrišem "*.SYS" fajl (prekompajlirani heder) i sve ispravno radi. Međutim, ponekad nastavi sa radom i bez brisanja ovog fajla. Nadalje, greška se nikada ne dešava kod prvog kompajliranja vec isključivo poslije nekoliko ciklusa edit-compajl-link-run. Ovo me navodi na zaključak da krivica nije do hardvera vec do Borlanda. Da li se još nekome ovo dašava?
windows.251 paki, -> #250, pjankovic
­> BUG kod BC++3.1? :( ­> ­> BCW s vremena na vrijeme prekida rad sa porukom "GENERAL PROTECTION ­> FAULT"... :( žini mi se da se to ne dešava potpuno slučajno, već da Uzmi neki program tipa DrWatson, HotLine ili WinSpector, pa vidi šta će ti oni reći.
windows.252 mjova, -> #250, pjankovic
> grešku. Onda ja izbrišem "*.SYS" fajl (prekompajlirani > heder) i sve ispravno radi. Međutim, ponekad nastavi sa > radom i bez brisanja ovog fajla. ako se ne varam radi se SYM datoteci, a njenim brisanjem se zaista rešava problem. naime, ta datoteka služi da ubrza prevođenje, ali ako se često menjaju zaglavlja (koja ulaze u nju) onda se ona povećava. činjenica je da tu nešto nije ok, ali meni se ta greška nije skoro javila jer redovno brišem te datoteke.
windows.253 mvukolic,
Ima li interesenata za sve primere iz knjige "Programming Windows" Charlesa Petzolda? Ako ima da šaljem...
windows.254 vcalic, -> #250, pjankovic
>> BCW s vremena na vrijeme prekida rad sa porukom "GENERAL PROTECTION >> FAULT"... :( žini mi se da se to ne dešava potpuno slučajno, već da Nije do Borlanda. Nešto drugo je u pitanju, može biti maltene bilo šta od sistemskog softvera. Meni se isto dešavalo sa HELP fajlom (svaki put kad sam pokušao da pročitam HELP za Notification Messages mi je javljao GPF), a krivac je bio Stacker, jer je nekako razvukao svoj fajl preko bad sectora. Kad sam poskidao sve sa Stacker particije i ponovo instalirao od tad radi ko Bog. Pregledaj sve moguće drajvere, swap fajl i ostalo, verovatno je tu negde greška. Vlada
windows.255 i.a.n., -> #250, pjankovic
>> BCW s vremena na vrijeme prekida rad sa porukom "GENERAL >> PROTECTION FAULT"... :( žini mi se da se to ne dešava potpuno >> >> Onda ja izbrišem "*.SYS" fajl (prekompajlirani heder) i sve >> ispravno radi. Međutim, ponekad nastavi sa radom i bez brisanja >> ovog fajla. BC++ nije baš sasvim čist u radu sa .SYM fajlovima. Primetio sam da posle izvesnog broja ispravki u zaglavljima, znači i njihovog ponovnog kompajliranja, .SYM zna nenormalno da naraste u odnosu na prvobitnu veličinu. Problem sam "rešio" tako što u .SYM držim samo windows.h i kompajliram sa -Hu. Sva ostala zaglavlja su ionako mizerno mala u odnosu na windows.h.
windows.256 dsisic, -> #253, mvukolic
> Ima li interesenata za sve primere iz knjige > "Programming Windows" Charlesa Petzolda? > Ako ima da saljem... Salji rodjace :)
windows.257 pjankovic,
> Uzmi neki program tipa DrWatson, HotLine ili WinSpector, pa vidi > šta će ti oni reći. HotLine ikona uvijek mi "čuči" u lijevom donjem uglu ekrana :). Smatram ovaj program vrlo korisnim i praktično nezamjenljivim. Ali on u konkretnom slučaju ostaje potpuno nijem. Inače, skoro sam siguran da je krivica u *.SYM fajlu. Sinoć je prilikom kompajliranja "iskočio" uz čuvenu poruku "GENERAL PROTECTION FAULT".:( Resetovao sam računar, ponovo pokrenuo BCW, kompajler i ponovo greška, i to na istoj liniji izvornog koda. Pošto se ovo ponovilo i treći put obrisao sam *.SYM fajl i tada je sve prošlo normalno.
windows.258 pjankovic,
> Ima li interesenata za sve primere iz knjige > "Programming Windows" Charlesa Petzolda? Naravno!:)
windows.259 spantic, -> #253, mvukolic
> Ima li interesenata za sve primere iz knjige > "Programming Windows" Charlesa Petzolda? Ima, ima :)
windows.260 fancy, -> #253, mvukolic
ŮŢ> Ima li interesenata za sve primere iz knjige ŮŢ> " Programming Windows" Charlesa Petzolda? ŮŢ> Ako ima da šaljem... Daaaa! :)
windows.261 markom, -> #253, mvukolic
■■■ Ima li interesenata za sve primere iz knjige ■■■ "Programming Windows" Charlesa Petzolda? ■■■ Ako ima da šaljem... Pošto će verovatno da kažu da nije PD/SW, ti meni lepo to pošalji na mail, OK ? :)) Marko
windows.262 fancy, -> #261, markom
ŮŢ> Pošto će verovatno da kažu da nije PD/SW, ti meni lepo to pošalji na mail, ŮŢ> OK ? Nije OK... A ostali..? Group..?
windows.263 dvesic,
Cao ! Molim Vas, ako neko ima program koji pod Windowsima zamenjuje misa kurzorskim tasterima da mi ga posalje u mail. (Na jednom racunaru je instaliran Win, nema misa ali mi je preko potreban) ! Unapred zahvalan, Dejan.
windows.264 dekiper,
E; možda je ovo već i bilo ali mi treba fora sa kojom bi pronašao kpod kojom verzijom Windows-a program radi (naravno iz C-a)... Pozdrav, Deki
windows.265 hobit, -> #253, mvukolic
> Ima li interesenata za sve primere iz knjige > "Programming Windows" Charlesa Petzolda? > Ako ima da šaljem... Samo šalji. Ako nemože u conf. mail je otvoren
windows.266 djelovic, -> #261, markom
> Pošto će verovatno da kažu da nije PD/SW, ti meni lepo to pošalji na mail, Primeri iz knjige su uvek PD. Prilog je dobrodošao, uz predlog Bulaji da to odmah prebaci u dir.
windows.267 bigbrada, -> #256, dsisic
!##!> Ako ima da saljem... !##! !##! Salji rodjace :) Noge kako!! :) Brada.
windows.268 bigbrada,
Kako se zove funkcija koja mi kaže da li je CheckBox aktiviran ili nije? Izgiboh, ali to ne nađoh... :( Brada.
windows.269 vcalic, -> #253, mvukolic
>> Ima li interesenata za sve primere iz knjige >> "Programming Windows" Charlesa Petzolda? >> Ako ima da šaljem... Ima. Vlada
windows.270 vcalic, -> #264, dekiper
>> E; možda je ovo već i bilo ali mi treba fora sa kojom bi pronašao kpod >> kojom verzijom Windows-a program radi (naravno iz C-a)... DWORD GetVersion(void) U Windows-u 3.1 je DWORD, u ranijim verzijama izlaz je WORD. U nižih 16 bita je Windows verzija. Viši bajt je "minor" (tj. broj iza tačke, kod Win 3.1 je 10) a niži bajt "major" (kod Win 3.1 je 3). U viših 16 bita je verzija DOS-a, s tim što je u višem bajtu "major" a u nižem "minor". U ranijim verzijama Windowsa izlaz je tipa WORD i sadrži samo Windows verziju. Vlada
windows.271 asterix,
Jel instalirao neko CL5422 v1.4 drivere sa sezama ? Desava mi se dosta cudna stvar. Install krene, pita gde je win direktorijum, i pocne da kopira prvi file koje 16 color driver i vrti se sam jako dugo. Najduze sto sam ga pustio bilo je 15 min. Any hints ?
windows.272 mvukolic,
Charles Petzold "Programming Windows" petzold.zip
windows.273 dekiper, -> #268, bigbrada
> Kako se zove funkcija koja mi kaže da > li je CheckBox aktiviran ili nije? > Izgiboh, ali to ne nađoh... :( Zavisi od toga da li ti je CheckBox u okviru prozora ili dijaloga! Ako je u okviru prozora onda si mu dodelio neki HWND kada si ga kreirao... recimo: HWND hCheckBox; hCheckBox=CreateWindow("Button","Deki",BS_CHECKBOX đ WS_CHILD đ WS_VISIBLE,20,40,80,20,IDC_DEKI); Onda ćeš sa jednim: if(SendMessage(hCheckBox, BM_GETCHECK, 1, 0L)) videti da li jeste ili nije. Ako je u okviru dijaloga onda: hDlg je handle dijaloga, a IDC_CHECKBOXUDLG identifikacioni broj objekta u dijalogu (definisao si ga u .RES , već smo o tome raspravljali!). if(SendMessage(GetDlgItem(hDlg, IDC_CHECKBOXUDLG), BM_GETCHECK, 0, 0L)) ako je TRUE (!=0) onda jeste a ako je FALSE (0) onda nije! Pozdrav, Deki
windows.274 paki, -> #264, dekiper
­> E; možda je ovo već i bilo ali mi treba fora sa kojom bi pronašao kpod ­> kojom verzijom Windows-a program radi (naravno iz C-a)... GetVersion (Windows API function) Declaration function GetVersion: Word; Description Retrieves Windows' current version number Return value Minor version number in high-order byte Major version number in low-order byte
windows.275 kenza, -> #253, mvukolic
(;> Ima li interesenata za sve primere iz knjige (;> "Programming Windows" Charlesa Petzolda? Naravno ;) Monumentalno ;)
windows.276 goranr,
Skinuo sam sa sezama Oberon4Win, instalirao sam Win32s, sve fino uradio, startovao Share /f:16384 /l:255, set oberondirs=E:Đoberon;e:ĐoberonĐfonts, igra FreeCell radi, ali Oberon kad ga startujem javlja Dos grešku 21? Da li je to greška 15h ili 21h? Ako je 21h, onda je problem sa zaključavanjem fajlova.... a ne bi trebalo da ga bude... Please help me!!!!!! ÔOPAH
windows.277 markom, -> #262, fancy
■■■ Group..? Može ... Marko
windows.278 pbojan, -> #262, fancy
>> Nije OK... A ostali..? >> Group..? Evo, i ja 'ocu :).
windows.279 dekiper, -> #278, pbojan
E, može grupa ali bez suvišnih članova, moliću lepo. Imam već dosta iskustva sa ljudima koji bi daj bože ali da budu u nekoj grupi. Hajde da se organizujemo i da se to lepo i pošteno uradi i ne samo to (mislim na Petzold-a). Predlažem da vođa grupe bude .obj pošto je najiskusniji i moći će da proceni ko je višak a ko nije. Dakle Obrade... Pozdrav, Deki
windows.280 markom, -> #272, mvukolic
■■■ Charles Petzold "Programming Windows" Hvala :) Marko
windows.281 .obj, -> #273, dekiper
> if(SendMessage(GetDlgItem(hDlg, IDC_CHECKBOXUDLG), BM_GETCHECK, 0, 0L)) > > ako je TRUE (!=0) onda jeste a ako je FALSE (0) onda nije! Može i jednostavnije, pozivom funkcije IsDlgButtonChecked(). Na primer, if(IsDlgButtonChecked(hDijalog, CheckBoxID)) ... Slično, ako treba "uključiti" neki CheckBox ili RadioButton, nije neophodno slati poruku BM_SETCHECK, dovoljno je samo CheckDlgButton(hDijalog, CheckBoxID); P.S. Svi koji oće u grupu winp - nek' kažu, i nek požure pošto nema više puno mesta.
windows.282 kenza, -> #281, .obj
(;> Svi koji oce u grupu winp - nek' kazu, i nek pozure posto (;> nema vise puno mesta. Ajde baci me tamo ;) please ;)
windows.283 .obj,
Rekosmo da ovu temu treba održavati zarad novajlija u win-programiranju. Pa, evo rezultata mog jednočasovnog mučenja i to po sred ispitnog roka. :)) Radi se o malom tekstu na temu subclassiranja (nisam znao ovo da prevedem, majke mi). Subclassiranje prozora žesto je potrebno izmeniti "default" ponašanje neke standardne kontrole. Naime, standardne kontrole (za one koji ne znaju šta je to, to su standardni Windows elementi kao Button-i (tasteri), Edit polja, ListBox-ovi za izbor stvari iz liste itd) su napravljene tako da zadovoljavaju jedan minimum potreba koje se javljaju u normalnom radu. Obezbeđene su i malo finije mogućnosti, uglavnom u domenu regulisanja spoljašnjeg izgleda standardnih kontrola (tzv. owner draw Button-i, ListBox-ovi itd). Međutim, šta ako to nije dovoljno? Reklo bi se da nije moguće, na primer, obezbediti da se pritiskom na taster Ctrl-Q u standardnom Edit polju pojavi tekuće vreme i datum, a da nije potrebno iznova pisati sve one kerefeke koje podržava standardno Edit polje. Da bi ovo postigli, potrebno je upotrebiti "mehanizam" subclassiranja. Potencijalni problemi Na isti način kako se subclassiraju prozori, mogu se subclassirati i klase prozora. Raditi to sa standardnim klasama (Button, Edit...) nije nimalo preporučljivo, jer se time menja ponašanje *svih* prozora u sistemu koji pripadaju klasi koju subclassiramo! Zato se praktikuje samo subclassiranje pojedinačnih prozora. U određenim situacijama, naravno, neophodno je subclassiranje klasa prozora, ali to praktično rade samo programi tipa ALL3D, a takvi se ne prave baš svaki dan. Kako subclassirati prozor Iako zvuči opako, subclassiranje prozora je u principu veoma jednostavno - rutinska operacija. Naime, svaki prozor u sistemu ima svoje "lične i personalne" podatke - ime, stil, handle roditeljskog prozora, pointer na "servisnu" funkciju (WndProc), ID (ukoliko se radi o child prozoru) i još neke podatke. Da bi se pročitale neke od tih vrednosti, koriste se funkcije GetWindowLong() i GetWindowWord(). Na primer, DWORD Style = (DWORD)GetWindowLong(hProzor, GWL_STYLE); Ovime smo, dakle, "očitali" stil prozora, koji dalje možemo testirati logičkim operatorima da bismo saznali da je prozor, na primer, vidljiv (bit WS_VISIBLE). Naravno, taj podatak se može očitati i funkcijom IsWindowVisible(), ali ovo je, jelda, samo primer. Na potpuno isti način moguće je i menjati podatke koji pripadaju nekom prozoru a koriste se, logično, funkcije SetWindowWord() i SetWindowLong(). Stižemo do subclassiranja. Ono što bi nama bilo potrebno je da nekako "preusmerimo" servisnu funkciju (WndProc) na neku našu funkciju, tu uradimo ono što želimo i zatim samo pozovemu "staru" (tj. originalnu) prozorsku servisnu funkciju. Ukratko, ideja je sledeća: StaraWindowProcedura = OčitajWindowProceduru ( hProzor ) PostaviNovuWindowProceduru ( hProzor, NovaWindowProcedura ) ... proc NovaWindowProcedura: if(PrisitnutoCtrlQ) ...pošalji StarojWindowProceduri trenutni datum i vreme u ASCII obliku. Najlakše je to uraditi tako što se StarojWindowProceduri šalju poruke WM_CHAR (pritisak na ASCII karakter) koje ona automatski "ispisuje" u Edit prozor else Pozovi(StaraWindowProcedura) Konkretno, stvar bi ličila na nešto tipa: // Long Pointer to FuNction, lpfn, dva komada, globalne // promenljive WNDPROC lpfnStaraWndProc, lpfnNovaWndProc; // prelazimo na stvar: // // napravimo instancu novog WndProc-a na koji // hoćemo da preusmerimo tok poruka lpfnNovaWndProc = (WNDPROC)MakeProcInstance( (FARPROC)NovaWndProc, hInst); // očitajmo originalnu WndProc, da bi se kasnije mogla pozivati // preko CallWindowProc(). lpfnStaraWndProc = (WNDPROC)GetWindowLong( hProzor, GWL_WNDPROC); // najzad: postavljamo novu WndProc SetWindowLong( hProzor, GWL_WNDPROC, (LONG)lpfnNovaWndProc); // Moguće je poslednja dva poziva spojiti u jedan - pošto // SetWindowLong() ujedno i vraća originalnu vrednost promenljive // GWL_WNDPROC, međutim, ovako je možda malo očiglednije. Upravo smo izvršili subclassiranje prozora "hProzor"! Podrazumeva se, naravno, da smo ga pre toga kreirali (bilo preko CreateWindow() ili je to uradio DialogBox za nas). Ukoliko se subclassira kontrola u okviru dijaloga (najčešći slučaj), ovo sve gore se poziva kao reakcija na poruku WM_INITDIALOG. Ostaje još samo da se napravi NovaWndProc. Ona ima istu strukturu kao i bilo koja standardna WndProc, samo što na kraju mora (ili bi trebalo) da pozove "staru", tj. originalnu WndProc. To pozivanje ide preko funkcije CallWindowProc(). Evo kako izgleda NovaWndProc: LRESULT FAR PASCAL NovaWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { // sve je potpuno standardno, uključujući i obavezu da se ova // funkcija EXPORT-uje! // taster Ctrl+Q ima kod 17: if(message == WM_CHAR && (char)wParam == 17) { // par pomoćnih promenljivih da bi se očitao datum i vreme time_t v; char *vreme; // očitajmo trenutno vreme i datum: time(&v); vreme = asctime(localtime(&v))); // ... i pošaljimo ga u Edit prozor kao da ga ručno kuca // korisnik: while(*vreme != '\n') { // asctime završava string sa '\n' // simuliramo kucanje slanjem poruka WM_CHAR u // originalnu WndProc CallWindowProc( lpfnStaraWndProc, // zovemo WndProc koja pripada // originalnoj Edit klasi hWnd, // šaljemo istom prozoru... WM_CHAR, // poruku WM_CHAR... (WPARAM)*vreme, // pritisnut je ASCII taster 0); vreme++; } // pravimo se kao da se ništa nije desilo: return NULL; } // ako korisnik nije pritisnuo Ctrl+Q, samo treba pozvati // staru WndProc da bi ona uradila sve što inače radi // WndProc jednog Edit prozora return CallWindowProc(lpfnStaraWndProc, hWnd, message, wParam, lParam); } Potrebno je i, nakon uništavanja subclassiranog prozora, poništiti kreiranu instancu funkcije NovaWndProc. Ukoliko se radi o dijalogu, reakcija na poruku WM_DESTROY bi bila: BOOL FAR PASCAL AbcDlgProc(...) ... case WM_DESTROY: // uništimo instancu funkcije NovaWndProc FreeProcInstance(lpfnNovaWndProc); ... I time smo uradili sve što je potrebno da bi edit-polje u dijalogu na pritisak tastera Ctrl+Q prikazivalo trenutni datum i vreme (btw, u formatu "Thu Jan 27 13:39:06 1994"). Have fun! OB Cool J
windows.285 pjankovic,
> E, može grupa ali bez suvišnih članova, moliću lepo. Imam već dosta Sada ste me podsjetili da već postoji jedna grupa koja se bavi Windows programiranjem. Zove se winprog i njen vlasnik je dragan.jurić. Ako me sjećanje ne vara, već više od godinu dana nije emitovala ni jednu poruku.:( Nadam se da ova nova grupa neće doži- vjeti istu sudbinu:).
windows.286 ognjen, -> #282, kenza
[reply to .obj] )-> Svi koji oce u grupu winp - nek' kazu, i nek pozure posto )-> nema vise puno mesta. Nije li glupo otvarati grupu, kad ima ta tema u konferenciji?
windows.287 robert, -> #272, mvukolic
>> Charles Petzold "Programming Windows" Ok, a sad bih voleo da znam sledeće stvari: - da li neko ima tu knjigu i voljan je da mi je pozajmi na dan da je iskopiram i - za kopji kompajler su pisani primeri u knjizi ona prva stavka mi je veoma bitna :). Još bi me zanimalo da li neko ima Visual C++ i neku literaturu, voleo bih da to malo pogledam :).
windows.289 bigbrada, -> #273, dekiper
!##! if(SendMessage(GetDlgItem(hDlg, IDC_CHECKBOXUDLG), !##! BM_GETCHECK, 0, 0L)) !##! !##! Pozdrav, Deki Thanx. :) Brada.
windows.290 zormi, -> #287, robert
* Još bi me zanimalo da li neko ima Visual C++ i neku literaturu, * voleo bih da to malo pogledam :). Imam Visual C++ 1.0, ali sam zagubio literaturu... Izašao je i VC++ 1.5, izgleda na CD-u.
windows.291 markom, -> #290, zormi
■■■ Imam Visual C++ 1.0, ali sam zagubio literaturu... ******* :)))))) ili je nisi ni imao ;))) Marko
windows.292 dekiper, -> #290, zormi
Definiši ZAGUBIO, a onda ćemo svi da te bijemo! Pozdrav, Deki
windows.293 vcalic, -> #287, robert
>> - za kopji kompajler su pisani primeri u knjizi Za MSC 6.0 + SDK. BTW, nije loše dobro prostudirati Petzolda, ali može se i bez toga vrlo lepo i lako programirati pod Windows-om. Npr. Help za BC3.1 sadrži maltene sve potrebne informacije, a neki osnovni koncepti se mogu izvući iz raznih source-ova priloženih uz kompajlere, a i iz raznih PD arhiva kojih ima i po Sezamu. Vlada
windows.294 jovca.car, -> #290, zormi
/* Imam Visual C++ 1.0, ali sam zagubio literaturu... "Zagubio" literaturu od nekoliko hiljada strana??? Cuj, nasi smo, kazi slobodno da je nikad nisi ni video...:)
windows.295 bigbrada, -> #281, .obj
!##! Svi koji oće u grupu winp - nek' kažu, i nek požure pošto !##! nema više puno mesta. Ubacuj me!!! Brada.
windows.296 bigbrada,
Opet problem. Imam dijalog koji uzima parametre za Edit Window iz fajla. E sad, u tom dijalogu imam Button koji treba da otvori isti dijalog, ali sa drugim parametrima (koje takođe uzima iz fajla). Evo primera : Function Primer (Dialog : HWnd; Poruka, WParam: Word; LParam: Longint): Bool; export; begin Primer := True; Case Poruka of wm_InitDialog : begin Reset (DBPrimer); Seek (DBPrimer, GdeDaIdem); Read (DBPrimer, HelpPrim); Close (DBPrimer); SetDlgItemText (...); ... Exit; end; wm_Command : begin Case WParam of 001 : begin GetDlgItemText (...); ... EndDialog (Dialog, 1); Exit; end 800 : begin Inc (GdeDaIdem); ????????? end 002 : begin EndDialog (Dialog, 1); Exit; end; end; end; end; Primer := False; end; Kada pritisnem taj Button, onda uvećavam GdeDaIdem, i treba ponovo da se pozove funkcija Primer. Stavio sam to ali se ništa ne dešava. Pokušao sam i ovo Poruka := wm_InitDialog; ali nije uspelo. Šta treba da uradim da bi radilo? Brada.
windows.297 zbubnjevic, -> #281, .obj
Zainteresovan sam za učešće u winp grupi. Pa ako može rado bih pristupio. zbubnjevic!
windows.298 i.a.n., -> #296, bigbrada
>> Opet problem. Imam dijalog koji uzima parametre za Edit Window >> iz fajla. E sad, u tom dijalogu imam Button koji treba da otvori >> isti dijalog, ali sa drugim parametrima (koje takođe uzima iz >> fajla). Da li hoćeš da otvaraš novi dialog box ili samo da promeniš parametre postojećeg? Ako je ono prvo, moraš ponovo da zoveš DialogBox(). U drugom slučaju probaj da izdvojiš sva podešavanja elemenata u proceduru, pa je zovi i kad obrađuješ WM_INITDIALOG i kad se pritisne to dugme. Recimo Function Primer (Dialog : HWnd; Poruka, WParam: Word; LParam: Longint): Bool; export; (* Ovde su podešavanja *) Procedure SetDlgPara(Dialog: HWnd; ...); begin SetDlgItemText(...); ... end; begin Primer := True; Case Poruka of wm_InitDialog: begin Reset (DBPrimer); Seek (DBPrimer, GdeDaIdem); Read (DBPrimer, HelpPrim); Close (DBPrimer); SetDlgPara (Dialog, ...); (* zoveš podešavanja *) ... Exit; end; wm_Command: begin Case WParam of 001: begin GetDlgItemText (...); ... EndDialog (Dialog, 1); Exit; end 800: begin Inc (GdeDaIdem); ... (* ponovo zoveš proceduru za podešavanja *) SetDlgPara(Dialog, ...); ... end; end; end; Primer := False; end;
windows.299 markom, -> #281, .obj
■■■ Svi koji oće u grupu winp - nek' kažu, i nek požure pošto ■■■ nema više puno mesta. Jes' da sam svež u toj oblasti, ali ako ima mesta ... :) Marko
windows.300 zormi, -> #294, jovca.car
*/ * Imam Visual C++ 1.0, ali sam zagubio literaturu... * * "Zagubio" literaturu od nekoliko hiljada strana??? * Cuj, nasi smo, kazi slobodno da je nikad nisi ni video...:) Nikad je nisam ni video. Kolega je doneo diskete iz Hong Konga (piratske) ali je u presedanju izgubio torbu sa nekakvom knjigom za to. Doneo je samo knjigu za Visual Basic, ali v1.0. :(
windows.301 djelovic,
Zna li ko koje konstante treba da "isključim" iz stila proznÔa pa da nema titlebar, tj. da se sastoji samo od okvira i sredine?
windows.302 pjankovic,
> Zna li ko koje konstante treba da "isključim" iz stila proznÔa pa > da nema titlebar, tj. da se sastoji samo od okvira i sredine? Ne znam koje konstante ti sada stoje u stilu prozora, ali probaj da ostaviš samo WS_BORDER. Inače, konstanta WS_CAPTION je zadužena za Title bar.
windows.303 dekiper, -> #301, djelovic
> Zna li ko koje konstante treba da "isključim" iz stila proznÔa pa > da nema titlebar, tj. da se sastoji samo od okvira i sredine? Stavi recimo samo: WS_OVERLAPPED đ WS_THICKFRAME i prozor će biti onakav, kako si ga ti opisao :)) Pozdrav, Deki
windows.304 djelovic, -> #303, dekiper
> Stavi recimo samo: WS_OVERLAPPED đ WS_THICKFRAME i prozor će biti > onakav, kako si ga ti opisao :)) Neće. Probao sam sve, probao sam da isključim WS_BORDER i/ili WS_CAPTION, međutim ništa ne šljaka. BTW, Clock koji dolazi uz Windowse ima mogućnost da radi bez titlebara. Zna li ko kako da "pročitam" njegove atribute?
windows.305 pjankovic,
// Neće. Probao sam sve, probao sam da isključim WS_BORDER i/ili WS_CAPTION, Da možda tvoj prozor nema WS_OVERLAPPED ili WS_OVERLAPPEDWINDOW stil? Ova dva stila u sebi impliciraju da prozor ima Title bar.
windows.306 djelovic, -> #305, pjankovic
> Da možda tvoj prozor nema WS_OVERLAPPED ili WS_OVERLAPPEDWINDOW stil? Ova d > stila u sebi impliciraju da prozor ima Title bar. Nema. Proverio sam kako to radi Clock koji dolazi uz Windows, i izgleda da cela stvar nema uopšte veze sa atributima (?). Sad pokušavam da nekako promenim "Client rectangle" prozora, al' mrka kapa :(.
windows.307 paki, -> #306, djelovic
­> Nema. Proverio sam kako to radi Clock koji dolazi uz Windows, i izgleda ­> da cela stvar nema uopšte veze sa atributima (?). Sad pokušavam da ­> nekako promenim "Client rectangle" prozora, al' mrka kapa :(. Jesi li rešio problem? Ako nisi, možda pomogne: CreateWindowEx(ExStyle:integer; ...) Parameter Description WS_EX_DLGMODALFRAME Designates a window with a double border that may (optionally) be created with a title bar by specifying the WS_CAPTION style flag in the ExStyle parameter)
windows.308 drdjokic,
Da li postoji mogucnost stampanja kompletnog WINDOWS helpa (bilo u fajl, bilo na stampac) ali ne sa print screen. Hvala unapred !
windows.309 slazic,
Ljudi da li neko ima literaturu za Visual Basic 3.0 Hvala unapred slazic
windows.310 dcolak, -> #309, slazic
│ Ljudi da li neko ima literaturu za Visual Basic 3.0 Eh, da vidiš kako je samo loše napisana. Za razliku od MSC6.0 koji je imao stvarno odlično urađenu literaturu, ovo je užas... Da te utešim, help je dovoljan, samo, ako ti je potrebna informacija o Custom Controls udari search i ukucaj ih... Sledge DAMMIR!
windows.311 slazic, -> #310, dcolak
Hvala :)
windows.312 luks,
Evo ovako: Moj drugar, kome je istekla pretplata na Sezam, čitao je moj PAD pa me je zamolio da pošaljem par replika u ovu temu, što ja ovom prilikom i radim. Tako da ubuduće, ako se pojavi neka poruka u ovoj temi, to nije moje delo nego mog drugara (username: fole). Nadam se da uprava nema ništa protiv, jer će poruke biti stručne (nadam se, pošto nemam pojma sa win programiranjem) što može samo da podigne nivo rasprave. :) Pozdrav, luks
windows.313 luks, -> #306, djelovic
> Nema. Proverio sam kako to radi Clock koji dolazi uz Windows, i izgleda da > cela stvar nema uopšte veze sa atributima (?). Sad pokušavam da nekako > promenim "Client rectangle" prozora, al' mrka kapa :(. Evo gledam sa WinSight-om Clock, lepo piše: Overlapped Visible ClipSiblings Border ThickFrame I stvarno neradi!! Iako je ukupan zbir 0x14840000, Windows-i od toga naprave 0x14C40000 što je tačno ovo gore + WS_CAPTION? Malo sam se igrao i evo odgovora. Za style uzmi sledeće atribute: WS_POPUP, WS_VISIBLE, WS_BORDER, WS_THICKFRAME. Probao sam radi! BDW, ako je neko imao nekada posla sa Win Helpom zna za termin PopupId. The PopupId macro displays a topic from a specified file in a pop-up window. To je onaj istaknuti prozor, a on stvarno nema naslov. Šaljem i mali primer koji objašnjava kako CLOCK radi one stvari ;), čas ima title bar a čas nema. Možda će nekoga zanimati joć poneki 'fazon' pa neka slobodno pita. Nisam ja baš neki mag ali ponešto se i zna. title_yn.zip
windows.314 djelovic, -> #313, luks
> Za style uzmi sledeće atribute: > WS_POPUP, WS_VISIBLE, WS_BORDER, WS_THICKFRAME. > Probao sam radi! Imaš piće od mene. > Možda će nekoga zanimati joć poneki 'fazon' pa neka slobodno pita. Nisam > ja baš neki mag ali ponešto se i zna. Kako sada da obezbedim pomeranje (move) mišem ovakvog prozora koji nema titlebar za koji bi se "uhvatio"? Clock možeš da uhvatiš bilo gde i da ga pomeraš, iako nema titlebar. Napravio sam, doduše, rutinu za pomeranje ovakvih prozora, ali to nije ono ugrađeno Windows pomeranje, već "na mišiće".
windows.315 dragisha,
Postoji li način da DOS aplikacija saopšti Windows-u da je IDLE? Naravno, radi u prozorčetu i želim da olakšam slajsovanje. Postoji li negdje info o 'API'ju DOS aplikacija ka Windows-u? -- [A hundred thousand lemmings can't all be wrong...]
windows.316 dzakic, -> #315, dragisha
> Postoji li način da DOS aplikacija saopšti Windows-u da je IDLE? > Naravno, radi u prozorčetu i želim da olakšam slajsovanje. Postoji > li negdje info o 'API'ju DOS aplikacija ka Windows-u? Postoji: mov ax,$1680 ; Give up time slice int $2F MS Windows detektuješ sa: mov ax,$1600 int $2F vrati se verzija u ah i al. Ako je al=00h ili 80h, nema windowsa. Izvor: inter30 iz direktorijuma. Postoji to isto i za DesqView. Zak
windows.317 luks, -> #314, djelovic
> Kako sada da obezbedim pomeranje (move) mišem ovakvog prozora koji nema > titlebar za koji bi se "uhvatio"? Clock možeš da uhvatiš bilo gde i da ga > pomeraš, iako nema titlebar. Napravio sam, doduše, rutinu za pomeranje > ovakvih prozora, ali to nije ono ugrađeno Windows pomeranje, već "na mišiće". Imao prozor Title bar ili ne, uvek možš da mu pošalješ sistemsku poruku. Samom sebi! Nešto poput ovoga: case WM_LBUTTONDOWN: SendMessage( hwnd, WM_SYSCOMMAND, SC_MOVE đ HTCAPTION, 0l); return 0 ; Pošalješ mu SC_MOVE + prevariš ga kao da si kliknuo na HTCAPTION! Bitno je samo da vratiš 0 kako poruka ne bi propala do DefWindowProc. BDW, ovakav MOVE pomera i MAXIMIZED window!! Have fun.
windows.318 luks, -> #308, drdjokic
> Da li postoji mogucnost stampanja kompletnog WINDOWS helpa (bilo u fajl, > bilo na stampac) ali ne sa print screen. > > Hvala unapred ! Petljamo nešto. You will be first to know about that!
windows.319 novim,
nezavisno od Bila u Tolstojevoj, ima li negde Microsoft Help Compiler (HC32.EXE)? (prevodi .RTF u .HLP)
windows.320 zbubnjevic, -> #319, novim
Ukoliko tražiš hc31.exe možeš ga nači u Borlandovom BC++ 3.1 paketu, a ako ti to nije dovoljno na FON-ovom BBS-u možeš nači datoteku WHAT.ZIP (ili tako nešto) to je kompajler koji produkuje .hlp (rtf->hlp) sa skromnim shell-om. Ili nabavi MSWord 6.0, po meni najbolje rešenje za kreiranje help-ova.
windows.321 ppekovic, -> #319, novim
>> nezavisno od Bila u Tolstojevoj, ima li negde Microsoft Help >> Compiler (HC32.EXE)? (prevodi .RTF u .HLP) Ima na FFS-u (arhiva what.zip). Istina, nije HC32 već HC31. Paya
windows.322 dzoric,
Hi, Novi sam ovde. Evo ovako: Poceo sam da cackam sa SDK 3.0 i MS C 6.0, jer imam knjigu C.Petzold-a pa mogu lepo da pratim primere. Ali linker mi uvek javi da _crtused nije definisMMMMMMana funkcija. Nekad mi se javi da f-ja _main nije definisana.