Александр Климов - Программирование КПК и смартфонов на .NET Compact Framework
- Название:Программирование КПК и смартфонов на .NET Compact Framework
- Автор:
- Жанр:
- Издательство:Питер
- Год:2007
- Город:Санкт-Петербург
- ISBN:978-5-91180-270-7
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Александр Климов - Программирование КПК и смартфонов на .NET Compact Framework краткое содержание
Мобильные устройства все активнее вторгаются в нашу жизнь. Карманные компьютеры и смартфоны давно утратили статус дорогих игрушек и перекочевали в разряд необходимых устройств. Значит, для них необходимо создавать программное обеспечение. Так почему вы должны оставаться в стороне?
Прочитав эту книгу, вы получите знания, которые позволят вам уверенно создавать программы для карманных компьютеров и смартфонов. А огромное количество разнообразных примеров поможет быстро совершенствоваться и развиваться, обогащая свой опыт работы.
Книга предназначена для начинающих программистов.
Программирование КПК и смартфонов на .NET Compact Framework - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
private void cmenuCopy_Click(object sender, EventArgs e) {
// Копируем выделенный текст
SendMessage(hwndEditor, WM_COPY, 0, 0);
}
Мы сделали еще один шаг вперед. Теперь наш маленький блокнот умеет работать с текстом. Но приложение нужно еще немного доработать. Например, пользователь может во время работы с блокнотом переключиться на другую программу и скопировать в буфер обмена картинку, а затем вернуться обратно к текстовому редактору. Конечно, картинку нельзя вставить в текстовое поле. Поэтому надо проверить тип содержимого в буфере обмена, и если там содержатся не текстовые данные, то нужно заблокировать пункт меню Вставить
. Для этого можно использовать функцию IsClipboardFormatAvailable
, а проверку данных в буфере обмена выполнять в событии Popup
, как показано в листинге 7.34.
[DllImport("Coredll.dll")]
private static extern bool IsClipboardFormatAvailable(uint uFormat);
// константа для буфера обмена
private const uint CF_UNICODETEXT = 13;
public static bool IsText() {
try {
return IsClipboardFormatAvailable(CF_UNICODETEXT);
} catch (Exception ex) {
MessageBox.Show("He могу понять, что содержится в буфере обмена!");
return false;
}
}
private void mnuEdit_Popup(object sender, EventArgs e) {
if (IsText())
mnuPaste.Enabled = true;
else
mnuPaste.Enabled = false;
}
Подобные изменения надо сделать и для пунктов меню. Если пользователь не выделил часть текста, то пункты Вырезать
, Копировать
и Удалить
также должны быть заблокированы. Код, реализующий эту функциональность, приведен в листинге 7.35.
//Если текст выделен
if (txtEditor.SelectionLength > 0) {
mnuCut.Enabled = true;
mnuCopy.Enabled = true;
mnuDelete.Enabled = true;
} else {
mnuCut.Enabled = false;
mnuCopy.Enabled = false;
mnuDelete.Enabled = false;
}
Следующим шагом в развитии программы будет добавление файловых операций. Работа с текстовым редактором предполагает не только правку текста, но и сохранение текста в файле, а также чтение данных из файла. Для этого в меню создаются соответствующие команды Создать
, Открыть
, Сохранить
и Сохранить как
. Код, связанный с этими командами, приведен в листинге 7.36.
private void mnuOpen_Click(object sender, EventArgs e) {
dlgOpenFile.Filter = "Текстовые документы (*.txt)|*.txt|Все файлы |*.*";
dlgOpenFile.ShowDialog();
if (File.Exists(dlgOpenFile.FileName)) {
fname = dlgOpenFile.FileName;
StreamReader sr =
new StreamReader(fname, System.Text.Encoding.GetEncoding("UTF-8"), false);
txtEditor.Text = sr.ReadToEnd();
flag = false;
sr.Close();
}
}
private void mnuSaveAs_Click(object sender, EventArgs e) {
SaveFileDialog dlgSaveFile = new SaveFileDialog();
dlgSaveFile.Filter = "Текстовые документы (*.txt)|*.txt|Все файлы |*.*";
dlgSaveFile.ShowDialog(); fname = dlgSaveFile.FileName;
savedata();
}
private void savedata() {
if (fname == "") {
SaveFileDialog dlgSaveFile = new SaveFileDialog();
dlgSaveFile.Filter = "Текстовые документы (*.txt)|*.txt|Все файлы|*.*";
DialogResult res = dlgSaveFile.ShowDialog();
if (res == DialogResult.Cancel) {
return;
}
fname = dlgSaveFile.FileName;
MessageBox.Show(fname);
}
StreamWriter sw =
new StreamWriter(fname, false, System.Text.Encoding.GetEncoding("UTF-8"));
sw.WriteLine(txtEditor.Text);
sw.Flush();
sw.Close();
flag = false;
}
private void mnuSave_Click(object sender, EventArgs e) {
savedata();
}
private void txtEditor_TextChanged(object sender, EventArgs e) {
flag = true;
}
Работа с файлами в .NET Compact Framework не отличается от методов работы с файлами в полной версии .NET Framework, поэтому заострять внимание на этом коде не нужно. Осталось только добавить в программу некоторые детали, которые придают программе профессиональный вид. Нужно присоединить собственную пиктограмму приложения, а также добавить диалоговое окно О программе
с упоминанием автора программы и логотипом фирмы. Безусловно, вы можете наделить текстовый редактор новыми возможностями или расширить его функциональность. Например, для сохранения и открытия файлов я использовал стандартные диалоговые окна, которые работают с файлами в пределах папки Мои документы
. Но используя код ранее созданного файлового менеджера, можно научить приложение сохранять и открывать файлы в любом месте файловой системы. Также можно доработать меню Формат
, позволяющее работать с различными кодировками текста.
Распространение приложений
Даже если вы написали очень полезную программу, она не сможет обрести всемирную известность, пока вы держите ее на своем компьютере. Нужно все же распространить программу и, если она не бесплатная, то и немного заработать на отпуск. Программы для настольных компьютеров распространять довольно просто. Нужно лишь создать специальный проект для создания установочного пакета, который сгенерирует специальный файл установки Microsoft Installer (MSI). К сожалению, для мобильных устройств процесс создания установочных файлов немного отличается. В процессе распространения программы участвуют три составляющие: настольный компьютер, программа синхронизации Microsoft ActiveSync и программа wceload.exe
для извлечения файлов из cab-файлов.
Для пользователя процесс установки программы не сильно отличается от привычной схемы. Сначала он скачивает программу или находит ее на компакт-диске. Затем запускает установочный msi-файл. Программа Microsoft Installer с помощью специального мастера установки помогает пользователю установить программу с нужными настройками. После этого программа считается установленной, и пользователь может запускать ее.
Создание cab-файла
Прежде чем установочный пакет попадет в руки пользователя, нужно хорошенько поработать над его созданием. Устройства под управлением Windows Mobile не могут напрямую работать с файлами .msi. Вместо этого используются кабинетные файлы с расширением .cab. Таким образом, задача программиста заключается в том, чтобы составить список команд для программы синхронизации ActiveSync, которые позволят скопировать cab-файлы на устройство с учетом необходимых установок. Для создания удобного установочного пакета с интуитивно понятным интерфейсом вам необходимо выполнить нехитрую последовательность действий.
1. Создать cab-файл для устройства.
2. Добавить в cab-файл дополнительные файлы, используемые программой, например изображения или файлы с данными
3. Добавить в cab-файл инструкции для записи в реестр.
4. Зарегистрировать cab-файл с помощью ActiveSync, чтобы пользователь мог установить приложение с настольного компьютера.
Читать дальшеИнтервал:
Закладка: