Змінити системне меню
Багато хто, напевно, вже замислювався над тим, як же внести зміни до системного меню. Приклад ви бачите, що кнопка закриття вікна неактивна. До того ж, команда "Закрити" взагалі відсутня в системному меню. Системне меню викликається клацанням на іконці вікна або Alt+Space.
Якщо ви напишіть наступний код створення вікна (подія OnCreate), то зможете самі у цьому переконатися.
Оголошуємо змінну типу HMENU. Отримуємо дескриптор свого системного меню та поміщаємо його у змінну:
Отримати дескриптор дозволяє функцію GetSystemMenu(). Їй як параметр вказуємо ключове слово Handle – воно вказує, що буде отримано дескриптор нашого системного меню. Другий параметр, рівний false, означає, що значення, що повертається функцією, буде не нульове, а рівне дескриптору меню вікна.
Функція DeleteMenu дозволяє видалити пункт меню. Спочатку їй вказуємо дескриптор меню - hMenuHandle, потім (SC_CLOSE) значення, що ідентифікує пункт меню, яке може набувати наступних значень:
sc_close "Закрити", sc_move "Перемістити", sc_size "Розмір", sc_minimize "Згорнути", sc_maximize "Розгорнути"
Останній параметр (MF_BYCOMMAND) означає, що попередній параметр дає ідентифікатор пункту меню. Якби попередній параметр вказував на положення пункту меню, що відраховується від нуля, тоді ми написали б MF_BYPOSITION.
Ось тепер ви можете сміливо змінювати наявність та активність того чи іншого пункту системного меню! Плюс до того, якщо ви дбаєте про наявність та активність кнопок на заголовній смузі, що відповідають пунктам меню, то можете поекспериментувати з властивостями вікна BorderStyle & BorderIcons.