Hollosi Information eXchange /HIX/
HIX CODER 1632
Copyright (C) HIX
2002-09-19
Új cikk beküldése (a cikk tartalma az író felelőssége)
Megrendelés Lemondás
1 Re: mfc statusbar (mind)  64 sor     (cikkei)

+ - Re: mfc statusbar (mind) VÁLASZ  Feladó: (cikkei)

Az "induláskori" szöveget átírni a legegyszerübb a resource-ben.
Kicseréled a "Ready"-t a leghosszabb-ra, ami előfordulhat, (lehet space-k 
sorozata is) így nem kell később a méretezésével foglalkozni, ami egyébként 
sem túl szép látvány.

A futásidejű frissítésre nem egyszerű válaszolni. Ez attól függ, hogy mit 
indikálsz. Ha események bekövetkezését, akkor pl. amikor az eseményt 
lekezeled, onnan meghívhatod az UpdateStatus( ... ) vagy hasonló 
függvényedet, a megfelelő paraméterekkel. Ha a dokumentum valamilyen egyéb 
állapotát jelzed ki, akkor is meg tudod határozni azokat a helyeket, amikor 
ez megváltozhat. Mindenképpen a CMainFrm-be tenném a frissítést végző 
függvényt, mivel a StatusBar az övé, és a mainframe-et mindenhonnan látod. Ha 
máshogy nem, az AfxGetMainWnd( )-vel biztosan. Ilyenkor arra figyelj, hogy 
kényszerítsd rá a CMainFrm típust, mert az AfxGetMainWnd( ) CWnd* típust ad 
vissza, és abban nincsen a te UpdateStatus( ) függvényed deklarálva. Tehát 
valahogy így:

((CMainFrm*)(AfxGetMainWnd( )))->UpdateStatus( ... );

Ha mindenképpen Timer-es megoldásra van szükséged, akkor szerintem az is a 
MainFrame-ben ketyegjen, és ekkor vagy globális változókon keresztül (ez nem 
szép, de gyors megoldás) vagy függvényeken keresztül tudod megszerezni a 
"megjelenítendőt". Pl. ha a doskid állapotát indikálod, akkor a 
CValamiDoc-ban deklarálsz egy publikus GetDocStatus( ... ) vagy hasonló 
függvényt, és amikor a Winfos (meglehetősen pontatlanul) a 
TimerFunction-ödnek adja a vezérlést akkor onnan:

GetDocStatus( ... );
((CMainFrm*)(AfxGetMainWnd( )))->UpdateStatus( ... ); // a GetDocStatus( 
)-ból nyert paraméterekkel;

vagy az UpdateStatus( ... ) maga is meghívhatja a 
GetDocStatus( )-t ,csak ekkor már nem olyan képlékeny a dolog. Nem tudod pl. 
az UpdateStatus(  )-t megerőszakolni, hogy most mást mutasson, ezért én 
inkább a két függvényhívásra szavazok.


Remélem segítettem.

Robi

On Wednesday 18 September 2002 07:33, HIX CODER 
) wrote:
> Sziasztok!
>
> Van egy SDI appom, a dokumentum nezetosztalya a CFormView-bol
> szarmazik. Nem tudom mennyire redekes a problema szempontjabol,
> Szepen meg is jelenik a statusbar, a string resource tablaban
> szereplo AFX_IDS_IDLEMESSAGE tartalmaval (Ready).
> Betettem a CProjektneveDoc osztalyba a
> http://codeguru.earthweb.com/mfc/comments/23884.shtml
> cimen talalhato kodot, ami arra hivatott, hogy atirja nekem a
> statusbar feliratat. Sikerul is peldaul OnDocumentNew
> esemenykezelobol atirni a statusbart, viszont amikor elindul
> a progi, meg az eredeti "Ready" felirat diszeleg, majd amikor uj
> dokumentumot csinalok, akkor irja at, es nem tudom atirni se initinstance,
> se precreatewindow, se sehonnan mashonnan, hogy eredetileg is az altalam
> irt dinamikus szoveg jelenjen meg ott. (%s messages, %s unread)


> Kerlek mondjatok meg, hol a legjobb beallitani, illetve idonkent
> atirni, pl masodpercenkent a statusbart? MElyik osztalyba tegyem
> a fenti url-en levo fuggvenyt, illetve hova tegyek OnTimer-t?
>

AGYKONTROLL ALLAT AUTO AZSIA BUDAPEST CODER DOSZ FELVIDEK FILM FILOZOFIA FORUM GURU HANG HIPHOP HIRDETES HIRMONDO HIXDVD HUDOM HUNGARY JATEK KEP KONYHA KONYV KORNYESZ KUKKER KULTURA LINUX MAGELLAN MAHAL MOBIL MOKA MOZAIK NARANCS NARANCS1 NY NYELV OTTHON OTTHONKA PARA RANDI REJTVENY SCM SPORT SZABAD SZALON TANC TIPP TUDOMANY UK UTAZAS UTLEVEL VITA WEBMESTER WINDOWS