Prośba o sprawdzenie programu

0

Zawsze daje, dokladnie w ten sposob w WinMain:

INITCOMMONCONTROLSEX cc;
InitCommonControlsEx(&cc);

Chociaz, wlasciwie nie jestem pewien po co to, i bez tego zawsze dziala - no ale tak na wszelki wypadek.
To znaczy wiem ze chodzi tu o zaladowanie dll-a commctl32.dll ale chyba i tak jest juz zaladowany nawet bez tego. Chociaz, cos slyszalem ze jesli uzywa sie RichEdit to chyba trzeba tego uzyc... nie wiem dokladnie.

Nie moge tego rozgryzc, bo z tamtego screena wynika, ze tylko szerokosc nie jest dobrze obliczana, na dlugosc zdaje sie ze jest dobrze.

I tylko w Win starszym niz 2000, no i tylko jesli zmieniac czcionki w czasie dzialania programu (jesli dobrze zrozumialem).

No i ciagle niewyjasniona sprawa - dlaczego czasami nie jest wyswietlany poprawinie tekst? Nawet jezeli te peny i brushe nie sa zwalniane to nie powinno przeszkadzac chyba - przynajmniej na poczatku, kiedy WM_DRAWITEM zachodzi pierwszy raz i kiedy brush i pen jest tworzony pierwszy raz...

0
othello napisał(a)

Zawsze daje, dokladnie w ten sposob w WinMain:

INITCOMMONCONTROLSEX cc;
InitCommonControlsEx(&cc);

Nie inicjujesz INITCOMMONCONTROLSEX [???] Skądinąd wiem, że ta funkcja zwraca FALSE w twoim programie (w każdym razie u mnie) ;)

Chociaz, wlasciwie nie jestem pewien po co to, i bez tego zawsze dziala - no ale tak na wszelki wypadek.

Heh kiedyś straciłem cały dzień na poszukiwaniu przyczyny dziwnego zachowania shell'owego tooltip'a - ogólnie niby działał, ale tylko dla niektórych folderów tak jak trzeba. Okazało się, że zapomniałem dać w konstruktorze CoInitialize.

No i ciagle niewyjasniona sprawa - dlaczego czasami nie jest wyswietlany poprawinie tekst? Nawet jezeli te peny i brushe nie sa zwalniane to nie powinno przeszkadzac chyba

To powoduje wycieki.

0

Nie inicjujesz INITCOMMONCONTROLSEX

Hm, a trzeba? W LCC jest szablon, w ktorym tylko tak jest to rozwiazane - skoro wziete z tego szablonu to myslalem ze OK i nie wnikalem dalej. Jak mam zainicjowac [???]

Skądinąd wiem, że ta funkcja zwraca FALSE w twoim programie (w każdym razie u mnie)

Skad to wiesz? Chyba sprawdzales jakim debuggerem? ;)

To powoduje wycieki.

No wiem, ale teoretycznie, wyciek dopiero jak za ktoryms razem bedzie cos inicjowane i nie zwolnione. A tutaj ludzie pisali, ze juz od poczatku nie ma etykiet - od razu przy pierwszym rozwinieciu menu....
To jasne, ze do poprawienia, ale nie jestem pewien czy zle wyswietlanie tekstu to przez to.... co zreszta mialaby tu do rzeczy wersja systemu?

Sory teraz tylko teoretyzuje, bo bede mogl przekompilowac to dopiero jak bede w domu, na razie to wklejalem tylko ten kod, ktory mialem napisany.

0

Jak mam zainicjowac [???]

Spróbuj tak:

INITCOMMONCONTROLSEX icc;

icc.dwSize=sizeof(INITCOMMONCONTROLSEX);
icc.dwICC=0;

if(!InitCommonControlsEx(&icc))
   InitCommonControls();

Skad to wiesz? Chyba sprawdzales jakim debuggerem?

Tak ;)

