Задача следующая — есть приложение написаное на Managed C++, которое должно работать в полноэкранном режиме 800х600.
Как средствами .NET переключить экранное разрешение в этот режим ?
25.04.07 15:23: Перенесено модератором из '.NET' — Хитрик Денис
Здравствуйте, <Аноним>, Вы писали:
А>Задача следующая — есть приложение написаное на Managed C++, которое должно работать в полноэкранном режиме 800х600.
А>Как средствами .NET переключить экранное разрешение в этот режим ?
точно также как и в C++

... << RSDN@Home 1.2.0 alpha rev. 676>>
Microsoft.Direct3D.Device device = ...;
PresentParameters presentParams = new PresentParameters();
presentParams.Windowed = false;
presentParams.SwapEffect = SwapEffect.Discard;
presentParams.BackBufferFormat = Format.A8R8G8B8;
presentParams.BackBufferCount = 1;
presentParams.BackBufferWidth = 640;
presentParams.BackBufferHeight = 480;
presentParams.PresentationInterval = PresentInterval.One;
device.Reset(presentParams);
... << RSDN@Home 1.2.0 alpha rev. 676>>
Здравствуйте, _Morpheus_, Вы писали:
_M_>_M_> Microsoft.Direct3D.Device device = ...;
_M_> PresentParameters presentParams = new PresentParameters();
_M_> presentParams.Windowed = false;
_M_> presentParams.SwapEffect = SwapEffect.Discard;
_M_> presentParams.BackBufferFormat = Format.A8R8G8B8;
_M_> presentParams.BackBufferCount = 1;
_M_> presentParams.BackBufferWidth = 640;
_M_> presentParams.BackBufferHeight = 480;
_M_> presentParams.PresentationInterval = PresentInterval.One;
_M_> device.Reset(presentParams);
_M_>
Дык, такой способ я знаю. Но интересуют все же средства именно дотнет. А привлекать к такой операции D3D или DDraw как-то не хочется
Здравствуйте, Sidorovich, Вы писали:
_M_>>_M_>> Microsoft.Direct3D.Device device = ...;
_M_>> PresentParameters presentParams = new PresentParameters();
_M_>> presentParams.Windowed = false;
_M_>> presentParams.SwapEffect = SwapEffect.Discard;
_M_>> presentParams.BackBufferFormat = Format.A8R8G8B8;
_M_>> presentParams.BackBufferCount = 1;
_M_>> presentParams.BackBufferWidth = 640;
_M_>> presentParams.BackBufferHeight = 480;
_M_>> presentParams.PresentationInterval = PresentInterval.One;
_M_>> device.Reset(presentParams);
_M_>>
S> Дык, такой способ я знаю. Но интересуют все же средства именно дотнет. А привлекать к такой операции D3D или DDraw как-то не хочется
что значит средства дотнет?
Вы знаете способ реализовать нормальный полноэкранный режим без DirectX?
... << RSDN@Home 1.2.0 alpha rev. 676>>
Здравствуйте, _Morpheus_, Вы писали:
_M_>что значит средства дотнет?
_M_>Вы знаете способ реализовать нормальный полноэкранный режим без DirectX?
Конечно

Используйте структуры DEVMODE
DEVMODE dmScreenSettings; // Device Mode
// Size Of The Devmode Structure
dmScreenSettings.dmSize = sizeof(dmScreenSettings);
dmScreenSettings.dmPelsWidth = width; // Selected Screen Width
dmScreenSettings.dmPelsHeight = height; // Selected Screen Height
dmScreenSettings.dmBitsPerPel = bits; // Selected Bits Per Pixel
dmScreenSettings.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
if(ChangeDisplaySettings(ref dmScreenSettings, User.CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL) {
// If The Mode Fails
...
}
Что-то подобное. В .NET это тоже должны быть где-нибудь. Даже если нет его, то mc++ позволяет использовать нативный код.