Новые книги

Что такое блокчейн? Что такое криптовалюта? Что такое приватный ключ и публичный адрес? Что такое майнинг? Что такое крипто кошельки? Что такое форк? Можно ли убить блокчейн? Куда инвестировать?

Ответы на эти и другие вопросы вы найдете в данной книге. Чтение не займет много времени и заполнит необходимой информацией пробел в вашем криптообразовании.

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

Узнайте о блокчейне за 60 минут!
Книга адресована собственникам и первым лицам малого и владельцам среднего бизнеса, самозанятым людям, а также всем, кто, «не вникая в технические детали», хочет максимально обезопасить себя, свой бизнес и свой ближний круг.

Практическое пособие представляет собой простые и эффективные советы от квалифицированных профессионалов в области ИТ-безопасности с многолетним опытом работы в бизнесе.

Книга для вас, если вы хотите знать, как исключить такие точки уязвимости, как:

– телефон, айфон, планшет,

– онлайн-банкинг,

– пластиковые карты,

– партнеры, коллеги, персонал,

– офис и дом,

– автомобиль,

– а также узнать, как повлияет на ваш бизнес «Пакет Яровой», кибер-казаки и «русские хакеры».

Информация преподнесена в легкой доступной форме, отрецензирована и дополнена мнениями квалифицированных специалистов, такими как: руководитель сектора «Информационная безопасность» AT Consulting, глава представительства Avast в России и СНГ, консультант по безопасности Check Point Software Technologies, исполнительный директора Robokassa и IT-консультант ФБК.

Бонусы книги: ссылки на специализированные и художественные источники информации по ИТ-безопасности, советы по медиа-стратегии и поведению в публичном поле после того, как вас уже «взломали», а также ссылки на интимные фото звезд исключительно для привлечения внимания к содержанию книги.

Подключение меню к окну

Подключение меню к окну

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

Давайте представим себе главное меню программы как древовидную структуру. Основная часть - корень нашего дерева - это непосредственно главное меню. Само по себе оно представляет только структуру в памяти, не отображается на экране, не содержит ни одного элемента, но хранит указатель на список структур, описывающих подключаемые к нему элементы и всплывающие (popup) меню. В свою очередь, popup-меню должно указать на список структур очередного, более низкого уровня и т.д. Конечные элементы меню никаких указателей на списки не имеют, но хранят некий идентификатор действия (назовем его идентификатором элемента меню), которое должна произвести программа при выборе данного элемента меню. Используя эти структуры, мы можем построить меню практически любой глубины и сложности.

Эта многоуровневая древовидная структура описывается в файле ресурсов. Описание меню имеет вид:

MenuName  MENU  [параметры] ; это - главное меню
{
  Описание всех popup-меню и элементов меню второго уровня
}
В данном случае MenuName - это имя создаваемого нами меню. Слово MENU обозначает начало определения меню.

В Win32 API для описания меню существуют два ключевых слова. Первое - POPUP - специфицирует всплывающее меню. Второе - MENUITEM - описывает обычный элемент меню.

Всплывающие меню описывается следующим образом:

POPUP  "Имя"  [,параметры]  ; описание popup-меню
{
  Описание всех popup-меню и элементов очередного уровня
}
У конечного элемента меню в его описании есть еще одна характеристика - тот самый идентификатор действия:
MENUITEM  "Имя",  MenuID  [,параметры]
В обоих случаях "Имя" - это тот текст, который будет выведен на экран при отображении меню (обратите внимание - при описании главного меню выводимого на экран текста нет!). В том случае, когда вместо имени окна записано слово SEPARATOP (без кавычек!), на месте элемента меню появляется горизонтальная линия. Обычно эти горизонтальные линии (сепораторы или разделители) используются для разделения элементов подменю на логические группы (логика определяется только программистом и никаких особенностей не содержит).

Если в имени меню встречается символ "&", то следующий за амперсандом символ на экране будет подчеркнут одинарной чертой. Этот элемент меню можно будет вызывать с клавиатуры посредством одновременного нажатия клавиши Alt и подчеркнутого символа.

MenuID - идентификатор действия. Он может быть передан функции окна, содержащего меню. Значение идентификатора определяется пользователем. Функция окна в зависимости от полученного MenuID производит определенные действия.

Параметры же описывают способ появления элемента на экране. Возможные значения параметров приведены в таблице:

Параметры, описывающие элемент меню в файле ресурсов

Флаг Значение
CHECKEDРядом с именем элемента может отображаться небольшой значек, говорящий о том, что соответствующий флаг установлен
ENABLEDЭлемент меню доступен
DISABLEDЭлемент меню недоступен, но отображается как обычный
GRAYEDЭлемент меню недоступен и отображается серым цветом
MENUBREAKГоризонтальные меню размещают следующие элементы в новой строке, а вертикальные - в новом столбце
MENUBARBREAKТо же, что и предыдущее, но в случае вертикального меню столбцы разделяются вертикальной линией

Попробуем создать описание небольшого меню. Горизонтальное меню (menubar) позволит выбирать подменю "File", "Examples" и конечный элемент "Help". Подменю "File" будет содержать элементы "Open" и "Exit", разделенные горизонтальной линией, а подменю "Examples" - несколько конечных элементов.

Ниже приведен текст скрипта для этого меню:

  MyMenu MENU
   {
     POPUP "&File"
      {
        MENUITEM "&Open", 101
        MENUITEM SEPARATOR
        MENUITEM "E&xit", 102
      }
     POPUP "&Examples"
      {
        POPUP "Example 1"
         {
           MENUITEM "1&1", 103
           MENUITEM "1&2", 104
         }
        POPUP "Example 2"
         {
           MENUITEM "2&1", 105
           MENUITEM "2&2", 106
         }
      }
     MENUITEM "&Help", 111
   }
Следует обратить внимание на то, что идентификаторы действия есть только у MENUITEM'ов. Popup-меню идентификаторов не содержит.