Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

WinAPI

[es] :: C/C++ programiranje :: WinAPI

[ Pregleda: 4141 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

aster

Član broj: 1565
Poruke: 197
*.ptt.yu



Profil

icon WinAPI06.04.2002. u 00:57 - pre 233 meseci
Iako je ovaj primer iz knige nikako ne mogu da ga prevedem !? VisualC++ stalno prijavljuje:
enutool.obj : error LNK2001: unresolved external symbol [email protected]
Debug/menutool.exe : fatal error LNK1120: 1 unresolved externals
(Program je u atacmentu).

Ujedno jos jedno pitanje, koliko bi mi odprilike vremena trebalo da naucim Win32 programiranje ako znam C i C++? Ovo pitam jer mi nakon cistog C-a i C++-a, programiranje za Windows u WinAPI-ju (a pogotovo u MFC) izgleda strasno zamrseno.
Prikačeni fajlovi
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16161
*.verat.net



+6966 Profil

icon Re: WinAPI06.04.2002. u 02:22 - pre 233 meseci
Linkuj aplikaciju sa comctl32.lib

Ako dobro poznajes C i C++ Win32 API i MFC ce ti biti "lako stivo" - MSDN u sake i procitaj malo o arhitekturi Win32 sistema, imas dosta primera osnovnih principa dizajna Win32 aplikacije.

Moj ti je savet da prvo pocnes da analiziras proste aplikacije od jednog prozora - kako funkcionise message handling - posle toga predjes na dijaloge i MDI aplikacije. MFC je samo C++ wrapper za sve to - ne savetujem ti da na njemu ucis Win32 programiranje jer neces znati kako to stvarno radi "ispod".

I nije bas "strasno zamrseno" - videces da se sve oko GUI-ja vrti oko nekoliko istih algoritama:

WinMain()
1. Registrujes klasu
2. Kreiras prozor, prosledis mu pointer na message dispatcher
3. Cekas WM_CLOSE

- u message dispatcheru procesiras poruke (kao sto su WM_SHOWWINDOW, WM_CREATE, itd..)

To ti dodje najjednostavniji prozor. Sve se manje-vise bazira na ovome.

DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1
Demo Videos: http://www.digicortex.net/node/17
Gallery: http://www.digicortex.net/node/25
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.telia.com

Sajt: dejan.lekic.org


+2 Profil

icon Re: WinAPI06.04.2002. u 03:44 - pre 233 meseci
Programiranje na tom "nivou" je uvek bilo zamrseno... Nemoguce je drzati sve sto ima u Windows-u (i sto treba i sto ne treba) a da se ne zamrsi...
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

aster

Član broj: 1565
Poruke: 197
*.ptt.yu



Profil

icon Re: WinAPI06.04.2002. u 12:06 - pre 233 meseci
Ne znam kako u komandnoj liniji (posto inace prevodim iz IDE-a) pa sam onda u Project > Settings > (kartica) Link > (polje) Object/Library modules, na kraju ubacio comctl32.lib, i projekat je preveden bez ijedne greske, ali ne mogu da pokrenem program (prevedeni EXE izvrsni fajl) !??

Sto se drugog pitanja tice, slazem se da ce mi trebati vremena da se naviknem na Windowsove "posebne tipove", imam MSDN ali kada trazim neku funkciju tamo nikada ne pise u kojem se zaglavlju nalazi ta funkcija, kao i sijaset drugih zamrsenih stvari.
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16161
*.verat.net



+6966 Profil

icon Re: WinAPI06.04.2002. u 12:48 - pre 233 meseci
Citat:
aster:
Ne znam kako u komandnoj liniji (posto inace prevodim iz IDE-a) pa sam onda u Project > Settings > (kartica) Link > (polje) Object/Library modules, na kraju ubacio comctl32.lib, i projekat je preveden bez ijedne greske, ali ne mogu da pokrenem program (prevedeni EXE izvrsni fajl) !??


U komandoj liniji mozes da uradis:

cl sample.c -link comctl32.lib sample.res

Mada ti je moj savet da u IDE-u exportujes makefile od projekta, pa kompajliras sa:

nmake /f imeprojekta.mak

Citat:

Sto se drugog pitanja tice, slazem se da ce mi trebati vremena da se naviknem na Windowsove "posebne tipove", imam MSDN ali kada trazim neku funkciju tamo nikada ne pise u kojem se zaglavlju nalazi ta funkcija, kao i sijaset drugih zamrsenih stvari.


Koji MSDN koristis? U novijim bi trebalo da za svaku f-ju stoji i gde je ona definisana - recimo za CreateToolbarEx na kraju uputstva stoji:

Citat:

Remarks
Windows 95: The system can support a maximum of 16,364 window handles.

Requirements
Windows NT/2000: Requires Windows NT 3.51 or later
Windows 95/98: Requires Windows 95 or later
Header: Declared in commctrl.h.
Import Library: comctl32.lib.


DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1
Demo Videos: http://www.digicortex.net/node/17
Gallery: http://www.digicortex.net/node/25
 
Odgovor na temu

aster

Član broj: 1565
Poruke: 197
*.ptt.yu



Profil

icon Re: WinAPI06.04.2002. u 13:51 - pre 233 meseci
Ako budem to radio iz komandne linije onda moram da navedem i ostale biblioteke, a tu opet mogu da zeznem nesto. Ovako sam u Project > Settings > Link ubacio spornu biblioteku, sada bih te zamolio da mi kazes da li bi tako trebalo da radi, odnosno on ne prijavljuje nikakvu gresku, samo dobijeni EXE program ne moze da se startuje, pa bih te zamoio da mi kazes kako ovo mogu da resim?
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16161
*.verat.net



+6966 Profil

icon Re: WinAPI07.04.2002. u 00:40 - pre 233 meseci
Tvoj program koji si zakacio ne mogu da testiram, zato sto nisi ukljucio resource .bmp fajlove - tako da moram da te pitam step by step:

Sta smatras pod tim "nece da se startuje" - da program prijavljuje neku gresku pri startovanju, ili se nista ne dogadja kad se startuje?

DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1
Demo Videos: http://www.digicortex.net/node/17
Gallery: http://www.digicortex.net/node/25
 
Odgovor na temu

aster

Član broj: 1565
Poruke: 197
*.yubc.net



Profil

icon Re: WinAPI07.04.2002. u 01:44 - pre 233 meseci
Ne, ne prjavljuje nikakve greske jednostavno se program prevede i dobijeni EXE fajl ne moze da se startuje.

Sto se bmp fajla tice evo zalepio sam ga sada. U pitanju je jedan bmp fajl, tako da se pored onog sto sam zalepio u prvoj poruci, ovde nalazi ceo projekat.

P.S. Ako mozes samo mi odgovori jos da li je ono gore isparavna procedura u za dodavanje one biblioteke, u Project > Settings > Link i da li (ako prevodim iz komandne linije) moram da navedem sve one bibilioteke koje on standardno ukljucuje?
Eto malo vise pitanja :) nadam se da ces moci da mi odgovoris.
Hvala.
Prikačeni fajlovi
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16161
*.verat.net



