.NET CF

Не знаю уж, о какой совместимости платформ мечтали в Майкрософт, создавая .NET Compact Framework, но совместимость у них получилась единственная: никакая.

То есть да, конечно, теоретически .NETCF-код, написанный для КПК, прекрасно запускается и на обычном компьютере. Теоретически.

На практике как только речь заходит о чём-то большем, нежели “навесить на форму кнопку и радоваться”, совместимость летит к таким чертям, что просто страшно становится.

Ну например.Ну например.

В обычном .NET Framework клавиши PageUp – PageDown считаются “особыми”, управляющими клавишами, и сообщения об их нажатии приходят отдельно от общего потока, в особый обработчик. Впрочем, такое поведение можно отключить, для чего у Control есть специальный флаг.

Поскольку .NET CF это, как бы, урезанный Framework, в нём такой особой обработки нет. Все клавиши всегда приходят в основной обработчик. Здорово, великолепно, я готов это пережить, и писать код с этим учётом, чтобы он работал на обеих платформах. Но он не будет. Потому, что реализация Compact Framework на персоналке, разумеется, базируется на обычном Framework. Разумеется, она тупо обрезает все “лишние” свойства. Разумеется, она не устанавливает флаг “обрабатывать нажатия системных клавиш на общих основаниях”. Поэтому сообщения о нажатии системных клавиш на PC просто никуда не приходят. Они должны были бы приходить в особый обработчик, но в CF нет этого особого обработчика. Тогда их можно было бы перенаправить в общий обработчик (и на PocketPC они туда и идут), но на обычном компьютере этого никто не сделал.

Браво.

Напишите комментарий:

Если хотите, можно залогиниться.

*