|
Battery Guard for Notebooks - использованные технологии
|
|
|
|
|
|
|
Размещение поверх всех окон
Окошко индикатора у нас получилось небольшое, поэтому не хотелось бы его прятать под другими окнами, а хотелось бы, наоборот, видеть его всегда.
Поэтому потребуем от окна, чтобы оно всегда располагалось поверх всех окон.
Теоретически, это очень просто:
Однако, практически, даже после установки этого атрибута окно периодически оказывается погребенным под другими.
Не понятно, с чем это связано, возможно, тут виноваты какие-то установленные приложения.
Для борьбы с этим явлением используем функцию BringToFront.
Опытным путем установлено следующее:
- Вызывать функцию надо до отрисовки индикатора, иначе окно оказывается пустым.
- Нельзя вызывать ее при каждой отрисовке, т.к. при этом гаснет меню.
Вот что получается в итоге:
// Переносим наверх, т.к. иногда уходит вниз.
// Делаем это не всегда, т.к. при этом гаснет меню.
if (DateTime.Now.Ticks / 10000000 - BattGuardMain.m_lMenuShow > 10)
BringToFront();
|
m_lMenuShow - время открытия меню.
Более подробную информацию обо всех использованных классах и их свойствах можно найти в MSDN.
Если есть что добавить или есть вопросы - почта и мой блог (записи с тегом "статьи") к Вашим услугам.
Alex Konuhoff.
|
|
|
|