Top.Mail.Ru
Ответы
Аватар пользователя
12лет
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Microsoft Visual Studio 2010 с компонентом C++ Windows Form

В настоящее время работаю с Microsoft Visual Studio 2010 с компонентом C++ Windows Form, задался одним интересным для меня вопросом.
Вся суть заключается в том, что существует две формы (Form1 и Form2). В Form1 основной функционал программы (не важно какой) и на этой форме существует 1 кнопка, при нажатии на которую открывается Form2 - это элементарщина, при этом, Form2 открывается на весь экран и закрыть эту форму путём нажатия на [x] - невозможно, по умолчанию Esc так же не работает - это всё реализовано.
Но вот как запретить использование (закрытие путём) Alt+F4, Win+Tab, Alt+Tab, Ctrl+Alt+Del - это и есть мой вопрос. Пробовал полистать гугл, но на нашёл нужного варианта решения.

По дате
По рейтингу
Аватар пользователя
Новичок
12лет

> Пробовал полистать гугл
Вот странно. У вас наверно какой-то другой гугл?
Первое, что нашлось: http://www.sources.ru/cpp/system/ctrl_alt_del_winxp.shtml
Причем на первой странице поиска, причем на русском языке.
Windows Forms тут не причем -- это все делается при помощи WinAPI.
На всякий случай проверил, в приложении c WinForms (там С++ в связке с .NET фреймворком) .
Работает. Единственное, что нужно сделать, это в опциях проекта С++ -> Common Language RunTime Support, утстановить /clr, вместо /clr:pure, /clr:safe или чего-нибудь другого.

Аватар пользователя
Просветленный
12лет

вторую форму лучше не через конструктор форм создавать, а программно, гед сразу прописываешь нужные свойства, и объявить ее в качестве модального диалога, только надо еще первую форму указать в качестве parenform, и собственно все клавиши перехватывай по событию OnKeyDown или OnKeyPress, причем все которые нужны, а не изобретая для отдельных ккнопок костыли костыли :)

а можно перехватывать клавиши в обход winforms если напрямую обратится к winapi, написав dll которая перехватывать будет любые нажатия клавишь :)