public Display(Application application, WinApi.WndProc proc, DisplayStyle style) { m_application = application; m_instance = WinApi.GetModuleHandle(null); m_windowProc = new WinApi.WndProc(proc); m_className = "GRANITE_" + Guid.NewGuid().ToString("N"); WinApi.WindowClass wc = new WinApi.WindowClass() { style = WinApi.CS_OWNDC | WinApi.CS_VREDRAW | WinApi.CS_HREDRAW, windowProcedure = Marshal.GetFunctionPointerForDelegate(m_windowProc), instance = m_instance, cursor = WinApi.LoadCursor(IntPtr.Zero, WinApi.IDC_ARROW), className = m_className }; WinApi.RegisterClass(ref wc); uint s = WinApi.WS_POPUP; switch (style) { case DisplayStyle.Fixed: s = WinApi.WS_BORDER; break; case DisplayStyle.FixedWithTitle: s = WinApi.WS_CAPTION | WinApi.WS_SYSMENU; break; case DisplayStyle.Resizeable: s = WinApi.WS_POPUP | WinApi.WS_THICKFRAME; break; case DisplayStyle.ResizeableWithTitle: s |= WinApi.WS_CAPTION | WinApi.WS_SYSMENU | WinApi.WS_THICKFRAME | WinApi.WS_MINIMIZEBOX | WinApi.WS_MAXIMIZEBOX; break; } m_handle = WinApi.CreateWindowEx( 0, m_className, "", s, 0, 0, 800, 600, IntPtr.Zero, IntPtr.Zero, m_instance, IntPtr.Zero ); m_deviceContext = WinApi.GetDC(m_handle); }
public void Invalidate() { WinApi.InvalidateRect(m_handle, IntPtr.Zero, false); }
public void Hide() { WinApi.ShowWindow(m_handle, WinApi.SW_HIDE); }
public void Show() { WinApi.ShowWindow(m_handle, WinApi.SW_SHOW); }
protected override void InternalDispose() { WinApi.ReleaseDC(m_handle, m_deviceContext); WinApi.DestroyWindow(m_handle); WinApi.UnregisterClass(m_className, m_instance); }
public void SetTitle(string title) { WinApi.SetWindowText(m_handle, title); }