No wiem, ale teoretycznie, wyciek dopiero jak za ktoryms razem bedzie cos inicjowane i nie zwolnione. A tutaj ludzie pisali, ze juz od poczatku nie ma etykiet - od razu przy pierwszym rozwinieciu menu....
To jasne, ze do poprawienia, ale nie jestem pewien czy zle wyswietlanie tekstu to przez to.... co zreszta mialaby tu do rzeczy wersja systemu?

Nie, to na 95% nie jest przyczyną tego problemu. Obstawiałbym na to co wyżej napisałem. A z tymi penami itd. to tak po prostu napisałem bo rzucało się w oczy ;P

0

Zastanawiam sie jeszcze nad jedna rzecza i nie wiem jak to rozwiazac.

Ten algorytm, ktory zastosowalem nie dziala, jesli jakis item w menu rozwija jeszcze raz submenu.
Problem w tym, ze wtedy jeszcze raz zachodzi WM_INITMENUPOPUP i przetwarzane jest nowo rozwieniete submenu......ale tym samym jest tracona informacja o calym poprzednim menu :/

Z tego powodu menu nie jest juz potem prawidlowo podpisywane....az do momentu, kiedy znowu bedzie wyslany WM_INITPOPUP.

Wyglada to mniej wiecej tak:

user image

Widac, ze po przejsciu kursorem z powrotem do menu po lewej stronie cale info jest tracone. Nie mam za bardzo pomyslu jak to rozwiazac....poradzi mi ktos cos?

Moglbym jakos sprawdzac, czy item rozwija submenu i zapamietywac poprzednie informacje.....ale nie wiem kiedy je odtwarzac........w WM_DRAWITEM? A jesli menu bedzie jeszcze bardziej zaglebione, to sprawa naprawde sie komplikuje...

0

Zastanawiam sie jeszcze nad jedna rzecza i nie wiem jak to rozwiazac.

Co, poprzedni problem rozwiązany [???]

Problem w tym, ze wtedy jeszcze raz zachodzi WM_INITMENUPOPUP i przetwarzane jest nowo rozwieniete submenu......ale tym samym jest tracona informacja o calym poprzednim menu

Tu sugerowałem Ci, żebyś użył DRAWITEMSTRUCT::itemData (chociaż opcja z indexem nie przejdzie, ale ze wskaźnikiem...) ;)

0

Co, poprzedni problem rozwiązany

Hmm, nie jestem pewien, wrzucam do testow nastepna wersje:

www.pliki.orge.pl/m2.exe

Problem z paskiem po lewej stronie juz rozwiazany ;) Co do reszty, ponownie prosze o przetestowanie ;)

Tu sugerowałem Ci, żebyś użył DRAWITEMSTRUCT::itemData (chociaż opcja z indexem nie przejdzie, ale ze wskaźnikiem...)

No tak, ale nie wiem, jak to mogloby rozwiazac moj problem [???] Chyba bym musial zapamietywac w DRAWITEMSTRUCT::itemData tablice itemow (a raczej wskaznik do niej) - ale nie bardzo wiem kiedy zapamietac, a kiedy odtworzyc ja pozniej [???]

0

Hmm, nie jestem pewien, wrzucam do testow nastepna wersje

Na XP w trybie zgodności z Win95 (font z 8 na 20 w trakcie działania) działa dobrze (poza błędem z submenu).

No tak, ale nie wiem, jak to mogloby rozwiazac moj problem [???]

No jak to jak? Do każdego item'a przypisujesz (własną) strukturę MenuItem. Możesz to zrobić tak:

MENUITEMINFO mii;

...
mii.fMask=MIIM_DATA|inne_flagi;
mii.dwItemData=(DWORD)malloc(sizeof(MenuItem));

// tu ustawiasz MenuItem

InsertMenuItem(hMenu,uItem,fByPosition,&mii);

(możesz też użyć SetMenuItemInfo)

No i dalej:

void handle_DrawItem(LPARAM lParam)
{
   DRAWITEMSTRUCT *dis = (LPDRAWITEMSTRUCT) lParam;
   MenuItem* pmi=(MenuItem*)dis->itemData;
   if(!pmi)
   {
     /* błąd - nie zainicjowany item */
   }
   ...
}

Aha, musisz pamiętać o zwolnieniu pamięci przy usuwaniu (sub)menu/itemów.

0

w handle_INITPOPUP:

 MENUITEMINFO mi;  //do pobrania info o menu
 mi.cbSize = sizeof(MENUITEMINFO);
 mi.fMask = MIIM_DATA | MIIM_TYPE | MIIM_ID | MIIM_STATE;
 mi.dwTypeData = "";




 for(int i=0;i<ilosc;i++)
    {
	 GetMenuItemInfo(sub,i,TRUE,&mi);
     menuItems[i].ID = mi.wID;
	 GetMenuString(sub,menuItems[i].ID,&menuItems[i].Caption,256,MF_BYCOMMAND);
	 //wsprintf(menuItems[i].Caption,"%s",mi.dwTypeData);
	 mi.fType = mi.fType | MFT_OWNERDRAW;

	 mi.dwItemData=(DWORD)malloc(sizeof(MenuItem));

	 SetMenuItemInfo(sub,i,TRUE,&mi);                   //Ustawianie OwnerDraw
	 menuItems[i].isSep = mi.fType&MFT_SEPARATOR;       //Sprawdzanie czy item jest separatorem
     menuItems[i].isGrayed = mi.fState&MFS_GRAYED;
    }

.... a potem w PodpiszMenu

void PodpiszMenu(DRAWITEMSTRUCT *dis,HMENU menu, MenuItem *menuItems, int Count, HWND hWnd)
{

..........

MenuItem* pmi=(MenuItem*)dis->itemData;

DrawText(dis->hDC,pmi->Caption,strlen(pmi->Caption),&rcc,DT_LEFT|DT_EXPANDTABS);

..............

}

Ale teraz w ogole zadne info o menu nie jest zapamietywane....... Co robie zle?

[edit]
Ok........ powinienem sie wstydzic za to pytanie [wstyd] [wstyd]

oczywiscie trzeba jeszcze:

mi.dwItemData= (DWORD)&menuItems[i];

Teraz dziala... spytam jeszcze tylko o co dokladnie chodzi z tym zwolnieniem pamieci i kiedy ja zwalniac?

Ostateczna wersja - jesli u kogos cos nie dziala, to bede wdzieczny za info:

www.pliki.orge.pl/m3.exe

0

oczywiscie trzeba jeszcze:

mi.dwItemData= (DWORD)&menuItems[i];

Nie rozumiem. Jak to się ma do:

mi.dwItemData=(DWORD)malloc(sizeof(MenuItem));

[???]

spytam jeszcze tylko o co dokladnie chodzi z tym zwolnieniem pamieci i kiedy ja zwalniac?

No jak robisz:

mi.dwItemData=(DWORD)malloc(sizeof(MenuItem));

to później przydałoby się gdzieś dać:

free((void*)mi.dwItemData);

Ostateczna wersja - jesli u kogos cos nie dziala, to bede wdzieczny za info

Dziwne. W trybie zgodności z Win95 działa, z Win98/Me tak średnio, a z WinXP coś się dzieje z lewym paskiem (oczywiście po rozwinięciu submenu).

0

No to ja w takim razie czegosc tu nie lapie. Co ma oznaczac to:

mi.dwItemData=(DWORD)malloc(sizeof(MenuItem));

[???] To jest allokacja pamieci chyba? Czyli cos analogicznego do na przyklad:

char *abcd = (char*) malloc(256);

Ale gdzie tu ma byc informacja o tym, ktory item przyporzadkowuje do mi::dwItemData [???]

Ten zapis jest dla mnie jasny:

mi.dwItemData= (DWORD)&menuItems[i];

