windows.219spantic,
-> #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.220wizard,
-> #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.221novim,
"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.zipwindows.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.223fancy,
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.224wizard,
-> #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.225fancy,
-> #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.226asterix,
-> #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.227pbojan,
Postoji li neki brzi nacin za ispis teksta od TextOut? Mozda neki ASM?
windows.228paki,
Može li neko da šiljne sintaksu GetOpenFileName funkcije (u
helpu je nema, a diskete s primerima nisu kod mene :()?
windows.229paki,
-> #228, pakiZaboravih, treba mi i sintaksa funkcije za dijalog za izbor fontova.
windows.230i.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.231dekiper,
-> #230, i.a.n.ŠALJI OBAVEZNO (I NEKI SOURCE AKO IMAŠ UZ TO)
Pozdrav, Deki
windows.232i.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.zipwindows.233zkadovic,
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.234spantic,
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.zipwindows.235spantic,
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.zipwindows.236spantic,
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.zipwindows.237spantic,
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.zipwindows.239sjocic,
-> #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.240bigbrada,
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.241mzgrdja,
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.242dekiper,
-> #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.244bigbrada,
-> #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.245dekiper,
-> #224, wizardOvako, 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.247paki,
-> #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, .objIspravka:
> 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.249bigbrada,
-> #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.250pjankovic,
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.251paki,
-> #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.252mjova,
-> #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.253mvukolic,
Ima li interesenata za sve primere iz knjige
"Programming Windows" Charlesa Petzolda?
Ako ima da šaljem...
windows.254vcalic,
-> #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.255i.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.256dsisic,
-> #253, mvukolic> Ima li interesenata za sve primere iz knjige
> "Programming Windows" Charlesa Petzolda?
> Ako ima da saljem...
Salji rodjace :)
windows.257pjankovic,
> 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.258pjankovic,
> Ima li interesenata za sve primere iz knjige
> "Programming Windows" Charlesa Petzolda?
Naravno!:)
windows.259spantic,
-> #253, mvukolic> Ima li interesenata za sve primere iz knjige
> "Programming Windows" Charlesa Petzolda?
Ima, ima :)
windows.260fancy,
-> #253, mvukolicŮŢ> Ima li interesenata za sve primere iz knjige
ŮŢ> " Programming Windows" Charlesa Petzolda?
ŮŢ> Ako ima da šaljem...
Daaaa! :)
windows.261markom,
-> #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.262fancy,
-> #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.263dvesic,
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.264dekiper,
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.265hobit,
-> #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.266djelovic,
-> #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.267bigbrada,
-> #256, dsisic!##!> Ako ima da saljem...
!##!
!##! Salji rodjace :)
Noge kako!! :)
Brada.
windows.268bigbrada,
Kako se zove funkcija koja mi kaže da
li je CheckBox aktiviran ili nije?
Izgiboh, ali to ne nađoh... :(
Brada.
windows.269vcalic,
-> #253, mvukolic>> Ima li interesenata za sve primere iz knjige
>> "Programming Windows" Charlesa Petzolda?
>> Ako ima da šaljem...
Ima.
Vlada
windows.270vcalic,
-> #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.271asterix,
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.272mvukolic,
Charles Petzold "Programming Windows"
petzold.zipwindows.273dekiper,
-> #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.274paki,
-> #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.275kenza,
-> #253, mvukolic(;> Ima li interesenata za sve primere iz knjige
(;> "Programming Windows" Charlesa Petzolda?
Naravno ;) Monumentalno ;)
windows.276goranr,
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.277markom,
-> #262, fancy■■■ Group..?
Može ...
Marko
windows.278pbojan,
-> #262, fancy>> Nije OK... A ostali..?
>> Group..?
Evo, i ja 'ocu :).
windows.279dekiper,
-> #278, pbojanE, 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.280markom,
-> #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.282kenza,
-> #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.285pjankovic,
> 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.286ognjen,
-> #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.287robert,
-> #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.289bigbrada,
-> #273, dekiper!##! if(SendMessage(GetDlgItem(hDlg, IDC_CHECKBOXUDLG),
!##! BM_GETCHECK, 0, 0L))
!##!
!##! Pozdrav, Deki
Thanx. :)
Brada.
windows.290zormi,
-> #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.291markom,
-> #290, zormi■■■ Imam Visual C++ 1.0, ali sam zagubio literaturu...
*******
:))))))
ili je nisi ni imao ;)))
Marko
windows.292dekiper,
-> #290, zormiDefiniši ZAGUBIO, a onda ćemo svi da te bijemo!
Pozdrav, Deki
windows.293vcalic,
-> #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.294jovca.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.295bigbrada,
-> #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.296bigbrada,
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.297zbubnjevic,
-> #281, .objZainteresovan sam za učešće u winp grupi.
Pa ako može rado bih pristupio.
zbubnjevic!
windows.298i.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.299markom,
-> #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.300zormi,
-> #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.301djelovic,
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.302pjankovic,
> 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.303dekiper,
-> #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.304djelovic,
-> #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.305pjankovic,
// 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.306djelovic,
-> #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.307paki,
-> #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.308drdjokic,
Da li postoji mogucnost stampanja kompletnog WINDOWS helpa (bilo u fajl,
bilo na stampac) ali ne sa print screen.
Hvala unapred !
windows.309slazic,
Ljudi da li neko ima literaturu za Visual Basic 3.0
Hvala unapred
slazic
windows.310dcolak,
-> #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.311slazic,
-> #310, dcolakHvala :)
windows.312luks,
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.313luks,
-> #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.zipwindows.314djelovic,
-> #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.315dragisha,
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.316dzakic,
-> #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.317luks,
-> #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.318luks,
-> #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.319novim,
nezavisno od Bila u Tolstojevoj, ima li negde Microsoft Help
Compiler (HC32.EXE)? (prevodi .RTF u .HLP)
windows.320zbubnjevic,
-> #319, novimUkoliko 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.321ppekovic,
-> #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.322dzoric,
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.