Портирование приложения Windows-CE на рабочий стол Windows - PullRequest
2 голосов
/ 17 мая 2011

Я взял на себя приложение Windows-CE 6.0, которое я хотел бы перенести на другие платформы.Это относительно простое, автономное приложение с графическим интерфейсом, написанное на Embedded C ++ версии 4.0

. Самая первая цель, которая меня интересует, - это обычный рабочий стол Windows (то есть XP, Vista, Windows-7).

Я понимаю, что перенос настольного приложения на CE нетривиален;а как же наоборот, что меня интересует?Переход от Windows-CE к Windows Desktop (несколько) совместим вверх?Мне бы очень хотелось услышать: «Купите эту среду разработки Microsoft XYZ C ++ за 1000 долларов и просто скомпилируйте и работайте!»

(К вашему сведению, у меня нет опыта ни в приложениях с графическим интерфейсом, ни в программировании в среде Windows;простой парень из Linux / Unix с десятилетиями C / C ++ опыта, но абсолютно без Windows-Fu ...; -)

1 Ответ

2 голосов
/ 17 мая 2011

Портирование на самом деле должно быть довольно простым. CE - это в основном подмножество Win32, с большим акцентом на Unicode.

Вы, вероятно, можете убедиться, что UNICODE определен, собран и, если повезет, большая часть его будет "просто работать" Места, которые будут зависать:

  • Вероятно, пользовательский интерфейс настроен на разрешение, которое не соответствует вашему ПК - часто приложения CE ориентированы на конкретное устройство и разрешение, и это не обязательно выглядит очень эстетично на ПК.
  • Все, что динамически загружается (GetProcAddress) из coredll, должно быть повторно сопоставлено с kernel32 / user32 / etc
  • Если устройство использует SIP (программную панель ввода - т.е. экранную клавиатуру), то все это должно быть удалено.
  • Если приложение использует какие-либо уведомления (значки и т. Д.), Которые должны быть заменены
  • Если приложение использует какое-либо управление питанием, оно должно быть удалено
  • Если в приложении используются какие-либо специфичные для устройства данные, особенно прямые вызовы драйверов, все это необходимо заменить
  • Если приложение использует очереди точка-точка, его необходимо заменить
  • Если приложение использует диспетчер устройств (например, для получения уведомлений о подключенных устройствах), который должен быть заменен

Любые вызовы в aygshell.dll также могут быть проблематичными.

...