Migracja pomiędzy platformami Windows Mobile — pytania i odpowiedzi dla programistów



Pobieranie 90.23 Kb.
Data07.05.2016
Rozmiar90.23 Kb.

Migracja pomiędzy platformami Windows Mobile — pytania i odpowiedzi dla programistów

Microsoft



Dotyczy:
   oprogramowania Windows Mobile™
   urządzeń typu Pocket PC opartych na Windows Mobile
   urządzeń typu Smartphone opartych na Windows Mobile
   Microsoft eMbedded Visual C++®
   Microsoft eMbedded Visual Basic®

Streszczenie
Niniejszy artykuł zawiera omówienia najczęściej spotykanych problemów oraz odpowiedzi na typowe pytania, zadawane przez programistów w związku z migracją pomiędzy platformami opartymi na Windows Mobile
(długość dokumentu — około 15 stron drukowanych).

Spis treści

Historia uaktualnień
Wprowadzenie
Interfejs użytkownika
Pliki i magazyn danych
Bezpieczeństwo
Sprzęt
Łączenie się z Internetem i przeglądanie Internetu
Wyświetlacz
Dźwięk
Kompilator i środowiska programistyczne
Kontakt

Historia uaktualnień


wydanie

data wydania

uwagi

1

wrzesień 2004

wydanie pierwsze

2

październik 2004

  • Dodano Dlaczego mój dodatek plugin dla ekranu Today czasami znika na urządzeniach wyposażonych w Windows Mobile 2003 Second Edition?

  • Uaktualniono W ramach inicjatywy zwiększania bezpieczeństwa zaczęliśmy podpisywać wszystkie nasze pliki CAB, jednak po podpisaniu pliku CAB dla Pocket PC przestaje on działać. Dlaczego?

3

grudzień 2004

  • Uaktualniono Dlaczego strony internetowe, wyświetlane na urządzeniach w wersji 2003, inaczej wyglądają i inaczej funkcjonują?

  • Dodano Dlaczego podczas ładowania w Pocket Explorer strony, zawierającej kontrolkę ActiveX, wyświetlany jest komunikat „Press OK to continue loading the content of this page”?

  • Uaktualniono Dlaczego obrazy paska narzędzi znikają, gdy aplikacja działa na platformie Windows Mobile 2003 Second Edition?

  • Uaktualniono Co się stało z biblioteką imgdecmp.dll? Jak mogę programowo ładować typowe formaty plików?

Wprowadzenie


Oprogramowanie Windows Mobile™ zostało zaprojektowane tak, aby mogło być w łatwy sposób dostosowywane do różnych urządzeń sprzętowych przez różnych producentów, operatorów sieci komórkowych i integratorów. Utworzenie platformy udostępniającej programistom spójny zestaw funkcji było możliwe dzięki zdefiniowaniu dwóch jej odmian — dla urządzeń typu Pocket PC oraz dla urządzeń typu Smartphone. W zakresie tych dwóch kategorii producenci OEM i operatorzy mogą dokonywać zmian sprawiających, że ich urządzenia będą unikatowe i konkurencyjne na rynku. Celem firmy Microsoft jest zapewnienie programistom jednolitych warunków pracy z obiema platformami — aby aplikacje, utworzone na jednym urządzeniu i platformie (Pocket PC i Smartphone) mogły bez wprowadzania zasadniczych modyfikacji działać na innych urządzeniach. Pomimo tego, że kładziemy duży nacisk na osiągnięcie tego celu, czasem pojawiają się różnice pomiędzy produktami i platformami, będące przyczyną odmiennego zachowania aplikacji na różnych urządzeniach.

W niniejszym artykule omówiono najczęściej spotykane problemy i odpowiedziano na najczęściej zadawane pytania (FAQ), dotyczące migracji pomiędzy urządzeniami i platformami. Na końcu artykułu został podany także adres e-mail, na który można przesyłać zagadnienia do włączenia do tego dokumentu.

Dokument ten jest przeznaczony dla programistów zajmujących się migracją z wcześniejszej wersji oprogramowania Windows Mobile lub pracujących nad utworzeniem wspólnej bazy kodu źródłowego dla wszystkich urządzeń korzystających z tej platformy.

Interfejs użytkownika


Dlaczego w menu Smartphone pojawiają się powtórzone numeryczne klawisze skrótu?

Podczas tworzenia menu w urządzeniu Smartphone opartym na Windows Mobile 2003, system operacyjny dodaje do tego menu numeryczne klawisze skrótu. Ponieważ jest to działanie automatyczne, podręcznik Designed for Windows Mobile Software Application Handbook for Smartphone sugeruje, aby nie dodawać do menu własnych skrótów numerycznych. Zmianę tę wprowadzono w platformie Smartphone w wersji 2003, dlatego powtórzenia pojawiają się na platformie Smartphone 2003 w aplikacjach, w których zdefiniowano klawisze skrótu.



Dlaczego klawisze skrótu nie działają z listami wyboru na urządzeniach Smartphone 2003?

