From 0a552e395477d2bb4c90e12624d11b28545a4933 Mon Sep 17 00:00:00 2001 From: AShifter Date: Sun, 24 Sep 2017 13:56:11 -0600 Subject: Update WM It's pretty much done. Pair with DE, and serve hot. --- ShiftOS.Engine/WindowManager/ShiftWM.cs | 25 ++++++++++------------ .../WindowManager/ShiftWindow.Designer.cs | 25 ++++++++++++---------- ShiftOS.Engine/WindowManager/ShiftWindow.cs | 24 +++++++++++++++++++++ 3 files changed, 49 insertions(+), 25 deletions(-) (limited to 'ShiftOS.Engine/WindowManager') diff --git a/ShiftOS.Engine/WindowManager/ShiftWM.cs b/ShiftOS.Engine/WindowManager/ShiftWM.cs index 373a87b..d30224c 100644 --- a/ShiftOS.Engine/WindowManager/ShiftWM.cs +++ b/ShiftOS.Engine/WindowManager/ShiftWM.cs @@ -1,12 +1,11 @@ -using System.Windows.Forms; +using System.Drawing; +using System.Windows.Forms; namespace ShiftOS.Engine.WindowManager { public class ShiftWM { - public static System.Drawing.Text.PrivateFontCollection pfc = new System.Drawing.Text.PrivateFontCollection(); - - public ShiftWindow Init(UserControl content, string title, bool ShowAsInfobox = false, bool resize = true) + public ShiftWindow Init(UserControl content, string title, Image icon, bool ShowAsInfobox = false, bool resize = true) { // Setup Window ShiftWindow app = new ShiftWindow(); @@ -15,21 +14,19 @@ namespace ShiftOS.Engine.WindowManager app.Width = content.Width + app.left.Width + app.right.Width; app.Height = content.Height + app.bottom.Height + app.top.Height; - // Setup UC - content.Parent = app.programContent; - content.BringToFront(); - content.Dock = DockStyle.Fill; - - // Check if icon is null (NYI) - /* + // Icon Setup if (icon == null) { app.programIcon.Hide(); - app.programIcon.Image = Engine.Properties.Resources.nullIcon; - app.Title.Location = new Point(2, 1); + app.programIcon.Image = Properties.Resources.nullIcon; + app.Title.Location = new Point(2, 7); } else app.programIcon.Image = icon; - */ + + // Setup UC + content.Parent = app.programContent; + content.BringToFront(); + content.Dock = DockStyle.Fill; app.Show(); return app; } diff --git a/ShiftOS.Engine/WindowManager/ShiftWindow.Designer.cs b/ShiftOS.Engine/WindowManager/ShiftWindow.Designer.cs index dacc931..197c659 100644 --- a/ShiftOS.Engine/WindowManager/ShiftWindow.Designer.cs +++ b/ShiftOS.Engine/WindowManager/ShiftWindow.Designer.cs @@ -29,6 +29,7 @@ private void InitializeComponent() { this.program = new System.Windows.Forms.Panel(); + this.programContent = new System.Windows.Forms.Panel(); this.bottomleftcorner = new System.Windows.Forms.Panel(); this.toprightcorner = new System.Windows.Forms.Panel(); this.bottomrightcorner = new System.Windows.Forms.Panel(); @@ -42,7 +43,6 @@ this.closebutton = new System.Windows.Forms.PictureBox(); this.right = new System.Windows.Forms.Panel(); this.left = new System.Windows.Forms.Panel(); - this.programContent = new System.Windows.Forms.Panel(); this.program.SuspendLayout(); this.top.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.programIcon)).BeginInit(); @@ -69,6 +69,14 @@ this.program.Size = new System.Drawing.Size(284, 261); this.program.TabIndex = 11; // + // programContent + // + this.programContent.Dock = System.Windows.Forms.DockStyle.Fill; + this.programContent.Location = new System.Drawing.Point(4, 30); + this.programContent.Name = "programContent"; + this.programContent.Size = new System.Drawing.Size(276, 227); + this.programContent.TabIndex = 11; + // // bottomleftcorner // this.bottomleftcorner.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); @@ -130,6 +138,7 @@ this.top.Name = "top"; this.top.Size = new System.Drawing.Size(276, 30); this.top.TabIndex = 0; + this.top.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Programtopbar_drag); // // programIcon // @@ -166,13 +175,14 @@ // this.Title.AutoSize = true; this.Title.BackColor = System.Drawing.Color.Transparent; - this.Title.Font = new System.Drawing.Font("Tahoma", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Title.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.Title.ForeColor = System.Drawing.Color.White; this.Title.Location = new System.Drawing.Point(25, 8); this.Title.Name = "Title"; - this.Title.Size = new System.Drawing.Size(106, 14); + this.Title.Size = new System.Drawing.Size(98, 13); this.Title.TabIndex = 3; this.Title.Text = "Application Title"; + this.Title.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Programtopbar_drag); // // closebutton // @@ -183,6 +193,7 @@ this.closebutton.Size = new System.Drawing.Size(21, 21); this.closebutton.TabIndex = 4; this.closebutton.TabStop = false; + this.closebutton.Click += new System.EventHandler(this.closebutton_Click); // // right // @@ -203,14 +214,6 @@ this.left.Size = new System.Drawing.Size(4, 261); this.left.TabIndex = 1; // - // programContent - // - this.programContent.Dock = System.Windows.Forms.DockStyle.Fill; - this.programContent.Location = new System.Drawing.Point(4, 30); - this.programContent.Name = "programContent"; - this.programContent.Size = new System.Drawing.Size(276, 227); - this.programContent.TabIndex = 11; - // // ShiftWindow // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); diff --git a/ShiftOS.Engine/WindowManager/ShiftWindow.cs b/ShiftOS.Engine/WindowManager/ShiftWindow.cs index 6f9c90d..9caaa6c 100644 --- a/ShiftOS.Engine/WindowManager/ShiftWindow.cs +++ b/ShiftOS.Engine/WindowManager/ShiftWindow.cs @@ -7,6 +7,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; +using System.Runtime.InteropServices; namespace ShiftOS.Engine.WindowManager { @@ -16,5 +17,28 @@ namespace ShiftOS.Engine.WindowManager { InitializeComponent(); } + public const int WM_NCLBUTTONDOWN = 0xA1; + public const int HT_CAPTION = 0x2; + + [DllImportAttribute("user32.dll")] + public static extern int SendMessage(IntPtr hWnd, + int Msg, int wParam, int lParam); + [DllImportAttribute("user32.dll")] + public static extern bool ReleaseCapture(); + + private void Programtopbar_drag(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) + { + ReleaseCapture(); + SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0); + } + } + + private void closebutton_Click(object sender, EventArgs e) + { + this.Close(); + } + } } -- cgit v1.2.3