コード例 #1
0
ファイル: Display.cs プロジェクト: nicolas-repiquet/Granite
        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);
        }
コード例 #2
0
 public void Invalidate()
 {
     WinApi.InvalidateRect(m_handle, IntPtr.Zero, false);
 }
コード例 #3
0
 public void Hide()
 {
     WinApi.ShowWindow(m_handle, WinApi.SW_HIDE);
 }
コード例 #4
0
 public void Show()
 {
     WinApi.ShowWindow(m_handle, WinApi.SW_SHOW);
 }
コード例 #5
0
 protected override void InternalDispose()
 {
     WinApi.ReleaseDC(m_handle, m_deviceContext);
     WinApi.DestroyWindow(m_handle);
     WinApi.UnregisterClass(m_className, m_instance);
 }
コード例 #6
0
 public void SetTitle(string title)
 {
     WinApi.SetWindowText(m_handle, title);
 }