Gdy interfejs użytkownika urządzenia typu Smartphone zawiera listę lub menu, to na ogół możliwe jest użycie klawiatury w celu szybkiego wybrania żądanego elementu. Na przykład po wyświetleniu listy dźwięków lub dzwonków i naciśnięciu klawisza „3” zostanie wybrany pierwszy element, którego nazwa rozpoczyna się od litery „d”. Funkcjonalność ta doskonale sprawdza się w przypadku aplikacji zapisanych w pamięci ROM telefonu, można się jednak przekonać, że w aplikacjach utworzonych przy użyciu Microsoft® eMbedded Visual C++® lub Microsoft Visual Studio® ten sposób wyboru elementu z listy nie działa (zostanie to naprawione w przyszłych wersjach Smartphone). Problemu tego można uniknąć, tworząc klasę potomną okna docelowego i filtrując komunikat WM_IME_COMPOSITION w celu manualnego wybrania elementu listy.



Dlaczego paski postępu są wyświetlane nieprawidłowo?

W niektórych urządzeniach, opartych na platformie Windows Mobile, kolory systemowe COLOR_BTNFACE i COLOR_HIGHLIGHT mają tę samą wartość. Wartości te powinny być różne, gdy jednak tak nie jest, to niektóre elementy interfejsu użytkownika mogą być wyświetlane w sposób odmienny od oczekiwanego. Aby uniknąć tego problemu należy porównać wartości obydwu kolorów i — jeżeli są takie same — odpowiednio je zmodyfikować.



Moje urządzenie Pocket PC informowało o różnych zdarzeniach migając na różne sposoby diodą LED. Zmieniło się to przy przejściu od wersji 2002 do 2003. Na czym dokładnie polegają te zmiany?

W urządzeniach Pocket PC 2002 w panelu „Sounds & Notifications” (dźwięki i powiadomienia) dostępne są opcje „Display message on screen” (wyświetlaj komunikaty na ekranie) oraz „Flash light for” (migocz przez…). Ustawienia te nie są dostępne na platformie Windows Mobile 2003 dla Pocket PC. Więcej informacji na ten temat można znaleźć w dokumencie Differences in LED flashing functionality between Pocket PC 2002 and Pocket PC 2003.


Pliki i magazyn danych


Jak konsekwentnie identyfikować lokalizacje danych w urządzeniach?

Urządzenia Smartphone posiadają trwałe i ulotne magazyny danych. Magazyn ulotny jest czyszczony za każdym razem, gdy telefon zostanie wyłączony. Wszystkie dane, które mają zostać zachowane po wyłączeniu telefonu, są zapisywane w magazynie trwałym. Magazyn ten jest montowany przez systemy operacyjne Windows Mobile 2003 for Smartphone oraz Windows Mobile 2003 Second Edition for Smartphone jako podkatalog folderu głównego.

Większość urządzeń opartych na Smartphone 2002 do przedstawienia magazynu trwałego stosuje folder IPSM. W przypadku Smartphone 2003, domyślną lokalizacją jest folder „Storage”. Aby aplikacja zawsze potrafiła określić poprawną ścieżkę do magazynu trwałego, należy korzystać z funkcji API SHGetSpecialFolderPath, pozwalającej na uzyskanie lokalizacji typowych folderów — na przykład My Documents.

Nazwa lokalizacji kart pamięci w urządzeniach Smartphone i Pocket PC także może różnić się w zależności od producenta. Ponieważ urządzenie może posiadać kilka kart pamięci o różnych nazwach, w aplikacji nie można przyjąć żadnych konkretnych założeń co do nazwy lub lokalizacji poszczególnych kart. Aby programowo wyliczyć zainstalowane karty pamięci, należy skorzystać z funkcji API FindFirstFlashCard i FindNextFlashCard.



Dlaczego moja aplikacja przestaje działać po wyjściu urządzenia ze stanu uśpienia?

Dlaczego dojścia (uchwyty) do plików na karcie pamięci stają się nieprawidłowe po wyłączeniu i ponownym włączeniu urządzenia Pocket PC?

W platformie w wersji 2003 zmniejszono domyślne opóźnienie, wpływające na ładowanie i zwalnianie niektórych sterowników w odpowiedzi na wystąpienie zdarzenia uśpienia lub wznowienia systemu. Opóźnienie to może mieć wpływ na aplikacje, w których przyjęto założenie, że uchwyty plików związanych z kartami SD zostaną zachowywane podczas krótkiego cyklu uśpienia i wznowienia urządzenia. Jeżeli występują problemy z migracją takich aplikacji do platformy Windows Mobile 2003, to można spróbować zwiększyć wartość podanego poniżej wpisu rejestru do wartości 4096:

HKEY_LOCAL_MACHINE\System\StorageManager

PNPUnloadDelay: 4096



Dlaczego na niektórych urządzeniach typu Smartphone nie mogę instalować oprogramowania?

Urządzenia Smartphone oparte na Windows Mobile posiadają wbudowany model zabezpieczeń, konfigurowany przez producenta tych urządzeń lub przez operatora sieci komórkowej. Model ten jest szczegółowo opisany w podręczniku A Practical Guide to the Smartphone Application Security and Code Signing Model for Developers.

