Возможно ли создать маску для рабочего стола при работе приложения в окне?
============================================================================

 Здравствуйте!  

Извиняюсь за возможно идиотский вопрос. На данный момент только начал изучение C++. Работаю исключительно в консольной среде. Исчерпывающую информацию для начинающих получаю в достаточном количестве, но некоторые вещи, которые меня интересуют находятся пока за пределами моего понимания. И очень хотелось бы получить больше направление или примеры, чем конкретные ответы (хотя от последних я тоже не откажусь).   

Интересует возможность создания не интерактивной (до определенного момента) маски для рабочего стола. В перспективе хочется сначала написать обычную текстовую игру не большого размера и продолжительности в консоли, при этом задействовав всю остальную область экрана в нужный момент. Вывести в эту область локализированные изображения, 2D анимацию и в целом завершить приложение этим действом, с возможностью вывода так же и звука.  

Это возможно при использовании консоли или нужно создать классическое приложение для Windows, имитировать в нём консоль и уже потом вводить все нужные функции? И есть ли примеры, которые не имитируют окно, при этом находясь в полной развёртке, а именно задействуют рабочий стол или вообще всё что выведено на экран за пределами активного окна?  

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

 Вам придется работать с winapi.  

  

Вам нужно создать прозрачное окно и рисовать в него то, что идет поверх рабочего стола (гуглите "winapi draw in transparent window").   

  

Чтобы не рисовать поверх каких-то окон - надо в каком-то битмапе нарисовать черным цветом силуэты всех этих окон (надо все окна в системе перебрать - тут вам помогут всякие всякие GetWindowRect, EnumWindows, IsWindowVisible.). И при проприсовке надо этот битмап брать как маску (гуглите "winapi clip region").  

  

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