Александр Климов - Программирование КПК и смартфонов на .NET Compact Framework

Тут можно читать онлайн Александр Климов - Программирование КПК и смартфонов на .NET Compact Framework - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Питер, год 2007. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Программирование КПК и смартфонов на .NET Compact Framework
  • Автор:
  • Жанр:
  • Издательство:
    Питер
  • Год:
    2007
  • Город:
    Санкт-Петербург
  • ISBN:
    978-5-91180-270-7
  • Рейтинг:
    4.88/5. Голосов: 81
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

Александр Климов - Программирование КПК и смартфонов на .NET Compact Framework краткое содержание

Программирование КПК и смартфонов на .NET Compact Framework - описание и краткое содержание, автор Александр Климов, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Мобильные устройства все активнее вторгаются в нашу жизнь. Карманные компьютеры и смартфоны давно утратили статус дорогих игрушек и перекочевали в разряд необходимых устройств. Значит, для них необходимо создавать программное обеспечение. Так почему вы должны оставаться в стороне?

Прочитав эту книгу, вы получите знания, которые позволят вам уверенно создавать программы для карманных компьютеров и смартфонов. А огромное количество разнообразных примеров поможет быстро совершенствоваться и развиваться, обогащая свой опыт работы.

Книга предназначена для начинающих программистов.

Программирование КПК и смартфонов на .NET Compact Framework - читать онлайн бесплатно полную версию (весь текст целиком)

Программирование КПК и смартфонов на .NET Compact Framework - читать книгу онлайн бесплатно, автор Александр Климов
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Количество строк в текстовом поле

Если у текстового поля свойство Multilineимеет значение True, то свойство Linesвозвращает массив строк в текстовом поле. Но у данного свойства есть два недостатка. Во-первых, свойство Linesне поддерживается библиотекой .NET Compact Framework, а во-вторых, это свойство не учитывает перенос слов. Для подсчета количества строк в многострочном текстовом поле можно использовать сообщение EM_GETLINECOUNT. Соответствующий код приведен в листинге 13.16.

Листинг 13.16

[DllImport("coredll.dll")]

static extern int SendMessage(IntPtr hwnd, int msg, int wParam, int lParam);

const int EM_GETLINECOUNT = 0x00BA;

private void butGetNumber_Click(object sender, EventArgs e) {

// Узнаем число строк в текстовом поле

int numberOfLines = SendMessage(textBox1.Handle, EM_GETLINECOUNT, 0, 0);

sbInfo.Text = "Число строк: " + numberOfLines.ToString();

}

Реестр

Реестр является важной частью любой операционной системы семейства Windows. Не является исключением и система Windows Mobile, в которой тоже имеется собственный реестр. Однако разработчики компании Microsoft не стали включать редактор реестра в состав Windows Mobile. Поэтому для доступа к разделам реестра приходится устанавливать программы от сторонних производителей.

Однако любой программист может написать свой редактор реестра, используя возможности .NET Compact Framework. При этом следует учитывать, что в библиотеке .NET Compact Framework 2.0 появились классы для работы с разделами реестра. Если же вы продолжаете писать программы с использованием .NET Compact Framework 1.0, то придется вызывать функции Windows API.

В листинге 13.17 приведен код, который будет работать в любой версии .NET Compact Framework.

Листинг 13.17

using System;

using System.Collections.Generic;

using System.Text;

using System.Runtime.InteropServices;