Oprócz standardowej konfiguracji zabezpieczeń, zalecanej przez firmę Microsoft, model zabezpieczeń urządzeń Smartphone umożliwia producentom i operatorom takie dostosowanie urządzenia, aby chronić swoje własne zasoby. W większości przypadków do oceny, jaki poziom podpisów cyfrowych jest wymagany do instalowania i uruchamiania oprogramowania, wystarcza przejrzenie konfiguracji zabezpieczeń dostarczanej przez operatora wraz z urządzeniem. Należy mieć świadomość, że podczas instalacji lub działania aplikacji mogą zostać zablokowane próby modyfikacji chronionych obszarów rejestru lub danych urządzenia. Z uwagi na transakcyjny charakter instalacji na urządzeniach Smartphone, próba modyfikacji chronionego klucza rejestru może być przyczyną niepowodzenia całego procesu instalacji programu. Na przykład w niektórych modelach telefonu Samsung i600 zabezpieczony był klucz rejestru HKCR, w wyniku czego pojawiały się problemy w działaniu programów instalacyjnych, próbujących zarejestrować w tym kluczu przypisanie typu pliku do aplikacji. Firma Samsung udostępniła poprawkę umożliwiającą modyfikację tego klucza rejestru. Więcej informacji można znaleźć w następujących źródłach:


  • Mobile2Market Frequently Asked Questions

  • Build Applications for Windows Mobile-based Smartphones

  • Samsung SCH-i600 Smartphone Portal

Moja aplikacja na niektórych urządzeniach zachowuje się w nieprzewidywalny sposób. Czym może to być spowodowane?

Moja aplikacja uruchamia się, ale zostaje zakończona przez system. Co się dzieje?

Platforma Windows Mobile została zaprojektowana do działania na urządzeniach z małą ilością pamięci. Zawsze należy upewnić się, czy po żądaniu przydziału dodatkowej pamięci (przez funkcję malloc() lub przy użyciu operatora new), pamięć ta została rzeczywiście przydzielona. Pominięcie tego kroku może doprowadzić do próby użycia pamięci, która nie została przyznana dla procesu, co spowoduje błąd typu naruszenie dostępu.

Urządzenia są dostarczane z różnymi konfiguracjami wbudowanej i dostępnej przy pierwszym użyciu pamięci. Gdy w magazynie danych zaczyna brakować miejsca, próba zapisania danych aplikacji lub zainstalowania oprogramowania może zakończyć się niepowodzeniem. Jeżeli ma miejsce któryś z opisanych problemów, to należy sprawdzić ilość dostępnej pamięci i wolnego miejsca w magazynie danych, korzystając z urządzenia testowego. Jeżeli aplikacja korzysta z pamięci w sposób agresywny, podczas instalacji warto sprawdzić ilość dostępnej pamięci i zasugerować użytkownikowi usunięcie nieużywanego oprogramowania.

Aby sprawdzić ilość pamięci i rozmiar magazynu danych w urządzeniu typu Pocket PC, należy kliknąć Start, Settings (ustawienia), a następnie Memory (pamięć).

Aby sprawdzić ilość pamięci i rozmiar magazynu danych w urządzeniu typu Smartphone, należy kliknąć Programs (programy), Settings (ustawienia), a następnie About (informacje).

Kolejnym czynnikiem, który może wpłynąć na ilość pamięci dostępnej dla aplikacji, jest rozmiar adresowalnej przestrzeni pamięci. Przestrzeń adresowalna to logiczne odwzorowanie pamięci, w granicach którego muszą zmieścić się procesy, komponenty wykonywalne i pamięć alokowana przez aplikacje. Rozmiar przestrzeni adresowalnej może mieć wpływ na wiele problemów związanych z pamięcią, ponieważ prawdopodobna jest sytuacja, w której — mimo dużego obszaru dostępnej pamięci systemowej — przestrzeń adresowalna będzie wyczerpana. System operacyjny Windows CE, stanowiący podstawę oprogramowania Windows Mobile, podczas ładowania plików DLL wykorzystuje współdzielenie przestrzeni adresowalnych. Pozwala to na oszczędne gospodarowanie pamięcią gdy jest uruchomionych wiele procesów. Bardzo istotne jest dobre zrozumienie sposobów wykorzystania pamięci przez system operacyjny. Zagadnienia te omówiono w MSDN w artykule Windows CE .NET Advanced Memory Management.



Dlaczego plik COREDLL.DLL na urządzeniach Windows Mobile 2003 został umieszczony w slocie 0?

Począwszy od wersji Windows Mobile 2003, plik coredll.dll został przeniesiony ze slotu 1 do slotu 0, co pozwala na lepsze zarządzanie pamięcią przez platformę Compact Framework. Pomimo tego, że slot 0 jest zazwyczaj obszarem pamięci dostępnym w trybie odczytu i zapisu, biblioteka coredll.dll nadal oznaczona jest atrybutem XIP (Execute In Place — wykonuj w miejscu) i dzięki temu przed uruchomieniem nie musi być kopiowana do pamięci RAM.



Czasami Autorun.exe może nie działać w sposób oczekiwany w urządzeniach, które zawierają więcej niż jedną kartę pamięci. Dlaczego?

Oprogramowanie Windows Mobile zawiera mechanizm pozwalający na automatyczne uruchamianie pliku wykonywalnego „autorun.exe”, znajdującego się na karcie pamięci w specjalnym katalogu, nazwanym zgodnie z typem procesora (na przykład \karta\2577\autorun.exe). Niektóre urządzenia obsługują kilka kart pamięci lub korzystają z wewnętrznych, zamontowanych na stałe kart, pozwalających na automatyczną konfigurację urządzenia. Autorun.exe może nie uruchamiać się na urządzeniach, które zawierają więcej niż jedną kartę z takim plikiem. Problem ten zostanie rozwiązany w przyszłych wersjach platformy Windows Mobile.