Do mi::dwItemData przypisuje wskaznik do i-tego itema z tablicy - no i dziala... (u mnie).

A kiedy napisalem tylko tak jak proponowales, to nie dzialalo wcale - zadne info o menu nie bylo zapamietywane... :|

Dziwne. W trybie zgodności z Win95 działa, z Win98/Me tak średnio, a z WinXP coś się dzieje z lewym paskiem (oczywiście po rozwinięciu submenu).

A co sie dzieje dokladnie?? Mozesz jakos screena wrzucic? Ja teraz testuje na WinXP i u mnie caly czas jest ok, zarowno w trybie zgodnosci jak i bez....

Na Wine pod linuksem gina etykiety menu za to :|

[edit]
Hmmm usunalem w ogole to:

mi.dwItemData=(DWORD)malloc(sizeof(MenuItem));

Teraz mam tylko

mi.dwItemData= (DWORD)&menuItems[i];

Jestes pewien ze te malloc jest w ogole potrzebne? U mnie dziala i tak...

0
othello napisał(a)

Ale gdzie tu ma byc informacja o tym, ktory item przyporzadkowuje do mi::dwItemData [???]

No jak to gdzie? Przecież mi::dwItemData to jest 'prywatna' wartość przypisana do konkretnego item'a. Robiąc tak:

mi.dwItemData= (DWORD)&menuItems[i];

w zasadzie nie rozwiązujesz problemu bo menuItems jest tablicą globalną, więc inicjacja (i obsługa) głównego menu i jego submenu odbywa się na tej samej tablicy (twoich) item'ów (tyle, że dane są nieaktualne). Robiąc tak:

mi.dwItemData=(DWORD)malloc(sizeof(MenuItem));

możesz mieć nawet setkę sub-menu, które nie będą wchodzić sobie w paradę bo nie korzystają z jednej tablicy - każdy item ma przypisaną swoją własną instancję menuItem. Oczywiście trzeba pamiętać o zwalnianiu pamięci przy usuwaniu itemów i nie dopuścić do wielokrotnego inicjowania wcześniej zainicjowanych itemów.

A kiedy napisalem tylko tak jak proponowales, to nie dzialalo wcale - zadne info o menu nie bylo zapamietywane... :|

Bo to była tylko propozycja ;) No a jak to Ty zimplementowałeś i gdzie...
no cóż...

A co sie dzieje dokladnie??

WinXP: pasek znika po zaznaczeniu i odznaczeniu (brak odmalowania) - to po rozwinięciu sub menu.

WinMe: itemy w submenu są rysowane tak jakby na separatorze - po prawej stronie widać kreseczkę ;P) Ogólnie, trochę muli... a może wydaje mi się.

Jestes pewien ze te malloc jest w ogole potrzebne? U mnie dziala i tak...

Wiesz, mówię tylko jak ja bym to zrobił - wybór należy do ciebie ;)

0

Hmm znowu bedzie dluugi post ale co tam....... wkleje teraz jak wyglada u mnie obsluga WM_INITMENUPOPUP:

void handle_InitPopup(WPARAM wParam, LPARAM lParam)
{

 if((BOOL) HIWORD(lParam))  //Nie ruszamy menu systemowego okna
    return;

 HMENU sub = (HMENU) wParam;


 ilosc = GetMenuItemCount(sub);

 //Allokacja tablicy itemów
 MenuItem *menuItems = (MenuItem *)calloc(ilosc,sizeof(MenuItem));

 MenuItem tmp;


 MENUITEMINFO mi;  //do pobrania info o menu
 mi.cbSize = sizeof(MENUITEMINFO);
 mi.fMask = MIIM_DATA | MIIM_TYPE | MIIM_ID | MIIM_STATE;
 mi.dwTypeData = "";
 mi.dwItemData = 0;




 for(int i=0;i<ilosc;i++)
    {
	 GetMenuItemInfo(sub,i,TRUE,&mi);
     menuItems[i].ID = mi.wID;


	 GetMenuString(sub,menuItems[i].ID,&menuItems[i].Caption,256,MF_BYCOMMAND);

	 mi.fType = mi.fType | MFT_OWNERDRAW;

	 //mi.dwItemData=(DWORD)malloc(sizeof(MenuItem));  //dziala i bez tego...  :| 

	 menuItems[i].isSep = mi.fType&MFT_SEPARATOR;       //Sprawdzanie czy item jest separatorem
     menuItems[i].isGrayed = mi.fState&MFS_GRAYED;

	 tmp.isSep = mi.fType&MFT_SEPARATOR;
	 tmp.isGrayed = mi.fState&MFS_GRAYED;
	 mi.dwItemData= (DWORD)&menuItems[i];

	 SetMenuItemInfo(sub,i,TRUE,&mi);

    }

// free(menuItems);  - usuniete, bo powoduje wykrzaczanie sie programu - czemu  [???] 


}

menuItems nie jest globalna.. jest tylko wewnatrz tej funkcji... ja rozumiem to tak: po rozwinieciu popupa tworzona jest dynamicznie tablica o rozmiarze rownym ilosci itemow w popupie. Potem w petli tablica jest wypelniana informacjami o kazdym itemie, a jednoczesnie do itemData jest przypisywany wskaznik do elementu tablicy odpowiadajacego temu itemowi. Tablica menuItems nie jest pozniej juz nigdzie uzywana: odwoluje sie potem tylko do itemData dla kazdego popupa, ale usunac jej nie moge bo nie bedzie to dzialac.....

w zasadzie nie rozwiązujesz problemu bo menuItems jest tablicą globalną, więc inicjacja (i obsługa) głównego menu i jego submenu odbywa się na tej samej tablicy (twoich) item'ów (tyle, że dane są nieaktualne).

Dlaczego nie moze odbywac sie na tej samej tablicy? Wiec jesli dobrze rozumiem, to odwolanie to itemData jest w istocie odwolaniem do elementu tablicy? Ja to rozumialem tak, ze jesli juz raz zainicjuje itemData, to jest to zapamietane i niepotrzebne sa juz dane, ktorymi to itemData inicjowalem - wiec inicjacje innego popupa moge znow przeprowadzic na tej samej tablicy... a itemData dla itemow zainicjowanych wczesniej pozostana aktualne jesli ten item juz byl raz inicjowany .... czy myle sie [???]

Wedlug mnie jesli tak zrobie, to nigdy zaden item nie powinien byc inicjowany nieaktualna informacja, poniewaz zawsze jest przetwarzane tylko te submenu, ktore jest aktualnie rozwijane i tylko itemy nalezace do niego sa inicjowane - to, co bylo inicjowane wczesniej nie jest zmieniane. Po zwinieciu submenu tez sie nic nie dzieje - dopoki znowu nie klikne na popupa......

Wiem za zamotalem teraz dosc mocno, ale jesli gdzies sie myle w moich rozwazaniach to mnie popraw ;)
A z drugiej strony, jesli rzeczywiscie pisze tu teraz glupoty, to na jakiej zasadzie u mnie to moglo zadzialac? :| Generalnie chodzi tu o to, czy jesli raz zainicjuje itemData, to moge usunac te dane, ktorymi inicjowalem te pole... czy nie?

No ale zalozmy, ze chce to zrobic tak jak proponujesz - jezeli wstawie w petli ten kod:

mi.dwItemData=(DWORD)malloc(sizeof(MenuItem));

zamiast mojej inicjalizacji wskaznikiem, to w ogole sie to nie sprawdza - no i ciagle nie rozumiem, na jakiej zasadzie taki zapis ma oznaczac przypisanie dla itema konkretnej instancji MenuItem [???]
A moze ja robie to nie tak jak trzeba? Ale gdzie w takim razie mam pzreprowadzic ta inicjalizacje jesli nie w petli dla kazdego itema w popupie po kolei?

Oczywiście trzeba pamiętać o zwalnianiu pamięci przy usuwaniu itemów i nie dopuścić do wielokrotnego inicjowania wcześniej zainicjowanych itemów.

No zgoda, ale jak mam wykryc, kiedy itemy sa usuwane? :|

WinXP: pasek znika po zaznaczeniu i odznaczeniu (brak odmalowania) - to po rozwinięciu sub menu.

WinMe: itemy w submenu są rysowane tak jakby na separatorze - po prawej stronie widać kreseczkę ) Ogólnie, trochę muli... a może wydaje mi się.

Nie wiem co sie dzieje, tez mam WinXP i u mnie dziala :| Ktora czesc kodu mam wrzucic, zeby mozna bylo popatrzec co jest nie tak? :| :|

0

Dlaczego nie moze odbywac sie na tej samej tablicy? Wiec jesli dobrze rozumiem, to odwolanie to itemData jest w istocie odwolaniem do elementu tablicy? Ja to rozumialem tak, ze jesli juz raz zainicjuje itemData, to jest to zapamietane i niepotrzebne sa juz dane, ktorymi to itemData inicjowalem - wiec inicjacje innego popupa moge znow przeprowadzic na tej samej tablicy... a itemData dla itemow zainicjowanych wczesniej pozostana aktualne jesli ten item juz byl raz inicjowany .... czy myle sie

Heh moja nieścisłość, a Twój błąd ;) Komunikat WM_INITMENUPOPUP może być wywołany wiele razy, a wskaźnik masz jeden. Problem w tym, że WM_DRAWITEM korzysta z tego wskaźnika. I teraz, otwierasz menu -> WM_INITMENUPOPUP, później jego submenu -> WM_INITMENUPOPUP (zmiana wartości wskaźnika). Teraz najeżdżasz na item głównego menu (tu już nie ma WM_INITMENUPOPUP) i... skąd czyta WM_DRAWITEM [???] :P Odpowiedź: z danych submenu [!!!]

No zgoda, ale jak mam wykryc, kiedy itemy sa usuwane?

No i tu jest problem :/ Wprawdzie jest komunikat WM_UNINITMENUPOPUP, ale jest on dopiero od Win98 i nie wiem dokładnie jak on działa. Problemu by nie było gdyby menu było obsługiwane przez jakieś funkcje z Twojej biblioteki, no ale chyba nie o to chodzi (?). Tak się zastanawiam, co jest w tej MenuItem czego nie ma w MENUITEMINFO [???] Jeżeli nic, to ta cała dyskusja jest bez sensu ;P

0

Problem w tym, że WM_DRAWITEM korzysta z tego wskaźnika. I teraz, otwierasz menu -> WM_INITMENUPOPUP, później jego submenu -> WM_INITMENUPOPUP (zmiana wartości wskaźnika). Teraz najeżdżasz na item głównego menu (tu już nie ma WM_INITMENUPOPUP) i... skąd czyta WM_DRAWITEM Odpowiedź: z danych submenu

Hmmmm, czy jestes tego pewien...?

Mam cos takiego w WM_DRAWITEM:

MenuItem* pmi=(MenuItem*)dis->itemData;

To "dis" odnosi sie do itema, ktory jest aktualnie rysowany. Dlaczego wiec WM_DRAWITEM nie odczyta tego itemData, ktore bylo przypisywane przedtem do tego itema, tylko z submenu [???] (wtedy kiedy bylo WM_INITMENUPOPUP dla tego popupa)

To prawda, ze po rozwinieciu submenu inicjowane sa itemy tego submenu, ktore jest rozwijane, ale czy w takim razie WM_DRAWITEM czyta tylko z tego, co bylo inicjowane ostatnio??

Gdyby bylo dokladnie tak jak piszesz, to nie mialoby prawa zadzialac absolutnie w zadnym przypadku a jednak u mnie dziala...u ciebie jest problem z lewym paskiem (niewyjasnione dlaczego) - ale z tego co pisales, tekst jest odtwarzany prawidlowo, wiec jak to mozliwe? :| Nie mam pojecia co o tym myslec.......

Tak się zastanawiam, co jest w tej MenuItem czego nie ma w MENUITEMINFO Jeżeli nic, to ta cała dyskusja jest bez sensu

Hmmm tak na dobra sprawe to nie ma tam nic, czego nie ma w MENUITEMINFO. Ale jak mialbym rozwiazac problem nie uzywajac wlasnej struktury?
Mam za kazdym razem w WM_DRAWITEM pobierac tekst aktualnie rysowanego itema i wyswietlac go za pomoca DrawText?

To sie nie uda, bo wyglada na to, ze po ustawieniu stylu OwnerDraw item juz zadnego tekstu nie zawiera tak, jakby flagi MFT_STRING i MFT_OWNERDRAW sie wykluczaly :| Wiec gdzies to trzeba zapamietac i dlatego obmyslilem taki sposob....

Wiec jak to inaczej rozwiazac [???]

0

Hmmmm, czy jestes tego pewien...?

Mam cos takiego w WM_DRAWITEM:

MenuItem* pmi=(MenuItem*)dis->itemData

Opierałem się na wersji, którą podałeś wcześniej, a tego tam nie było (w każdym razie nie widzę tego ;P). No chyba, że chodzi Ci o to co podałem jako przykład tu.

To prawda, ze po rozwinieciu submenu inicjowane sa itemy tego submenu, ktore jest rozwijane, ale czy w takim razie WM_DRAWITEM czyta tylko z tego, co bylo inicjowane ostatnio??

Jeżeli przypisałeś wszystkie wskaźniki poprawnie to nie powinno mieć znaczenia, który item jest malowany. Wrzuć program na debugger.

0

Hmmm widze ze ciagle duzo osob przeglada ciagle ten watek... zapraszam do wypowiedzenia sie ;)

Wiec tak: oto naprawde ostateczna wersja (na dzien dzisiejszy nic wiecej tu nie wymysle):

www.michalm.hostlix.com/test.exe

Ponownie prosze wszystkich o przetestowanie - wlasnie sprawdzilem na win98 i wyglada na to ze wszystko dziala jak trzeba....

0

U mnie działa dobrze ;)

0

Powtórzę się:

Szczawik napisał(a)

Windows Media Center Edition 2005 [spolszczony] - działa jak trzeba, mimo iż męczyłem go na wszelkie znane mi sposoby i style wyglądu.

0

Taki niewielki błąd:
Jeżeli najedziemy na pozycję zawierająca podmenu i pozwolimy się temu podmenu pojawić, to po przejściu do następnej pozycji i zniknięciu podmenu zaznaczenie nie jest odrysowywane w miejscu gdzie to podmenu zasłaniało obecną pozycję.
Czyli np. "Section|Special", poczekać na pojawieni się podmenu, później zjechać na "Justify" i zobaczyć końcówkę.

0

Rzeczywiście jest taki błąd - nie zauważyłem.

0

Rzeczywiscie macie racje - sam dopiero teraz to zauwazylem. No ale to juz nie jest jakis powazny blad, na razie nie wiem czemu tak jest hmmm

Do Ktos-ia - moglbys jeszcze raz sprawdzic najnowsza wersje na tym Microsoft Virtual Server ? Jezeli zadziala, to znaczy ze bedzie chyba mozna juz zamknac w koncu ten watek ;) Bo jak datad wyglada na to ze wszystko jest juz OK.

Przy okazji - dzieki za odpowiedzi - naprawde mi to pomoglo.

0

Windows XP - prawidłowo.
Windows ME - prawidłowo.
Windows 95 - testowałem tylko krótko, ale kilka razy przełączałem rózne style i wszystko wyglądało na działające prawidłowo.

1 użytkowników online, w tym zalogowanych: 0, gości: 1