ИД "Мой компьютер"   "Игроград"   "Реальность фантастики"   Ассамблея "Портал"
Сделать стартовой   

 
Домашняя страница
Расширенный поиск
E-mail

 

N 16 (447)




МОЙ КОМПЬЮТЕР




  Новости:

 
МК
Украина
Игры
Интернет
Железо
Софт
Пресс-релизы

  Статьи:

 
Уголок читателя
Прочее
Имеющий уши
Программирование
Интернет
Железо
Софт
Игры


 
КОНКУРСЫ



Правила конкурсов

Конкурс "АВЧ"

Рейтинг победителей


ОПРОС

Вы посещаете нас:
первый раз
1-2 раза в месяц
1-2 раза в неделю
1-2 раза в день
более 2-х раз в день Что привело Вас к нам?
поиск информации
интерес к статьям
интерес к новостям
любопытство
реклама
другое








боулинг

ads.mycomputer.ua

ads.mycomputer.ua

ads.mycomputer.ua

ads.mycomputer.ua

ads.mycomputer.ua













Argumentum ad ignorantiam!

 

статьи
Программирование



 

Прочее  
Visual basic  
Delphi  
C++  
Интернет приложения  
Теория  




    Прочее


Карманное программирование-3

Сергей ЖУК
N 5 (436) 27.01.2007


Продолжение, начало см. в МК, №52(431) и 1–2(432–433).
А теперь мы перейдем к более тонким материям в деле программирования для КПК. Сегодня мы разберемся со встроенными в .NET CF DialogBox’ами и напишем более удобный компонент, который можно использовать для открытия/сохранения файлов.

.NET Compact Framework предлагает разработчикам два встроенных DialogBox’а — для открытия и закрытия файлов. По принципу своей работы они заметно отличаются от своих собратьев из настольного .NET Framework, но все так же просты и понятны для программиста.

Создадим новый SmartDevice-проект в Visual Basic .NET. Для тех, кто программирует на C#, напомню, что в .NET CF у VB.NET и C# в основном используются одни и те же пространства имен, так что написание этой учебной программы не вызовет серьезных затруднений. Добавляем в наш проект диалоги OpenFileDialog и SaveFileDialog, назовем их OpenFileDialog1 и SaveFileDialog1 соответственно. Поместим на форму и две кнопки, которые назовем btnOpen и btnSave.

В этих DialogBox’ах всего четыре свойства: FileName — название файла по умолчанию; Filter — фильтр по типу файлов; InitialDirectory — папка, с которой начинается просмотр файлов; FilterIndex — индекс фильтра, используемого по умолчанию.

Пишем в Form_Load:

Добавляем в btnOpen_Click и btnSave_Click:

На рис. 1 показана работа OpenFileDialog на эмуляторе. Простые и понятные в программировании, эти DialogBox’ы, впрочем, сложно назвать удобными в применении для конечного пользователя.

Рисунок 1.

Следует обратить внимание, что Windows CE содержит еще несколько системных DialogBox’ов, которые нативно не поддерживаются .NET CF, а вызываются через Windows API. Сolor Picker DialogBox — используется для выбора цвета, Page Setup DialogBox — для настроек печати и работы с принтером. Они вызываются, соответственно, API-функциями ChooseColor и PageSetupDlgW из библиотеки commdlg.dll. Документацию по работе с этими API можно найти в Интернете.

Рассмотрим более подробно дисковую систему, которая используется в Windows CE. В силу своей портативности большинство карманных компьютеров используют в качестве основного накопителя не винчестер, а флэш-память. Windows Mobile поддерживает устанавливаемые файловые системы. Вообще, всю память КПК можно разделить на ROM, RAM и Flash.

В ROM хранится «прошивка» мобильного устройства, к ней нет прямого доступа на запись и она энергонезависима.

RAM — разделяется на «программную память» и «объектную память». Первая используется как оперативная память. Вторая содержит файловую систему, реестр Windows и базы данных свойств ОС, в нее можно устанавливать программы и хранить данные(!). Объектная память энергозависима во всех версиях Windows Mobile кроме 2005. В случае полной разрядки аккумуляторов мобильного устройства после перезарядки система стартует в режиме cold boot, все настройки, свойства, ярлыки и т.д. будут безвозвратно утеряны. В Windows Mobile 2005 используется технология Persistent Storage (Постоянное хранилище). В WM 2005 вся объектная память хранится в Flash ROM, а RAM (энергозависимая) используется только для промежуточных вычислений и временного хранения данных (как в ОЗУ настольных ПК).

Flash-карты — используются для хранения пользовательских программ и информации. В современных КПК обычно поддерживаются форматы карт Secure Digital (SD) или Compact Flash (CF).

Напишем собственный аналог Open/Save-диалога. Для этого нам понадобится TreeView (назовем его TreeView1), ImageList ( ImageList1) и простая кнопка (btnSelect). Напомню, что многие пространства имен и классы перешли из настольного .NET Framework почти без изменений. В этом примере мы сможем просто выбирать нужную папку из дерева папок, но эту программу можно легко усовершенствовать, а при желании и превратить в настоящий файловый менеджер.

Система работы с папками в Windows Mobile отличается от аналога в настольной Windows. В «мобильной» Windows корневая директория начинается с \, и все подкаталоги тоже разделяются \. Например, \\My Documents означает, что корневая директория содержит папку My Documents. Свойство FullPath, которое мы будем использовать в этом примере, возвращает полный путь к папке, начиная с \. Но для построения веток в TreeView такой вид будет неприемлем, поэтому лишний слеш будем отсекать.

В ImageList добавим коллекцию изображений, первое (индекс 0) из которых будет обозначать закрытую папку, второе (индекс 1) — открытую папку. Я использовал в качестве изображений стандартные пиктограммы, которые можно найти в папке Visual Studio: \Common7\Graphics\bitmaps.

Объявим константы:

Код при запуске формы:

Событие BeforeExpand в TreeView — до разворачивания вершины:

ShowChildNodes — для отображения вложеных папок:

Функция SlashС — для отсечения лишних слешей:

Обработка нажатия на кнопку btnSelect:

Вот и все! Запускаем! Если все сделано правильно, то скорее всего, вы увидите что-то похожее на рис. 2.

Рисунок 2.

Обратим внимание на класс Cursor. В .NET Compact Framework Cursor следует понимать не как указатель мыши, а как индикатор. Это анимированное изображение, которое появляется по центру экрана, когда идет загрузка приложения или когда КПК чем-то занят. Cursor.Current может принимать только два значения. Cursors.Default — ничего не отображается, Cursors.WaitCursor — отображается только что упомянутая пиктограмма. Предыдущий пример наглядно иллюстрирует работу с курсорами.

На сегодня все! Продолжение следует!

При написании статьи использовались материалы ресурса pocketpcmag.com.







Расширенный поиск 
 

О проекте  Рекламодателям  Карта сайта  Контакт  Обратная связь 

© ИД "Мой компьютер"®, 1998-2004