diff --git a/Histacom2.Engine/Template/WinXP.cs b/Histacom2.Engine/Template/WinXP.cs index 86b222e..cf6640b 100644 --- a/Histacom2.Engine/Template/WinXP.cs +++ b/Histacom2.Engine/Template/WinXP.cs @@ -16,6 +16,7 @@ public partial class WinXP : Form public WinXP() { InitializeComponent(); + DoubleBuffered = true; } private void WinXP_Load(object sender, EventArgs e) diff --git a/Histacom2.Engine/WindowManager.cs b/Histacom2.Engine/WindowManager.cs index 4f4951c..ca0c782 100644 --- a/Histacom2.Engine/WindowManager.cs +++ b/Histacom2.Engine/WindowManager.cs @@ -36,11 +36,6 @@ public WinClassic Init(UserControl content, string title, Image icon, bool MaxBu app = new WinClassic(); break; } - case "XP": - { - // app = new WinXP(); - break; - } default: { app = new WinClassic(); @@ -111,9 +106,69 @@ public WinClassic Init(UserControl content, string title, Image icon, bool MaxBu return app; } - // A THING TM + public WinXP InitXP(UserControl content, string title, Image icon, bool MaxButton, bool MinButton, bool ShowApplicationAsDialog = false, bool resize = true) + { + WinXP app = new WinXP(); + + app.Text = title; + app.programname.Text = title; + app.Width = content.Width + 8; + app.Height = content.Height + 26; + // Initialize Font + pfc.AddFontFile(SaveSystem.GameDirectory + "\\Data\\LeviWindows.ttf"); + Font fnt = new Font(pfc.Families[0], 16F, FontStyle.Regular, GraphicsUnit.Point, ((0))); + app.fnt = fnt; + app.Title.Font = new Font(pfc.Families[0], 16F, FontStyle.Bold, GraphicsUnit.Point, ((0))); + // Setup UC + content.Parent = app.programContent; + content.BringToFront(); + content.Dock = DockStyle.Fill; + app.progContent = content; - // A THING TM + // Check if icon is null + if (icon == null) + { + app.programIcon.Hide(); + app.programIcon.Image = Engine.Properties.Resources.nullIcon; + app.programname.Location = new Point(2, 1); + } + else app.programIcon.Image = icon; + + // Check if Max button is enabled and set proper X for Min button + if (MaxButton == false) + { + app.maximizebutton.Visible = false; + app.minimizebutton.Location = new Point(app.closebutton.Location.X - 14, app.minimizebutton.Location.Y); + } + + // Check if Min button is enabled + if (MinButton == false) + { + app.minimizebutton.Visible = false; + app.minimizebutton.Location = new Point(app.minimizebutton.Location.X, app.minimizebutton.Location.Y); + } + + //Resize + app.resizable = resize; + + // Convert an image to an icon (for the taskbar) + if (icon != null) + { + Bitmap theBitmap = new Bitmap(icon, new Size(icon.Width, icon.Height)); + IntPtr Hicon = theBitmap.GetHicon(); // Get an Hicon for myBitmap. + Icon newIcon = Icon.FromHandle(Hicon); // Create a new icon from the handle. + app.Icon = newIcon; + } + + // Set some values (for the taskbar) + app.Tag = TaskBarController.AvalibleApplicationID; + app.Text = title; + + // Show the app + app.TopMost = true; + if (ShowApplicationAsDialog == false) { app.Show(); } else { app.ShowDialog(); } + return app; + } public WinClassic StartInfobox95(string title, string text, InfoboxType type, InfoboxButtons btns) { diff --git a/Histacom2/OS/WinXPBad/Story/Hack4.cs b/Histacom2/OS/WinXPBad/Story/Hack4.cs index 1abd811..2a9bcd7 100644 --- a/Histacom2/OS/WinXPBad/Story/Hack4.cs +++ b/Histacom2/OS/WinXPBad/Story/Hack4.cs @@ -15,8 +15,7 @@ public class Hack4 : object public static async void StartObjective() { Win95.Win95Apps.WinClassicTerminal Console = new Win95.Win95Apps.WinClassicTerminal(true); - Random r = new Random(); - WinClassic app = wm.Init(Console, "MS-DOS Prompt", null, true, true); + WinXP app = wm.InitXP(Console, "MS-DOS Prompt", null, true, true); } } }