Dlaczego bazy danych CEDB nie działają po migracji do Windows Mobile 2003?

W urządzeniach Pocket PC i Smartphone, działających w oparciu o Windows Mobile 2003, zmienił się wewnętrzny format baz danych. W przypadku niektórych aplikacji firm trzecich przy próbie dostępu do danych zmiany te mogą powodować zawieszanie się aplikacji lub pojawianie się komunikatów o błędach. Dotyczy to aplikacji instalujących bazy danych z plików razem z programem. W tej sytuacji można skorzystać z kreatora ułatwiającego migrację bazy danych. Narzędzie to jest także przydatne dla użytkowników, którzy wprowadzali dane do aplikacji we wcześniejszej wersji Pocket PC lub Smartphone, a teraz chcą je przenieść przy aktualizacji oprogramowania do wersji 2003.



Narzędzie Database Conversion Wizard Power Toy

Bezpieczeństwo


Dlaczego w moim Smartphone nie mogę używać wywołań RAPI?

Wywołania RAPI to wygodna metoda dostępu do zasobów urządzenia z komputera osobistego. Model zabezpieczeń Smartphone pozwala na taką konfigurację oprogramowania, aby uniemożliwić lub ograniczyć użycie RAPI. Oprogramowanie Smartphone respektuje zasady zabezpieczeń RAPI (4097), które mogą zezwalać na pełne wykorzystanie RAPI, zabraniać tego bezwarunkowo lub zezwalać tylko w przypadku użycia roli o ograniczonych uprawnieniach (SECROLE_USER_AUTH). Jeżeli RAPI zostało skonfigurowane do użycia jedynie przez rolę o ograniczonych uprawnieniach, to nie jest możliwe skorzystanie z niektórych zabronionych typów wywołań, takich jak CeMountDBVol oraz CeRapiInvoke. Zasady zabezpieczeń RAPI są konfigurowane przez producenta urządzenia lub operatora sieci komórkowej.



Czy trzeba podpisywać pliki MUI?

W przypadku oprogramowania Smartphone 2002 pliki MUI nie wymagały podpisywania. Jest to już konieczne począwszy od Smartphone w wersji 2003 — tak jak w przypadku innych plików binarnych (EXE, DLL i CAB).



W ramach inicjatywy zwiększania bezpieczeństwa zaczęliśmy podpisywać wszystkie nasze pliki CAB, jednak po podpisaniu pliku CAB dla Pocket PC przestaje on działać. Dlaczego?

W przeciwieństwie do platformy Smartphone, oprogramowanie Pocket PC — również w wersji 2003 Second Edition — nie obsługuje podpisanych plików CAB i uznaje je za uszkodzone. Obsługa podpisanych plików CAB zostanie wprowadzona w przyszłych wersjach platformy Pocket PC.


Sprzęt


Jakie możliwości przycisku kierunkowego powinienem uwzględnić w mojej aplikacji?

Microsoft obecnie stawia wymagania, aby producenci implementowali w swoich urządzeniach przycisk pięciokierunkowy. Niektórzy producenci rozszerzyli tę funkcjonalność — przyciski ośmiokierunkowe nie są niczym niezwykłym. Należy pamiętać, że chociaż tak rozszerzone urządzenia mogą umożliwiać zwiększoną funkcjonalność aplikacji, to funkcjonalność taka może nie być obsługiwana przez każde z urządzeń dostępnych na rynku. Aplikacje powinny być projektowane na podstawie standardowych zaleceń co do budowy sprzętu, dzięki czemu będą zgodne z oczekiwaniami i przyzwyczajeniami użytkowników, a także będą działać na szerokiej gamie urządzeń.


Łączenie się z Internetem i przeglądanie Internetu


Dlaczego żądania HTTP typu POST o objętości większej niż 16 KB nie działają na platformie Windows Mobile 2003?

Po migracji z platformy Windows Mobile 2002 do Windows Mobile 2003, żądania HTTP POST o rozmiarze większym niż 16 KB mogą kończyć się niepowodzeniem. Po wysłaniu 16 KB danych transakcja może przekroczyć limit czasu oczekiwania i zgłosić błąd. Aby uniknąć tego problemu, należy dzielić dane na fragmenty mniejsze niż 16 KB.



Dlaczego strony internetowe, wyświetlane na urządzeniach w wersji 2003, inaczej wyglądają i inaczej funkcjonują?

W przypadku urządzeń wyposażonych w oprogramowanie Windows Mobile 2003, przeglądarka Microsoft Pocket Internet Explorer automatycznie zmienia rozmiar niektórych elementów stron internetowych tak, aby były bardziej czytelne na niewielkim wyświetlaczu. Funkcjonalność ta jest nowa w stosunku do platformy w wersji 2002. Jeżeli zawartość stron jest już zoptymalizowana dla urządzeń przenośnych i nie chcemy, aby strony były automatycznie skalowane, to na urządzeniach pracujących pod kontrolą Windows Mobile 2003 z numerem kompilacji 13252 lub wyższym funkcjonalność tę można wyłączyć, dodając w nagłówku strony następujący znacznik meta:




