Как я могу изменить класс окна окна win32 после создания? Я спрашиваю из любопытства, потому что с помощью Spy++ я обнаружил, что один из этих причудливых инструментов для настройки рабочего стола от Stardock делает именно это.
Отказ от ответственности (к сожалению, необходимый в наши дни): я искал документацию и ничего не нашел. Я знаю, что это, вероятно, не предназначено для выполнения, может вызвать множество странных побочных эффектов и не должно выполняться в рабочем приложении. Тем не менее, я хотел бы знать, как они это провернули.
Редактировать: предыстория может быть интересной.
Я играл с ModernMix от Stardock, который позволяет вам использовать приложения Metro/Modern/Windows Store на рабочем столе в оконном режиме, и я хотел выяснить, как они это делают. Я быстро обнаружил, что современные приложения просто работают в обычных полноэкранных окнах Win32! На самом деле вы можете изменить стили окна, чтобы развернуть его и дать ему заголовок и т. Д. Однако по крайней мере одна вещь не работает: вы не можете использовать аэродинамическую привязку к окну и горячий край в верхней части экрана. по-прежнему рассматривает окно как современное приложение. В ModernMix этой проблемы нет, поэтому я искал разницу.
Я постоянно отображал в своем приложении различную отладочную информацию, включая HWND, стили окон, а также исследовал окно с помощью Spy++. Оказывается, когда ModernMix разворачивает окно, его класс «меняется» с Windows.UI.Core.CoreWindow на Windows.UI.Core.CoreFramedWindow. Однако HWND, отображаемый в моем окне, не изменился! Итак, я ошибочно заключил, что ModernMix избавляется от особого поведения окна, изменяя класс... Но оказывается, ModernMix просто создает еще один верхний уровень и каким-то образом перенаправляет содержимое исходного окна на новый верхний уровень (по крайней мере, так оно выглядит). нравится).
(Я все еще оставляю вопрос здесь, хотя бы как ссылку на то, что это невозможно.)
WndProc
, но сам класс не изменится. - person Jonathan Potter   schedule 19.02.2014