Diskuze: konzolová aplikace ve fullscreenu
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Tvůrce
Zobrazeno 30 zpráv z 30.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
using System;
using System.Runtime.InteropServices;
namespace ConsoleApplication1
{
class Program
{
[DllImport("kernel32.dll", ExactSpelling = true)]
private static extern IntPtr GetConsoleWindow();
private static IntPtr ThisConsole = GetConsoleWindow();
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
private const int HIDE = 0;
private const int MAXIMIZE = 3;
private const int MINIMIZE = 6;
private const int RESTORE = 9;
static void Main(string[] args)
{
Console.SetWindowSize(Console.LargestWindowWidth, Console.LargestWindowHeight);
ShowWindow(ThisConsole, MAXIMIZE);
Console.WriteLine("Hello World in Full Screen!");
Console.ReadLine();
}
}
}
Error 2 The type or namespace name 'DllImport' could not be found (are you missing a using directive or an assembly reference?)
néé můj tajnej projekt byl prozrazen
Jsem ti to umázl a je dobré poslat zdroják
Máš v using toto:
using System.Runtime.InteropServices;
?
ještě jsem se na to koukal že to tam nesmím zapomenout dát
jede tak napůl,maximalizuje se to ale není to ve fullscreenu :/
No s parametry
Console.SetWindowSize
Není co bych dodal,... Ještě to přeložím Konzole.NastavOknoVelikost - tedy nastav velikost okna konzole,...
Console.LargestWindowWidth
Je maximální šířka okna - tedy stačí k tomu něco málo příčíst - asi 1 - totéž k max height a je to - tedy asi bude třeba upravit pozici - a pak přičíst asi 2 k oboum parametrům,...
Jak he? Co víc chceš?
using System;
using System.Runtime.InteropServices;
namespace ConsoleApplication1
{
class Program
{
[DllImport("kernel32.dll", ExactSpelling = true)]
private static extern IntPtr GetConsoleWindow();
private static IntPtr ThisConsole = GetConsoleWindow();
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
private const int HIDE = 0;
private const int MAXIMIZE = 3;
private const int MINIMIZE = 6;
private const int RESTORE = 9;
static void Main(string[] args)
{
Console.SetWindowSize(Console.LargestWindowWidth + Nějaké číslo - typuji 2, Console.LargestWindowHeight + nějaké číslo - typuji 3);
ShowWindow(ThisConsole, MAXIMIZE);
Console.WriteLine("Hello World in Full Screen!");
Console.ReadLine();
}
}
}
Peostě si s těmi čísli hraj, dokud to nedá fullscreen,...
no to jsem pochopil,ale jk mám vědět jaký monitor bude mít uživatel ?
Proto je tam Console.LargestWindowWidth to largest obou paramatrů - Width a Height se postará o zjištění rozlišení - tedy tato aplikace - ta původní se vždy maximalizuje - no a když k tomu přidáš nějaké o´hodnoty, tak zmizí i rámy - skutečný fullscreen se dělá úplně stejně - změnou velikosti okna,...
No jo - úplně jsi mne zmátl - nech si původní návrh - beze změn - tedy
using System;
using System.Runtime.InteropServices;
namespace ConsoleApplication1
{
class Program
{
[DllImport("kernel32.dll", ExactSpelling = true)]
private static extern IntPtr GetConsoleWindow();
private static IntPtr ThisConsole = GetConsoleWindow();
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
private const int HIDE = 0;
private const int MAXIMIZE = 3;
private const int MINIMIZE = 6;
private const int RESTORE = 9;
static void Main(string[] args)
{
Console.SetWindowSize(Console.LargestWindowWidth, Console.LargestWindowHeight);
ShowWindow(ThisConsole, MAXIMIZE);
Console.WriteLine("Hello World in Full Screen!");
Console.ReadLine();
}
}
}
Konzoli není možné hodit do fullscreenu - jen ji lze maximalizovat - což umí ten kód hoře - umí:
private const int HIDE = 0; - skrýt
private const int MAXIMIZE = 3; - maximizace
private const int MINIMIZE = 6; - minimizace
private const int RESTORE = 9; obnovení
Jak jsi tam hodil alt + enter v hlavě se mi to přehodilo na DosBox - který je konzoli hodně podobný - ten fullscreenovat jde - konzole nikoliv.
Jestli se ti bude chtít - udělej to v grafickém módu - winform application či wpfapplication. Tam dej dockovat textbox - nastav mu černé pozadí a fullscreen nastavíš:
http://www.dreamincode.net/…ppet2541.htm
Přepracováno - hoď toto jako funkci - tedy ne do nějaké metody - ale do třídy:
struct clientRect
{
public Point location;
public int width;
public int height;
}
clientRect restore;
A pak do metody:
this.restore.location = this.Location;
this.restore.width = this.Width;
this.restore.height = this.Height;
this.TopMost = true;
this.Location = new Point(0, 0);
this.FormBorderStyle = FormBorderStyle.None;
this.Width = Screen.PrimaryScreen.Bounds.Width;
this.Height = Screen.PrimaryScreen.Bounds.Height;
Nebo použít XNA Ale obecně je fullscreen až na výjimky ve Windows blbost, proto ho také nativně nijak nepodporují.
V čem je běžný? Windows se jmenují Windows proto, že programy běží v oknech. Okno je maximálně maximalizované, nikoli ve fullscreenu, protože to odporuje návrhu systému. Ve fullscreenu běží pouze hry, maximálně videopřehrávače.
No právě - hry a video přehravače - ty se používají běžně,... Navíc podle tvé definice - existuje snad OS, kde se fullscreen používá více?
Ano, ale Dan dělá Windows Forms aplikaci (nebo přesněji dokonce konzolovou) a tam je prostě fullscreen blbost. Hry jsou jiný typ aplikací, kde se používá DirectX a ten je pro fullscreen navržený.
Fullscreenové OS jsou ty singletaskingové, býval to např. DOS. Naštěstí jsou ty doby již za námi.
Zobrazeno 30 zpráv z 30.