Dlaczego podczas ładowania w Pocket Explorer strony, zawierającej kontrolkę ActiveX, wyświetlany jest komunikat „Press OK to continue loading the content of this page”?


Oprogramowanie Windows Mobile 2003 Second Edition dla urządzeń Pocket PC oraz Smartphone podczas ładowania stron internetowych zawierających kontrolki ActiveX może wyświetlać wspomniany komunikat. Komunikat ten nie pojawiał się we wcześniejszych wersjach platformy Windows Mobile. W przyszłych kompilacjach Windows Mobile 2003 Second Edition komunikat ten zostanie usunięty, a oprogramowanie będzie działało tak jak przed zmianą.

Problem ten dotyczy aktywnej zawartości kodowanej poprzez znaczniki , lub , umieszczone bezpośrednio w pliku HTML. Pliki HTML, w których znaczniki te generowane są za pomocą zewnętrznego skryptu (np. JavaScript), działają poprawnie. Na przykład wyświetlenie komunikatu spowodowane może być przez następujący obiekt, osadzony w HTML:



ID="MonthCalCtl"

CLASSID="CLSID:88D13D17-0704-48A9-80EE-D6DDC73F162A"

WIDTH=220

HEIGHT=160

>

Kod obiektu MonthCalCtl może być dynamicznie generowany przez skrypt zapisany w zewnętrznym pliku, na przykład „foo.js”.



function RunFoo()

{

document.write('\n');

document.write('


\n');

document.write('

\n');

}

Wyświetlenia komunikatu można uniknąć, wstawiając obiekt poprzez odwołanie do zewnętrznego skryptu.







Mój kod, który korzysta z kontrolki HTML, przestał prawidłowo wyświetlać obrazy. Dlaczego?

Gdy korzysta się z kontrolki HTML i ręcznie przetwarza obrazy, należy pamiętać, że w wersji 2003 platformy zachowanie tej kontrolki zostało zmienione.



  • W przypadku Pocket PC 2002, nazwa pliku, wskazywana przez znacznik IMG SRC, była przekazywana do podprogramu obsługi powiadomienia NM_INLINE_IMAGE w formie niezmienionej (na przykład nazwa pliku „file://\\My Documents\\logo.bmp” trafiała bez modyfikacji do podprogramu obsługi komunikatu WM_NOTIFY). W przypadku Pocket PC 2003, kontrolka HTML zmieni URL tego pliku na „file:///My Documents/logo.bmp”. Jeżeli aplikacja samodzielnie obsługuje obrazy, to należy pamiętać o odpowiedniej konwersji łańcucha tekstowego NM_HTMLVIEW::szTarget w sposób umożliwiający załadowanie obrazu.

  • W przypadku korzystania z biblioteki MFC i samodzielnej obsługi obrazów na Pocket PC 2002, z procedury obsługi NM_INLINE_IMAGE należało zwrócić wartość niezerową. Platforma w wersji 2002 ignorowała ponadto wartość trzeciego parametru wywołania OnNotify. W przypadku wersji 2003 konieczne jest powiadomienie kontrolki o własnej obsłudze zdarzenia przez ustawienie parametru LRESULT wywołania OnNotify na wartość różną od zera. Należy przy tym pamiętać, że na obydwu platformach trzeba dodatkowo wysłać komunikat DTM_SETIMAGE i zwrócić wartość niezerową z procedury obsługi powiadomienia.

Co zrobić, by Pocket PC prawidłowo rozpoznawał nazwę „localhost”?

Jeśli wystąpią problemy z serwerem HTTP dla Pocket PC lub z połączeniem z hostem lokalnym za pomocą urządzenia w wersji 2003, może pojawić się konieczność skonfigurowania oprogramowania. Można to zrobić w następujący sposób:



  1. Utwórz plik o nazwie _setup.xml i następującej zawartości:





08279d31044e}" />








type="HKLM\Software\Microsoft\ConnMgr\Providers\{EF097F4C-


DC4B-4c98-8FF6-AEF

805DC0E8E}\localhost-null">

value="{e8e89f5a-d3bb-4c58-9b4e-08279d31044e}" datatype="string" />







08279d31044e}" />









08279d31044e}" datatype="string" />









  1. Utwórz plik CAB w sposób opisany w MSDN w artykule Creating a CAB provisioning format file.

  2. Umieść plik CPF w urządzeniu i uruchom go. Instalator CAB przetworzy zawartość pliku, a następnie go usunie. Nie zostanie wyświetlony żaden komunikat, jednak od tej chwili powinno być możliwe użycie adresu http://localhost w celu uzyskania dostępu do lokalnego serwera internetowego bez połączenia sieciowego.

Dlaczego podczas nawiązywania połączenia za pomocą wywołania InternetOpen z opcją INTERNET_OPEN_TYPE_PRECONFIG zwracane są błędy takie jak 12029, 12031 i 12007?

Funkcja API InternetOpen, wywołana z opcją INTERNET_OPEN_TYPE_PRECONFIG, będzie próbowała wykorzystać skonfigurowane w urządzeniu informacje o serwerze proxy. Wiele urządzeń typu Smartphone jest skonfigurowanych tak, aby kierować ruch przez serwery proxy zdefiniowane przez operatora sieci, co może mieć wpływ na niektóre typy komunikacji sieciowej. INTERNET_OPEN_TYPE_PRECONFIG powoduje odczytanie z rejestru informacji o serwerze proxy. Informacje te mogą być zmienione przez konfigurację programu Pocket Internet Explorer. Szybkim sposobem na sprawdzenie, czy występujące problemy mają związek z serwerem proxy, jest próba nawiązania połączenia z użyciem opcji INTERNET_OPEN_TYPE_DIRECT oraz użycie opcji INTERNET_OPEN_TYPE_PROXY i przekazanie parametrów proxy bezpośrednio do wywołania InternetOpen.



Mój kod Javascript przestał działać. Co się zmieniło?

Podczas odwoływania się do obiektów w kodzie Javascript na platformie Windows Mobile 2003, może pojawić się konieczność użycia w pełni kwalifikowanych nazw obiektów. W Pocket PC 2002 można było na przykład w dowolnym miejscu skryptu uzyskać dostęp do obiektu przycisku, znajdującego się wewnątrz znacznika HTML

, używając jego atrybutu ID. W przypadku Pocket PC 2003 trzeba korzystać z pełnej nazwy w postaci Window.nazwa_formularza.id_obiektu, na przykład:

Window.form1.ButtonGo.Disabled = 1

Nie mogę załadować dokumentu XML w kodzie Javascript na Windows Mobile 2003

Użycie obiektu Microsoft.XMLDOM do załadowania lokalnego pliku XML w kodzie Javascript na platformie Windows Mobile 2003 spowoduje wygenerowanie błędu „Access Denied”, choć metoda ta działała w przypadku wersji 2002. Ten nowy błąd jest powodowany przez zmiany w zabezpieczeniach wprowadzone w wersji 2003. Aby go uniknąć, należy załadować dane przy użyciu obiektu ActiveX®. Obiekt taki można bez problemu utworzyć z poziomu kodu Javascript.



Dlaczego moje adresy URL nie są rozpoznawane prawidłowo na urządzeniach w wersji 2003?

Aplikacja Pocket Internet Explorer może błędnie formatować dane POST/GET, zawierające pewne symbole HTML. Na przykład każdy URL, zawierający symbole &or, &lang lub &, zostanie błędnie przekonwertowany. Listę sprawiających problemy symboli można znaleźć na stronie http://www.w3.org/TR/html401/sgml/entities.html. Problem ten występuje jedynie na urządzeniach opartych na platformie w wersji 2003 i zostanie usunięty w przyszłych aktualizacjach oprogramowania.


Wyświetlacz


Jak należy obsługiwać urządzenia o wysokiej rozdzielczości oraz urządzenia obsługujące rotację i wyświetlanie obrazu w poziomie?

W oprogramowaniu Windows Mobile 2003 Second Edition wprowadzono nową funkcjonalność związaną z wyświetlaniem obrazu. Jeśli podczas tworzenia aplikacji programista przyjął jakieś założenia, dotyczące rozdzielczości i orientacji ekranu, to — by aplikacja mogła poprawnie działać na wszystkich urządzeniach korzystających z Windows Mobile 2003 Second Edition — konieczne może okazać się przebudowanie aplikacji. Pierwszym etapem testowania aplikacji jest sprawdzenie, czy działa ona zgodnie z oczekiwaniami na urządzeniach o wysokiej rozdzielczości oraz w trybie wyświetlania obrazu w poziomie lub w formacie kwadratowym.

Podczas instalowania starszych aplikacji na urządzeniach opartych na Windows Mobile 2003 Second Edition może także pojawić się dodatkowe ostrzeżenie. Informacje i instrukcje dotyczące tworzenia pakietów instalacyjnych, obsługiwanych na tej platformie, można znaleźć w pakiecie dla programistów Developer Resources for Windows Mobile 2003 Second Edition.

Dlaczego obrazy paska narzędzi znikają, gdy aplikacja działa na platformie Windows Mobile 2003 Second Edition?

Znikanie obrazów paska narzędzi jest spowodowane zmianą wprowadzoną w platformie Windows Mobile 2003 Second Edition, polegającą na usuwaniu obrazów, gdy pasek narzędzi jest usuwany z formularza. Zjawisko to występuje także w rezultacie zmiany właściwości formularza takich jak MinimizeBox, WindowState lub FormBorderStyle, ponieważ wewnętrznie powodują one ponowne utworzenie okna, a tym samym chwilowe usunięcie z niego paska narzędzi. Aby uniknąć tego problemu, należy po wykonaniu dowolnej z wymienionych wyżej operacji ponownie ustawić właściwość ImageList paska narzędzi.

Problem ten może dotyczyć aplikacji, w których pasek narzędzi z obrazami przycisków został utworzony w Visual Studio w graficznym trybie projektowania. Kod, wygenerowany dla procedury InitializeComponent, dodaje kontrolkę do formularza po przypisaniu właściwości ImageList. Aby wyeliminować ten problem, należy tak zmienić kolejność poleceń, by polecenie Controls.Add było wywoływane przed ustawieniem właściwości ImageList.

Gdy korzystam z trybu wyświetlania poziomego na platformie Windows Mobile 2003 Second Edition, wszystkie okna dialogowe mają paski przewijania, mimo że w oknach tych nie ma obiektów umiejscowionych poza widoczną częścią ekranu. Dlaczego?

Mimo że w oknach dialogowych nie ma żadnych obiektów, umiejscowionych poza krawędzią ekranu, paski przewijania pojawiają się w wyniku zmian w zachowaniu, wprowadzonych w oprogramowaniu Windows Mobile 2003 Second Edition. Ponieważ funkcja automatycznego tworzenia pasków przewijania nie uaktywnia się, gdy w oknie dialogowym znajduje się kontrolka zakładek, to zalecanym obejściem tego problemu jest utworzenie takiej kontrolki (klasa SysTabControl32), umieszczenie jej poza obszarem ekranu (przy użyciu ujemnych współrzędnych) i wyłączenie jej właściwości WS_VISIBLE. Rozwiązanie to pozwala uniknąć tworzenia pionowego paska przewijania po przełączeniu urządzenia do trybu wyświetlania poziomego.



Czego powinienem używać — GETRAWFRAMEBUFFER, GAPI czy GDI? Co z DirectX?

Programiści często pytają, jakie podejście powinni stosować, tworząc grafikę i gry na platformach Windows Mobile i które rozwiązanie będzie najwydajniej obsługiwało najszerszy zakres możliwości graficznych urządzeń. Możliwości te mogą się różnić pomiędzy poszczególnymi urządzeniami. Biblioteka Microsoft DirectX® będzie dostępna w przyszłych wersjach platformy Windows Mobile i będzie umożliwiała tworzenie gier przy użyciu interfejsów znanych programistom z komputerów typu desktop. Obecnie efektywnym rozwiązaniem dla aplikacji wymagających wydajnego dostępu do funkcji graficznych jest próba skorzystania z wywołania ExtEscape z parametrem GETRAWFRAMEBUFFER. Jeśli próba ta nie powiedzie się, należy użyć wywołań GAPI, a następnie GDI.

GETRAWFRAMEBUFFER umożliwia uzyskanie bezpośredniego dostępu do bufora ramki. Funkcjonalność ta jest zwykle implementowana w urządzeniach posiadających wyświetlacze o wysokiej rozdzielczości z liniowo adresowalnym buforem ramki. Jeżeli wywołanie ExtEscape z parametrem GETRAWFRAMEBUFFER powoduje wygenerowanie błędu, oznacza to, że urządzenie nie udostępnia takiej funkcjonalności. W takim przypadku należy skorzystać z funkcji GAPI, zapewniających silne wsparcie dla programowania gier na różnych urządzeniach, łącznie z zapewnieniem zgodności wstecz dla istniejących aplikacji. GDI jest jedną z głównych bibliotek systemu operacyjnego. Udostępnia funkcje graficzne systemu operacyjnego, ukrywając przed programistą szczegóły dotyczące sprzętu. Biblioteka ta często stanowi zaskakująco dobrą podstawę dla aplikacji intensywnie korzystających z funkcji graficznych.

Dźwięk


Dlaczego strumień audio jest „urywany”?

Może się zdarzyć, że na niektórych urządzeniach Pocket PC i Smartphone dźwięk będzie urywany. Dzieje się tak najczęściej w przypadku, gdy użycie procesora zbliża się do stu procent i odtwarzany strumień audio charakteryzuje się wysoką przepływnością danych (bitrate). Przyczyną takiego zachowania są zazwyczaj niewielkie opóźnienia w wywołaniach zwrotnych systemu operacyjnego lub sterownika dźwięku, wprowadzane przez niektóre urządzenia oparte na Windows Mobile 2003.

Programiści piszący gry często tworzą oddzielny wątek, obsługujący żądania dodatkowych danych, wysyłane przez sterownik dźwięku. Podejście to może jednak mieć wpływ na powstawanie opóźnień będących przyczyną opisywanego problemu. Aby tego uniknąć, można zintegrować procedury obsługi dźwięku z głównym wątkiem aplikacji (czyli tym, który powoduje niemal stuprocentowe obciążenie procesora). Poza tym można umieścić w głównej pętli wywołanie Sleep(0), co może zmniejszyć opóźnienia wywołań zwrotnych sterownika.

Jeżeli w dalszym ciągu występują problemy podczas ładowania grafiki lub wykonywania innych zadań, trwające dłużej niż czas odtwarzania zawartości buforów dźwiękowych, należy rozważyć przeniesienie tych procedur do wykonywanej wcześniej części programu, aby uniknąć ich działania podczas odtwarzania dźwięku.



Dlaczego moje nagranie jest puste?

Nagrywanie dźwięku na niektórych urządzeniach typu Smartphone 2002 może być opóźnione lub zawieszone w czasie komunikacji sieciowej odbywającej się za pośrednictwem protokołu UDP. Problem ten może wystąpić, gdy dźwięk będzie nagrywany podczas działania aplikacji korzystającej ze strumienia danych UDP. Okresy aktywności sieciowej mogą być przyczyną zapisania pustego strumienia dźwiękowego. Jest to spowodowane problemami ze sterownikami w niektórych urządzeniach.