namespace Registry_CS {

class Registry {

///



/// Создает ключ

///

/// Имя создаваемого ключа

/// B успешном случае возвращается

/// ERROR_SUCCESS</ returns>

public static int CreateKey(UIntPtr root, string keyName) {

UIntPtr hkey = UintPtr.Zero;

uint disposition = 0;

try {

return

RegCreateKeyEx(root, keyName, 0, null, 0, KeyAccess.None, IntPtr.Zero,

ref hkey, ref disposition);

} finally {

if (UIntPtr.Zero != hkey) {

RegCloseKey(hkey);

}

}

}

///



/// Удаляет ключ

///

/// Имя ключа

/// B успешном случае возвращается

/// ERROR_SUCCESS

public static int DeleteKey(UIntPtr root, string keyName) {

return RegDeleteKey(root, keyName);

}

///



/// Создает строковой параметр в заданном ключе

///

/// Имя ключа

/// Имя параметра

/// Значение параметра

/// В успешном случае возвращается

/// ERROR_SUCCESS

public static int CreateValueString(string keyName, string valueName,

string stringData) {

UIntPtr hkey = UintPtr.Zero;

try {

int result = RegOpenKeyEx(root, keyName, 0, KeyAccess.None, ref hkey);

if (ERROR_SUCCESS != result) return result;

byte[] bytes = Encoding.Unicode.GetBytes(stringData);

return RegSetValueEx(hkey, valueName, 0, KeyType.String, bytes,

(uint)bytes.Length);

} finally {

if (UIntPtr.Zero != hkey) {

RegCloseKey(hkey);

}

}

}

///



/// Создает параметр типа DWORD в заданном ключе

///

/// Имя ключа

/// Имя параметра

/// Значение параметра

/// В успешном случае возвращается

/// ERROR_SUCCESS

public static int CreateValueDWORD(UIntPtr root, string keyName,

string valueName, uint dwordData) {

UIntPtr hkey = UintPtr.Zero;

try {

int result = RegOpenKeyEx(root, keyName, 0, KeyAccess.None, ref hkey);

if (ERROR_SUCCESS != result) return result;

byte[] bytes = BitConverter.GetBytes(dwordData);

return RegSetValueEx(hkey, valueName, 0, KeyType.Dword, bytes,

(uint)bytes.Length);

} finally {

if (UIntPtr.Zero != hkey) {

RegCloseKey(hkey);

}

}

}

///



/// Создает двоичный параметр в заданном ключе

///

/// Имя ключа

/// Имя параметра

/// Значение параметра

/// B успешном случае возвращается

/// ERROR_SUCCESS

public static int CreateValueBinary(UIntPtr root, string keyName,

string valueName, uint binData) {

UIntPtr hkey = UintPtr.Zero;

try {

int result = RegOpenKeyEx(root, keyName, 0, KeyAccess.None, ref hkey);

if (ERROR_SUCCESS != result) return result;

byte[] data = BitConverter.GetBytes(binData);

return RegSetValueEx(hkey, valueName, 0, KeyType.Binary, data,

(uint)data.Length);

} finally {

if (UIntPtr.Zero != hkey) {

RegCloseKey(hkey);

}

}

}

///



/// Получает значение строкового параметра

///

/// Имя ключа

/// Имя параметра

/// строковые данные

/// В успешном случае возвращается

/// ERROR_SUCCESS

public static int GetStringValue(UIntPtr root, string keyName,

string valueName, ref string stringResult) {

UIntPtr hkey = UintPtr.Zero;

try {

int result = RegOpenKeyEx(root, keyName, 0, KeyAccess.None, ref hkey);

if (ERROR_SUCCESS != result) return result;

byte[] bytes = null;

uint length = 0;

KeyType keyType = KeyType.None;

result = RegQueryValueEx(hkey, valueName, IntPtr.Zero, ref keyType, null,

ref length);

if (ERROR_SUCCESS != result) return result;

keyType = KeyType.None;

bytes = new byte[length];

result = RegQueryValueEx(hkey, valueName, IntPtr.Zero, ref keyType, bytes,

ref length);

if (ERROR SUCCESS != result) return result;

stringResult = Encoding.Unicode.GetString(bytes, 0, bytes.Length);

return ERROR_SUCCESS;

} finally {

if (UIntPtr.Zero != hkey) {

RegCloseKey(hkey);

}

}

}

///



/// Получает заданное значение типа DWORD

///

/// Имя ключа

/// Имя параметра

/// Значение параметра

/// B успешной случае возвращается

/// ERROR_SUCCESS

public static int GetDWORDValue(UIntPtr root, string keyName,

string valueName, ref uint dwordResult) {

UIntPtr hkey = UintPtr.Zero;

try {

int result = RegOpenKeyEx(root, keyName, 0, KeyAccess.None, ref hkey);

if (ERROR_SUCCESS != result) return result;

byte[] bytes = null;

uint length = 0;

KeyType keyType = KeyType.None;

result = RegQueryValueEx(hkey, valueName, IntPtr.Zero, ref keyType, null,

ref length);

bytes = new byte[Marshal.SizeOf(typeof(uint))];

length = (uint)bytes.Length;

keyType = KeyType.None;

result = RegQueryValueEx(hkey, valueName, IntPtr.Zero, ref keyType, bytes,

ref length);

if (ERROR_SUCCESS != result) return result;

dwordResult = BitConverter.ToUInt32(bytes, 0);

return ERROR_SUCCESS;

} finally {

if (UIntPtr.Zero != hkey) {

RegCloseKey(hkey);

}

}

}

///



/// Удаляет заданный параметр из раздела реестра

///

/// Имя ключа

/// Имя параметра

/// В успешном случае возвращается

/// ERROR_SUCCESS

public static int DeleteValue(UIntPtr root, string keyName,

string valueName) {

UIntPtr hkey = UIntPtr.Zero;

try {

int result = RegOpenKeyEx(root, keyName, 0, KeyAccess.None, ref hkey);

if (ERROR_SUCCESS != result) return result;

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Александр Климов читать все книги автора по порядку

Александр Климов - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Программирование КПК и смартфонов на .NET Compact Framework отзывы


Отзывы читателей о книге Программирование КПК и смартфонов на .NET Compact Framework, автор: Александр Климов. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x