// CDS_TEST = '0x02'
// CDS_FULLSCREEN = '0x04'
// GWL_STYLE = '-16'
...
if (fullmode1 == false) // Переделываем окно в режим 'FullScreen' - Тут всё нормально.
{
...
SetWindowLong((IntPtr)hWnd2, (-16), 0x10000000); // WS_VISIBLE = '0x10000000'
DEVMODE dm = new DEVMODE();
dm.dmBitsPerPel = Convert.ToSByte(CD);
dm.dmPelsWidth = CorX;
dm.dmPelsHeight = CorY;
dm.dmDisplayFrequency = RR;
if (ChangeDisplaySettings(ref dm, 0x02 | 0x04) != 0) ChangeDisplaySettings(ref dm, 0x04);
MoveWindow((IntPtr)hWnd2, 0, 0, CorX, CorY, true);
SetForegroundWindow(hWnd2);
...
}
else // Переделываем окно в режим 'WindowMode' - Тут всё нормально.
{
...
SetWindowLong((IntPtr)hWnd2, (-16), 0x00000000 | 0x10000000 | 0x00C00000 | 0x00040000 | 0x00080000);
MoveWindow((IntPtr)hWnd2, 0, (-13), CorX + 5, CorY + 10, true);
SetWindowPos((IntPtr)hWnd2, (IntPtr)(-1), 0, (-13), CorX + 5, CorY + 10, 0x0001 | 0x0040);
SetForegroundWindow(hWnd2);
...
}
......
if (fullmode2 == true)
{
if (IsWindowVisible(hWnd2) != 0) // Сворачиваем окно - [color=blue]вот тут проблема![/color]
{
// SWP_NOACTIVATE = '0x0010'
// SWP_HIDEWINDOW = '0x0080'
// SWP_FRAMECHANGED = '0x0020'
SetWindowPos((IntPtr)hWnd2, (IntPtr)1, 0, (-13), CorX + 5, CorY + 10, 0x0010 | 0x0080 | 0x0020);
}
else // Разворачиваем окно - Тут всё нормально.
{
// SWP_NOSIZE = '0x0001'
// SWP_SHOWWINDOW = '0x0040'
SetWindowPos((IntPtr)hWnd2, (IntPtr)(-1), 0, (-13), CorX + 5, CorY + 10, 0x0001 | 0x0040);
SetForegroundWindow(hWnd2);
}
}
...
[VC#] Работа с окнами - Стили, визуал.эфф... (Работа с чужими окнами)
# Задача: Написать программу, которая будет перехватывать клавиши и при нажатие на клавишу 'F11' - менять режим окна 'FullScreen' <> 'WindowMode'; 'F12' - Show/Hide окно игры.
# Решение: Перехват клавиш я осуществил, проблема заключается в другом: Если изначально запускать игру в режиме 'WindowMode', то если скрыть('Hide') игру('F12'), можно свободно работать с другими приложениями, то есть всё отлично работает, но если изначально запустить игру в режиме 'FullScreen', затем скрыть('Hide') игру и попытаться нажать куда-либо вне окна, то окно тут же разворачивается(3 раза так и игра закрывается). Как решить проблему не знаю, уже достаточно много наигрался и начитался, решить не могу. (Пробовал играться и с SetWindowPos и т.д. не помогает, или я что-то не понимаю и, следовательно, не доделываю)
Код:
А с чего ты взял, что например у Direct3D приложения работающего в Fullscreen есть окно которое можно ресайзить. Насколько можно судить например по играм в которых есть возможность переключаться в окно из Fullscreen и обратно, эта операция реализована реинициализацией устройства Direct3D, и полным перестроением текущей сцены на новом.
#2, DaemonDZK - Вы не могли бы более развёрнуто написать + напривить немного, чтобы знал хоть где и что искать в google =)