Kompilator i środowiska programistyczne


Dlaczego napisany przeze mnie kod zachowuje się inaczej po skompilowaniu go przy użyciu eMbedded Visual C++ 4.0?

W kompilatorze Microsoft eMbedded Visual C++® 4.0 zmieniono niektóre sposoby optymalizacji kodu. W przypadku stwierdzenia różnic w zachowaniu silnie zoptymalizowanych fragmentów kodu, warto tymczasowo wyłączyć optymalizacje — pozwoli to stwierdzić, czy nie są za to odpowiedzialne zmiany wprowadzone w kompilatorze. W tym celu należy otworzyć menu Project, wybrać polecenie Settings i wyłączyć optymalizacje na zakładce C++. W przypadku migracji projektów z eMbedded Visual C++ 3.0 do eMbedded Visual C++ 4.0 warto zapoznać się z artykułem MSDN Migrating to the eVC 4.0 Environment.



Jakie zmiany dotyczą kontrolek ActiveX?

Począwszy od Windows Mobile 2003, nowo tworzone kontrolki ActiveX podczas rejestrowania komponentu wymagają skonfigurowania modelu wątków jako Free lub Both. We wcześniejszych wersjach platformy Windows Mobile system ignorował to ustawienie, teraz jednak jest ono wymagane.



Dlaczego aplikacje, które korzystają z eMbedded Visual Basic lub ADOCE, nie działają na urządzeniach opartych na Windows Mobile 2003?

W przypadku urządzeń opartych na platformie Windows Mobile 2003, biblioteki uruchomieniowe ADOCE i eMbedded Visual Basic® nie są standardowo umieszczane w pamięci ROM — mogą być jednak pobierane i instalowane ręcznie. Warto jednak pamiętać, że tworzenie kodu dla platformy w wersji 2003 przy użyciu eMbedded Visual Basic nie jest objęte pomocą techniczną — możliwość tę pozostawiono jedynie po to, by klienci mogli bez modyfikacji używać aplikacji pisanych dla Pocket PC 2002.

Pobierz eMbedded Visual Basic Runtime for Pocket PC 2003.

Co się stało z biblioteką imgdecmp.dll? Jak mogę programowo ładować typowe formaty plików?

Urządzenia oparte na platformie Windows Mobile tradycyjnie posiadały w pamięci ROM bibliotekę o nazwie imgdecmp.dll. Biblioteka ta eksportowała funkcje API nieudokumentowane w SDK, lecz często stosowane przez programistów do ładowania plików graficznych. W Windows Mobile 2003 Second Edition biblioteka ta została usunięta, natomiast do pliku nagłówkowego aygshell.h dodano nowe wywołania API SHLoadImageFile i SHLoadImageResource. Funkcje te mogą być używane zamiast funkcji udostępnianych uprzednio przez bibliotekę imgdecmp.dll.



Uwaga — biblioteka imgdecmp.dll nie będzie dostępna również w przyszłych wersjach platformy Windows Mobile.

Dlaczego nie mogę wyszukiwać (wyliczać) urządzeń Bluetooth przy użyciu wywołań WSALookupService/WSALookupServiceNext?

Producenci mają możliwość instalowania w swoich urządzeniach, opartych na platformie Windows Mobile, wybranych przez siebie stosu protokołów Bluetooth. Począwszy od wersji Windows Mobile 2003, firma Microsoft dostarcza stos Bluetooth zgodny z własnymi funkcjami API dla interfejsu Bluetooth i gniazd sieciowych. Jeżeli producent sprzętu zdecyduje się na użycie alternatywnego stosu protokołu Bluetooth, to może być konieczne użycie SDK i API dostarczanych przez tego producenta. Na przykład wiele produktów z rodziny iPAQ używa stosu produkcji firmy Widcomm, udostępniającej także własny pakiet SDK do tworzenia aplikacji dla tych urządzeń.


Dlaczego mój dodatek plugin dla ekranu Today czasami znika na urządzeniach wyposażonych w Windows Mobile 2003 Second Edition?


Kod przykładowego dodatku plugin dla ekrany Today, dostarczany wraz z Pocket PC 2003 SDK, nie działa tak jak powinien. Kod ten wywołuje funkcję DefWindowProc po obsłudze WM_PAINT, a nie powinien tego robić. Po wyświetleniu zawartości powinien po prostu zwrócić wartość zero.

Błąd ten może powodować nieprawidłowe wyświetlanie dodatku — aplikacja otrzyma komunikat WM_ERASEBACKGROUND, a po nim nie otrzyma komunikatu WM_PAINT, co spowoduje, że dodatek przestanie być widoczny.

Programiści, którzy przygotowali swoje dodatki dla ekranu Today na podstawie tego przykładowego kodu, powinni wprowadzić w nich odpowiednie modyfikacje.

Kontakt


Przyczyń się do ułatwienia migracji pomiędzy platformami i urządzeniami Windows Mobile.

Jeżeli napotkasz niespójności w modelach programistycznych platform Windows Mobile lub staniesz przed koniecznością napisania kodu specjalnie po to, by uniknąć problemów związanych z konkretnym urządzeniem, powiadom nas o tym, korzystając z adresu wmdevmig@microsoft.com.










©absta.pl 2019
wyślij wiadomość

    Strona główna