+6966 Profil

icon Re: WinAPI07.04.2002. u 10:52 - pre 233 meseci
Evo..

Umesto:

Code:

  if (RegisterClass(&wcApp))
    return 0;


Treba da stoji:

Code:

  if (!RegisterClass(&wcApp))
    return 0;


Ti si prekidao aplikaciju ako se uspesno registruje klasa, a ne ako kreiranje klase rezultuje nekom greskom. Jedan '!' resava problem.

Sto se biblioteka tice - u principu ako hoces da radis iz komandne linije (ovo je moj omiljeni rezim rada - ne podnosim VC++ editor ;) najbolje je da dodas sve potrebne biblioteke u 'Link' tab, a onda da exportujes makefile (Project / Export Makefile...) - a onda tvoj projekt buildujes sa:

nmake -f imeprojekta.mak cfg="Win32 Release"

Ili:

rename imeprojekta.mak makefile

pa onda kompajliras samo sa:

nmake (A, naravno, setujes 'release' ili 'debug' u makefile-u kao default, vec sta ti vise odgovara)


DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1
Demo Videos: http://www.digicortex.net/node/17
Gallery: http://www.digicortex.net/node/25
 
Odgovor na temu

aster

Član broj: 1565
Poruke: 197
*.ptt.yu



Profil

icon Re: WinAPI07.04.2002. u 20:04 - pre 233 meseci
Hvala.
 
Odgovor na temu

[es] :: C/C++ programiranje :: WinAPI

[ Pregleda: 4141 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.