コード例 #1
0
        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 SetCursor(Cursor cursor)
 {
     if (cursor == Cursor.None)
     {
         WinApi.SetCursor(IntPtr.Zero);
         WinApi.SetClassLong(m_handle, WinApi.GCL_HCURSOR, 0);
     }
     else
     {
         var c = WinApi.LoadCursor(IntPtr.Zero, (uint)cursor);
         WinApi.SetCursor(c);
         WinApi.SetClassLong(m_handle, WinApi.GCL_HCURSOR, (uint)c);
     }
 }