Шаблон для SplashScreen с использованием функции UpdateLayeredWindoс

В предыдущей статье я писал об использовании шаблона формы «О программе». Такие шаблоны очень удобно использовать для написания программ. Библиотека быстрого доступа dbFacade к базе данных SQLite, также является шаблоном, который можно усовершенствовать и подогнать под конкретную программу. Такой подход существенно экономит время при разработке программы и уменьшает количество ошибок, т.к. код проверяется и «шлифуется» от приложения к приложению.

Сейчас я хочу представить на ваш суд заготовку для окна приветствия. В народе называемой Splash screen. Для пользователя это лицо программы. Это то, что он видит до запуска основного окна программы, ожидая окончательной загрузки. Вопрос: для каких целей и когда следует использовать в программе splashscreen? В принципе, лепить это окно можно во все программы. Почему «лепить»? Потому, что это не всегда уместно. Если приложение загружается за одну секунду, тогда зачем показывать еще одно окно, которое будет висеть и не давать работать сразу же после появления главного окна? Таким образом, я вижу смысл вставлять splashscreen только в те программы, когда можно успеть прочитать все что на нем написано, до появления основного окна. Информация в этом окне может быть различной. Обычно я показываю, что в данный момент происходит с программой. Это может быть создание кэша записей из базы данных или active directory, загрузка картинок в память, шрифтов и т.д. Т.е. нужно показать пользователю, что программа загружается, что ей нужно время, чтобы подготовиться к работе. Иначе, человек может подумать что программа не запускается и будет пытаться запустить ее повторно.

После подготовки splashscreen для каждой программы, я понял что это дело нужно как-то ускорить. Каждый раз писать новое окно приветствия и «О программе» скучно и долго.

Требования, которые я предъявляю к классу окна приветствия:
- запуск до основного окна;
- доступ к объекту splashscreen из любого класса. Для того, чтобы можно было передавать данные в этот объект и управлять им в любой момент;
- возможность вставлять прозрачную картинку с любым уровнем прозрачности;
- иметь самые простые спецэффекты, вроде мягкого возникновения и затухания;
- быстрая настройка при добавлении в новое приложение.

Все перечисленное невозможно реализовать средствами .NET, значит будем использовать WINAPI.

Читать далее »

Популярность: 19%

C#

Цветовая схема для Visual Studio 2008

Предлагаю вам свою цветовую схему для IDE Microsoft Visual Studio 2008. Схема темная. В ней очень удобно работать по вечерам, коротая время за написанием программ под тихую музыку и шепот дождя за окном. Глаза меньше устают, чем после стандартной белой схемы. Субъективно проведенный тест показал, что после 8 часов программинга, глаза еще на месте :)

Смотрим скриншоты схемы:


Читать далее »

Популярность: 5%

Новости

Шаблон формы «О программе»

В каждой программе есть меню «О программе» или типа того. Обычно там пишут автора программы, его друзей, подруг и т.д. Некоторые указывают, что программа платная и нужно готовить Камаз баксов. Но без этого окна программа кажется недоделанной. Имея опыт в написании уймы программ и утилит, скажу, что самое скучное это писать помощь к программе, ваять окно «О программе» и делать SplashScreen (это окошко, перед запуском программы). Вот я и решил облегчить свою программерскую участь и поделиться с вами написанным шаблоном. Готовые формы «О программе» и «История версий». Для облегчения настройки все сведено в одном месте — в коде, где начинается класс окна, т.е. в самом начале.

Читать далее »

Популярность: 7%

C#

C# Реализация UPDATE для SQLite. Часть 4

Вот и заканчиваем писать шаблон класса bdFacade. Подошла очередь и для операции UPDATE. Кто не читал предыдущие статьи из этой серии, рекомендую, для начала, прочитать первые три части — часть 1, часть 2 и часть 3. Когда я только начинал писать шаблон для операции обновления данных в различных своих программах, у меня было много идей, как требуется реализовать метод, который будет универсальным. Хотя, то что вы увидите сегодня, не является универсальным на 100%. После этой статьи у нас будет готовый класс, который позволит легко работать с базой данных в наших программах.

Читать далее »

Популярность: 20%

C#

С# Пишем DELETE для SQLite. Часть 3

Продолжаем писать библиотеку быстрого доступа для новых программ под SQLite. В первых двух частях (здесь и здесь) были описаны операции SELECT и INSERT. Сегодня, на ваш суд, я представляю код для операции DELETE. Операция жесткая… Пользоваться аккуратно. Можно остаться без данных, а может и без пальцев ;) , смотря какие данные завалить.

Исходя из нашей философии написания этого класса, мудрить сильно не будем. Я представлю вам реализацию трех методов, которые удаляют данные. Два из них простых, один немного сложнее, но интереснее.

Читать далее »

Популярность: 13%

C#

C# библиотека удобного доступа к базе данных SQLite. Часть 2

Продолжаем писать библиотеку для быстрого доступа к базе данных SQLite. В первой части мы написали помощников для получения данных. Сегодня же рассмотрим вставку данных в базу.

Читать далее »

Популярность: 23%

C#

C# Вставка текста в «чужое» приложение. Вариант 1

Давно хотел написать программу, которая бы хранила заготовки и шаблоны текста, для быстрой вставки в другие приложения. Стандартными средствами .NET это сделать не удалось. В интернете тоже нет конкретной информации, которая бы четко и ясно ответила бы на этот вопрос. По крупицам собрав и разобрав различную информацию, опробовав кучу способов, я смог написать кое-что. Сегодня разберем приложение, которое будет вставлять определенный текст в «чужую» программу.

Читать далее »

Популярность: 29%

C#

C# динамический доступ к элементу с использованием метода InvokeMember

Это, можно сказать, один из фокусов: как вызвать какой-либо элемент (конструктор, метод, свойство и т.д.) динамически определив его имя? Например ситуация, есть несколько методов, которые имеют разные имена. Их всех нужно вызвать. Пол сотни, но по определенному шаблону у них совпадают имена. Писать их вручную, описывая каждую? Неее… Для таких целей есть интересный метод InvokeMember, который вызывает заданный элемент.

Читать далее »

Популярность: 10%

C#

Autohotkey быстрое подключение контейнера TrueCrypt

Есть такая программа, называется TrueCrypt. Она создает зашифрованный контейнер, в виде файла и подключает его как диск. Контейнер может быть защищен паролем или открываться ключем. В этих контейнерах очень удобно хранить важную информацию от посторонних или от вирусов. Контейнер подключается в виде буквы диска. Съемного или обычного, решать вам. Но, каждый раз вручную подключать контейнер, вводя пароль или подставляя файл с ключем — неудобно. Решено было написать скрипт на Autohotkey, который бы сам поключал и отлючал контейнер. При этом, программа не должна была выдавать себя, что она запускается.

Читать далее »

Популярность: 4%

Autohotkey

C# библиотека доступа к базе данных SQLite. Часть 1

Предисловие

Итак, после долгих мучений с различными базами данных, было решено написать что-то такое, что могло упростить разработку приложения, работающего с какой-либо базой данных. Я заметил, что в каждом моем проекте приходится писать одно и тоже, когда это касается получения, вставки и т.д. в базу. Разбирая ZEND FRAMEWORK наткнулся на готовый класс, который значительно упрощал доступ к данным, хранящихся в базе. Решение, конечно, не для кул-хацкеров, но для написания повседневных программ «для себя» и «для других» подходит. Это первая часть в цикле статей, в которых, шаг за шагом будем создавать класс, призванный помочь в решении поставленной задачи.

Читать далее »

Популярность: 100%

C#

Mageal LFS server watcher

Написал программу, для популяризации игрового сервера луганского провайдера Магеал по игре Live For Speed. Назначение программы: показывать текущее состояние сервера игры; текущая трасса; количество игроков на сервере. Информация подается в виде всплывающих сообщений и смены значка в трее.
Читать далее »

Популярность: 3%

Новости

C# показываем окно в фоне

В C# существует ограничение на задание режима показа окна. В Visual Studio в свойстве формы TopMost можно установить только два значения. При этом форма при появлении будет всегда активна. Т.е. переведет на себя фокус ввода. Например, такая ситуация: приложение «висит» в трее и показывает всплывающие окна, типа таких, которые показывает ICQ при получении сообщения. Если пользоваться стандартными возможностями .NET, то реализовать окно, которые не будет перехватывать фокус ввода, не получится. На помощь приходят старые знакомые функции WINAPI, которые выполняются с параметрами SW_SHOWNOACTIVATE и SWP_NOACTIVATE.

Читать далее »

Популярность: 26%

C#