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

Koriscenje ToolBara definisanog u DLL-u... KAKO???

[es] :: C/C++ programiranje :: Koriscenje ToolBara definisanog u DLL-u... KAKO???

[ Pregleda: 2466 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

cubicle
Beograd

Član broj: 39693
Poruke: 175
*.comtrade.co.yu.

Sajt: www.tvojstomatolog.com


Profil

icon Koriscenje ToolBara definisanog u DLL-u... KAKO???22.11.2004. u 14:09 - pre 221 meseci
Da li postoji nacin da definisem ToolBar u DLL-u (bitmap, bugmice, i sve ostalo) i da ga ucitam i prikazem na glavnom okviru (MainFrame).
Okruzenje je MS VC++6.0.

Ne mogu pribavom handle na resource toolbara koji su definisani u DLL-u, a pokusaj kreriranja toolbara u dll-u i vracanje pokazivaca frameu beznadezno propada:

evtToolBar = new CToolBar;
evtToolBar->CreateEx(wnd); // <-- puca ovde (wnd je validan pokazivac na CMainFrame)

evtToolBar->LoadToolBar(IDR_TOOLBAR_EVENTS);

return evtToolBar;

POMAGAJTE....

p.s. dll je dinamicki ucitan (AfxLoadLibrary ili LoadLibrary)...
Najdetaljnije i najaktuelnije stomatološke informacije na:
http://www.tvojstomatolog.com
http://forum.tvojstomatolog.com
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
66.228.70.*



+6 Profil

icon Re: Koriscenje ToolBara definisanog u DLL-u... KAKO???22.11.2004. u 14:35 - pre 221 meseci
Nadam se da si dinamički linkovao MFC i CRT?
 
Odgovor na temu

cubicle
Beograd

Član broj: 39693
Poruke: 175
*.comtrade.co.yu.

Sajt: www.tvojstomatolog.com


Profil

icon Re: Koriscenje ToolBara definisanog u DLL-u... KAKO???22.11.2004. u 14:53 - pre 221 meseci
Citat:
Dragi Tata: Nadam se da si dinamički linkovao MFC i CRT?

Naravno...
Problem izgleda nastaje kod AfxGetInstanceHandle() koju pozivaju CreateEx i LoadToolBar metode MFC klase CToolBar. Naime, resultat je uvek NULL iako MSDN tvrdi da ce AfxGetInstanceHandle() vratiti handle instance dll-a ukoliko se radi o MFC dll-u (a radi se).
Ocigledno negde gresim... ne znam gde...

AfxGetInstanceHandle() vraca AfxGetModuleState()->m_hCurrentInstanceHandle ukoliko nije NULL inace ASSERT makro vrati gresku. A AfxGetModuleState()->m_hCurrentInstanceHandle je uvek NULL, sto je detalj koji mi nije do kraja jasan...
Najdetaljnije i najaktuelnije stomatološke informacije na:
http://www.tvojstomatolog.com
http://forum.tvojstomatolog.com
 
Odgovor na temu

milanche
San Francisco

Član broj: 2447
Poruke: 1200
*.3.133.130.ptr.us.xo.net.



+1001 Profil

icon Re: Koriscenje ToolBara definisanog u DLL-u... KAKO???22.11.2004. u 18:21 - pre 221 meseci
Koristiti MFC klase iz DLL-a nije nemoguce, ali ima nekoliko opakih problema koji te mogu
sacekati na krivini:

1) Resource ID tvog toolbar-a ne sme da ima istu vrednost kao i neki drugi resource ID
od aplikacije. Razne seme postoje da se ovo izbegne, ali sve one podrazumevaju da
korisnik tvog DLL-a zna resource koje koristis (sto se lako provaljuje).
Ako se desi preklapanje iste resource ID vrednosti, aplikacija crash-uje.

2) Release verzija MFC aplikacije vrlo cesto (da ne kazem: uvek) zahteva release
verziju MFC Dll-a, u protivnom nece da se startuje. Debug verzija MFC aplikacije
(koliko se secam) je bila nesto manje zahtevna.

3) Promena layout-a klase (dodas bilo koji metod ili public varijablu) automatski
zahteva rekompajliranje klijent aplikacije. Za ovo postoji lek (kreiranje interface klase
koja izvozi samo ono sto treba).

Pravo, elegantno resenje za to sto hoces je da napravis ActiveX kontrolu. Ona je
imuna na sve ove probleme, i lako je distribuirati drugim korisnicima. Ako pravis toolbar
za browser, moraces da je pises u ATL-u, a ako je pravis samo za desktop standalone
('fat client') aplikacije, mozes da napravis i MFC ActiveX kontrolu).

P.S. Staticko vs. dinamicko linkovanje mislim da ne igra mnogo u problemu koji imas.

Na kraju da te pitam i ovo:

Ima li tvoja CToolBar-derived klasa keyword AFX_EXT_CLASS, tj. imas li ovo u definiciji
klase:
class AFX_EXT_CLASS CMojToolbar_iliKakoLiSeVecZove: public CToolBar

Bez toga nece biti lako vidljiva klijent aplikaciji.
 
Odgovor na temu

milanche
San Francisco

Član broj: 2447
Poruke: 1200
*.3.133.130.ptr.us.xo.net.



+1001 Profil

icon Re: Koriscenje ToolBara definisanog u DLL-u... KAKO???22.11.2004. u 19:56 - pre 221 meseci
Citat:
milanche:
1) Resource ID tvog toolbar-a ne sme da ima istu vrednost kao i neki drugi resource ID
od aplikacije. Razne seme postoje da se ovo izbegne, ali sve one podrazumevaju da
korisnik tvog DLL-a zna resource koje koristis (sto se lako provaljuje).
Ako se desi preklapanje iste resource ID vrednosti, aplikacija crash-uje.


Ovo vazi za bilo koji resource. Toolbar je malo specijalniji slucaj jer dugmad na njemu
moraju da imaju identicne resource ID-s sa elementima Menu-a glavne aplikacije (sto
mu dodje ista stvar, samo malo uzi problem - striktno match-ovanje vrednosti umesto
striktno izbegavanje duplikata)
 
Odgovor na temu

[es] :: C/C++ programiranje :: Koriscenje ToolBara definisanog u DLL-u... KAKO???

[ Pregleda: 2466 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

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