Skip to content

Implement first draft of Control.InvokeAsync, MessageBox.ShowAsync an… #9827

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
fdc6bea
First draft of DarkMode implementation.
KlausLoeffelmann Aug 23, 2022
3b0e27f
First draft of Darkmode for ToolStrips.
KlausLoeffelmann Aug 30, 2022
4e8fe33
Fix merge issues.
KlausLoeffelmann Jul 17, 2023
d7434e5
Implement Form title bar coloring and
KlausLoeffelmann Mar 2, 2024
13f23c7
Implement DarkMode color table and replace SystemColors by dynamic co…
KlausLoeffelmann Mar 3, 2024
e14305d
Correct Formatting/Merge issues.
KlausLoeffelmann Mar 4, 2024
bf1e735
Fix rendering ListView ColumnHeaders in wrong text color in dark mode.
KlausLoeffelmann Mar 3, 2024
adc4593
Added more XML comments and refactored the IsDarkModeEnabled logic a …
KlausLoeffelmann Mar 5, 2024
8ab3fd6
Update unshipped API list.
KlausLoeffelmann Mar 5, 2024
a352df1
* Enable GroupBox...
KlausLoeffelmann Mar 6, 2024
8dea237
Handle DarkMode ProgressBar.
KlausLoeffelmann Mar 18, 2024
09fe21b
Ensure that IsDarkModeEnabled always returns a valid result.
KlausLoeffelmann Mar 26, 2024
a28dd7b
Handle DarkMode ProgressBar.
KlausLoeffelmann Mar 18, 2024
6281ef7
Implement first draft of Control.InvokeAsync, MessageBox.ShowAsync an…
KlausLoeffelmann Aug 23, 2022
2fab629
Update MessageBox.ShowAsync overloads.
KlausLoeffelmann Sep 2, 2023
412255c
Add first implementation of Popup control.
KlausLoeffelmann Oct 7, 2023
a5cdaf8
Introduce AsyncInvoke and AsyncGraphicsFactory; refactor InvokeAsync.
KlausLoeffelmann Feb 1, 2024
0cc7498
Disabling Assert in TextRendering, since it's crashing VS at runtime.
KlausLoeffelmann Apr 22, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 91 additions & 0 deletions src/System.Drawing.Common/src/System/Drawing/Graphics_Async.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
using System.ComponentModel;
using System.Threading.Tasks;

namespace System.Drawing;

public sealed unsafe partial class Graphics
{
/// <summary>
/// Creates a Graphics object from a handle asynchronously.
/// </summary>
/// <param name="handle">The handle to the device context.</param>
/// <returns>
/// A task that represents the asynchronous operation.
/// The task result contains the created Graphics object.
/// </returns>
[EditorBrowsable(EditorBrowsableState.Advanced)]
public static Task<Graphics> FromHwndAsync(IntPtr handle)
{
TaskCompletionSource<Graphics> tcs = new TaskCompletionSource<Graphics>();

try
{
Graphics graphics = Graphics.FromHwnd(handle);
tcs.TrySetResult(graphics);
}
catch (Exception ex)
{
tcs.TrySetException(ex);
}

return tcs.Task;
}

/// <summary>
/// Creates a Graphics object from a handle asynchronously, with a specified thread-confining bounds.
/// </summary>
/// <param name="handle">The handle to the device context.</param>
/// <param name="threadConfiningBounds">The thread-confining bounds for the Graphics object.</param>
/// <returns>
/// A task that represents the asynchronous operation.
/// The task result contains the created Graphics object.
/// </returns>
[EditorBrowsable(EditorBrowsableState.Advanced)]
public static Task<Graphics> FromHwndAsync(IntPtr handle, RectangleF threadConfiningBounds)
{
TaskCompletionSource<Graphics> tcs = new TaskCompletionSource<Graphics>();

try
{
Graphics graphics = Graphics.FromHwnd(handle);
graphics.TranslateTransform(threadConfiningBounds.X, threadConfiningBounds.Y);
graphics.SetClip(new RectangleF(PointF.Empty, threadConfiningBounds.Size));
tcs.TrySetResult(graphics);
}
catch (Exception ex)
{
tcs.SetException(ex);
}

return tcs.Task;
}

/// <summary>
/// Creates a Graphics object from a handle asynchronously, with a specified thread-confining bounds.
/// </summary>
/// <param name="handle">The handle to the device context.</param>
/// <param name="threadConfiningBounds">The thread-confining bounds for the Graphics object.</param>
/// <returns>
/// A task that represents the asynchronous operation.
/// The task result contains the created Graphics object.
/// </returns>
[EditorBrowsable(EditorBrowsableState.Advanced)]
public static Task<Graphics> FromHwndAsync(IntPtr handle, Rectangle threadConfiningBounds)
{
TaskCompletionSource<Graphics> tcs = new TaskCompletionSource<Graphics>();

try
{
Graphics graphics = Graphics.FromHwnd(handle);
graphics.TranslateTransform(threadConfiningBounds.X, threadConfiningBounds.Y);
graphics.SetClip(new RectangleF(PointF.Empty, threadConfiningBounds.Size));
tcs.TrySetResult(graphics);
}
catch (Exception ex)
{
tcs.SetException(ex);
}

return tcs.Task;
}
}
39 changes: 39 additions & 0 deletions src/System.Drawing.Common/src/System/Drawing/SystemPens.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,45 @@

namespace System.Drawing;

public static class SystemColorsRouter
{
internal static Func<Color> s_activeBorderRouter = () => SystemColors.ActiveBorder;

public static Color ActiveBorder => s_activeBorderRouter();
public static Color ActiveCaption => SystemColors.ActiveCaption;
public static Color ActiveCaptionText => SystemColors.ActiveCaptionText;
public static Color AppWorkspace => SystemColors.AppWorkspace;
public static Color ButtonFace => SystemColors.ButtonFace;
public static Color ButtonHighlight => SystemColors.ButtonHighlight;
public static Color ButtonShadow => SystemColors.ButtonShadow;
public static Color Control => SystemColors.Control;
public static Color ControlDark => SystemColors.ControlDark;
public static Color ControlDarkDark => SystemColors.ControlDarkDark;
public static Color ControlLight => SystemColors.ControlLight;
public static Color ControlLightLight => SystemColors.ControlLightLight;
public static Color ControlText => SystemColors.ControlText;
public static Color Desktop => SystemColors.Desktop;
public static Color GradientActiveCaption => SystemColors.GradientActiveCaption;
public static Color GradientInactiveCaption => SystemColors.GradientInactiveCaption;
public static Color GrayText => SystemColors.GrayText;
public static Color Highlight => SystemColors.Highlight;
public static Color HighlightText => SystemColors.HighlightText;
public static Color HotTrack => SystemColors.HotTrack;
public static Color InactiveBorder => SystemColors.InactiveBorder;
public static Color InactiveCaption => SystemColors.InactiveCaption;
public static Color InactiveCaptionText => SystemColors.InactiveCaptionText;
public static Color Info => SystemColors.Info;
public static Color InfoText => SystemColors.InfoText;
public static Color Menu => SystemColors.Menu;
public static Color MenuBar => SystemColors.MenuBar;
public static Color MenuHighlight => SystemColors.MenuHighlight;
public static Color MenuText => SystemColors.MenuText;
public static Color ScrollBar => SystemColors.ScrollBar;
public static Color Window => SystemColors.Window;
public static Color WindowFrame => SystemColors.WindowFrame;
public static Color WindowText => SystemColors.WindowText;
}

public static class SystemPens
{
private static readonly object s_systemPensKey = new();
Expand Down
3 changes: 3 additions & 0 deletions src/System.Windows.Forms.Primitives/src/NativeMethods.txt
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,8 @@ DSH_FLAGS
DTM_*
DTN_*
DTS_*
DwmSetWindowAttribute
DWM_WINDOW_CORNER_PREFERENCE
DuplicateHandle
EC_*
ECO_*
Expand Down Expand Up @@ -164,6 +166,7 @@ GetClipboardFormatName
GetClipBox
GetClipCursor
GetClipRgn
GetComboBoxInfo
GetCurrentActCtx
GetCurrentObject
GetCurrentProcess
Expand Down
1 change: 0 additions & 1 deletion src/System.Windows.Forms/src/GlobalSuppressions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,6 @@
[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Thread local", Scope = "member", Target = "~F:System.Windows.Forms.ToolStripScrollButton.t_downScrollImage")]
[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Thread local", Scope = "member", Target = "~F:System.Windows.Forms.ToolStripSystemRenderer.t_renderer")]
[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Thread local", Scope = "member", Target = "~F:System.Windows.Forms.TrackBarRenderer.t_visualStyleRenderer")]
[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Thread local", Scope = "member", Target = "~F:System.Windows.Forms.MessageBox.t_helpInfoTable")]
[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Thread local", Scope = "member", Target = "~F:System.Windows.Forms.ErrorProvider.t_defaultIcon")]
[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Thread local", Scope = "member", Target = "~F:System.Windows.Forms.DockingAttribute.Default")]
[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Thread local", Scope = "member", Target = "~F:System.Windows.Forms.NativeWindow.t_anyHandleCreated")]
Expand Down
117 changes: 117 additions & 0 deletions src/System.Windows.Forms/src/PublicAPI.Unshipped.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
override System.Windows.Forms.Popup.CreateParams.get -> System.Windows.Forms.CreateParams!
override System.Windows.Forms.Popup.WndProc(ref System.Windows.Forms.Message m) -> void
override System.Windows.Forms.ProgressBar.OnCreateControl() -> void
static System.Windows.Forms.Application.DefaultDarkMode.get -> System.Windows.Forms.DarkMode
static System.Windows.Forms.Application.EnvironmentDarkMode.get -> System.Windows.Forms.DarkMode
static System.Windows.Forms.Application.IsDarkModeEnabled.get -> bool
static System.Windows.Forms.Application.SetDefaultDarkMode(System.Windows.Forms.DarkMode darkMode) -> bool
static System.Windows.Forms.Application.SystemColors.get -> System.Windows.Forms.ThemedSystemColors!
static System.Windows.Forms.MessageBox.ShowAsync(string? text, string? caption = "", System.Windows.Forms.MessageBoxButtons buttons = System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon icon = System.Windows.Forms.MessageBoxIcon.None, System.Windows.Forms.MessageBoxDefaultButton defaultButton = System.Windows.Forms.MessageBoxDefaultButton.Button1, System.Windows.Forms.MessageBoxOptions options = System.Windows.Forms.MessageBoxOptions.DefaultDesktopOnly, System.Windows.Forms.IWin32Window? owner = null, string? helpFilePath = null, System.Windows.Forms.HelpNavigator navigator = (System.Windows.Forms.HelpNavigator)0, object? param = null) -> System.Threading.Tasks.Task<System.Windows.Forms.DialogResult>!
static System.Windows.Forms.Popup.GetPopupLocation(System.Windows.Forms.Control! referringControl, System.Drawing.Size popupSize) -> System.Drawing.Point
System.Windows.Forms.AsyncGraphicsFactory
System.Windows.Forms.AsyncGraphicsFactory.GetGraphicsAsync() -> System.Threading.Tasks.Task<System.Drawing.Graphics!>!
System.Windows.Forms.Control.AsyncInvoke<T>(System.Func<System.Threading.Tasks.Task<T>!>! asyncFunc) -> T?
System.Windows.Forms.Control.DarkMode.get -> System.Windows.Forms.DarkMode
System.Windows.Forms.Control.DarkMode.set -> void
System.Windows.Forms.Control.InvokeAsync(System.Func<System.Threading.Tasks.Task!>! function, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
System.Windows.Forms.Control.InvokeAsync<T, U>(System.Func<T, System.Threading.Tasks.Task<U>!>! asyncFunc, T arg, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<U>!
System.Windows.Forms.Control.InvokeAsync<T>(System.Func<System.Threading.Tasks.Task<T>!>! asyncFunc, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<T>!
System.Windows.Forms.Control.InvokeSyncAsync<T>(System.Func<T>! syncFunction, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<T>!
System.Windows.Forms.DarkMode
System.Windows.Forms.DarkMode.Disabled = 3 -> System.Windows.Forms.DarkMode
System.Windows.Forms.DarkMode.Enabled = 2 -> System.Windows.Forms.DarkMode
System.Windows.Forms.DarkMode.Inherits = 1 -> System.Windows.Forms.DarkMode
System.Windows.Forms.DarkMode.NotSupported = 0 -> System.Windows.Forms.DarkMode
System.Windows.Forms.Form.SetWindowBorderColor(System.Drawing.Color color) -> void
System.Windows.Forms.Form.SetWindowCaptionColor(System.Drawing.Color color) -> void
System.Windows.Forms.Form.SetWindowCaptionTextColor(System.Drawing.Color color) -> void
System.Windows.Forms.Form.SetWindowCornerPreference(System.Windows.Forms.Form.WindowCornerPreference cornerPreference) -> void
System.Windows.Forms.Form.ShowDialogAsync() -> System.Threading.Tasks.Task<System.Windows.Forms.DialogResult>!
System.Windows.Forms.Form.ShowDialogAsync(System.Windows.Forms.IWin32Window! owner) -> System.Threading.Tasks.Task<System.Windows.Forms.DialogResult>!
System.Windows.Forms.Form.WindowCornerPreference
System.Windows.Forms.Form.WindowCornerPreference.Default = 0 -> System.Windows.Forms.Form.WindowCornerPreference
System.Windows.Forms.Form.WindowCornerPreference.DoNotRound = 1 -> System.Windows.Forms.Form.WindowCornerPreference
System.Windows.Forms.Form.WindowCornerPreference.Round = 2 -> System.Windows.Forms.Form.WindowCornerPreference
System.Windows.Forms.Form.WindowCornerPreference.RoundSmall = 3 -> System.Windows.Forms.Form.WindowCornerPreference
System.Windows.Forms.PaintEventArgs.GraphicsFactory.get -> System.Windows.Forms.AsyncGraphicsFactory!
System.Windows.Forms.Popup
System.Windows.Forms.Popup.CanResize.get -> bool
System.Windows.Forms.Popup.CanResize.set -> void
System.Windows.Forms.Popup.ClosePopup() -> void
System.Windows.Forms.Popup.IsOpen.get -> bool
System.Windows.Forms.Popup.OpenPopup(System.Windows.Forms.Control! associatingControl) -> void
System.Windows.Forms.Popup.Popup() -> void
System.Windows.Forms.Popup.PopupClosed -> System.EventHandler?
System.Windows.Forms.Popup.PopupCloseRequested -> System.Windows.Forms.PopupCloseRequestEventHandler?
System.Windows.Forms.Popup.PopupClosing -> System.EventHandler?
System.Windows.Forms.Popup.PopupContent.get -> System.Windows.Forms.Control?
System.Windows.Forms.Popup.PopupContent.set -> void
System.Windows.Forms.Popup.PopupOpened -> System.EventHandler?
System.Windows.Forms.Popup.PopupOpening -> System.EventHandler?
System.Windows.Forms.PopupCloseRequestEventArgs
System.Windows.Forms.PopupCloseRequestEventArgs.ClosingRequestOrigin.get -> System.Windows.Forms.PopupCloseRequestOrigin
System.Windows.Forms.PopupCloseRequestEventArgs.ClosingRequestOrigin.set -> void
System.Windows.Forms.PopupCloseRequestEventArgs.KeyData.get -> System.Windows.Forms.Keys
System.Windows.Forms.PopupCloseRequestEventArgs.KeyData.set -> void
System.Windows.Forms.PopupCloseRequestEventArgs.PopupCloseRequestEventArgs(System.Windows.Forms.PopupCloseRequestReason closeReason) -> void
System.Windows.Forms.PopupCloseRequestEventArgs.PopupCloseRequestEventArgs(System.Windows.Forms.PopupCloseRequestReason closingRequestReason, System.Windows.Forms.Keys keyData) -> void
System.Windows.Forms.PopupCloseRequestEventArgs.PopupClosingRequestReason.get -> System.Windows.Forms.PopupCloseRequestReason
System.Windows.Forms.PopupCloseRequestEventArgs.PopupClosingRequestReason.set -> void
System.Windows.Forms.PopupCloseRequestEventHandler
System.Windows.Forms.PopupCloseRequestOrigin
System.Windows.Forms.PopupCloseRequestOrigin.ExternalByUser = 0 -> System.Windows.Forms.PopupCloseRequestOrigin
System.Windows.Forms.PopupCloseRequestOrigin.InternalByComponent = 1 -> System.Windows.Forms.PopupCloseRequestOrigin
System.Windows.Forms.PopupCloseRequestReason
System.Windows.Forms.PopupCloseRequestReason.AppLostFocus = 1 -> System.Windows.Forms.PopupCloseRequestReason
System.Windows.Forms.PopupCloseRequestReason.CloseMethodInvoked = 2 -> System.Windows.Forms.PopupCloseRequestReason
System.Windows.Forms.PopupCloseRequestReason.ContentClicked = 3 -> System.Windows.Forms.PopupCloseRequestReason
System.Windows.Forms.PopupCloseRequestReason.Keyboard = 4 -> System.Windows.Forms.PopupCloseRequestReason
System.Windows.Forms.PopupCloseRequestReason.PopupLostFocus = 0 -> System.Windows.Forms.PopupCloseRequestReason
System.Windows.Forms.PopupOpeningEventArgs
System.Windows.Forms.PopupOpeningEventArgs.PopupOpeningEventArgs(bool cancel, System.Drawing.Size preferredNewSize) -> void
System.Windows.Forms.PopupOpeningEventArgs.PreferredNewSize.get -> System.Drawing.Size
System.Windows.Forms.PopupOpeningEventArgs.PreferredNewSize.set -> void
System.Windows.Forms.PopupOpeningEventArgs.PreventResizing.get -> bool
System.Windows.Forms.PopupOpeningEventArgs.PreventResizing.set -> void
System.Windows.Forms.ThemedSystemColors
System.Windows.Forms.ThemedSystemColors.ThemedSystemColors() -> void
System.Windows.Forms.ToolStrip.GetGraphicsForItemAsync(System.Windows.Forms.ToolStripItem! toolStripItem) -> System.Threading.Tasks.Task<System.Drawing.Graphics!>!
virtual System.Windows.Forms.Control.DarkModeSupported.get -> bool
virtual System.Windows.Forms.Control.IsDarkModeEnabled.get -> bool
virtual System.Windows.Forms.Control.SetDarkModeCore(System.Windows.Forms.DarkMode darkModeSetting) -> bool
virtual System.Windows.Forms.Popup.OnPopupClosed(System.EventArgs! e) -> void
virtual System.Windows.Forms.Popup.OnPopupClosing(System.Windows.Forms.PopupCloseRequestEventArgs! e) -> void
virtual System.Windows.Forms.Popup.OnPopupOpening(System.Windows.Forms.PopupOpeningEventArgs! e) -> void
virtual System.Windows.Forms.ThemedSystemColors.ActiveBorder.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.ActiveCaption.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.ActiveCaptionText.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.AppWorkspace.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.ButtonFace.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.ButtonHighlight.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.ButtonShadow.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.Control.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.ControlDark.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.ControlDarkDark.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.ControlLight.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.ControlLightLight.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.ControlText.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.Desktop.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.GradientActiveCaption.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.GradientInactiveCaption.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.GrayText.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.Highlight.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.HighlightText.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.HotTrack.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.InactiveBorder.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.InactiveCaption.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.InactiveCaptionText.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.Info.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.InfoText.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.Menu.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.MenuBar.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.MenuHighlight.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.MenuText.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.ScrollBar.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.Window.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.WindowFrame.get -> System.Drawing.Color
virtual System.Windows.Forms.ThemedSystemColors.WindowText.get -> System.Drawing.Color
6 changes: 6 additions & 0 deletions src/System.Windows.Forms/src/System.Windows.Forms.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -81,4 +81,10 @@
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>

<ItemGroup>
<Compile Update="System\Windows\Forms\Control_InvokeAsync.cs">
<SubType>Component</SubType>
</Compile>
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -3361,8 +3361,8 @@ private unsafe bool QuickActivate()
}
else
{
qaContainer.colorFore = GetOleColorFromColor(SystemColors.WindowText);
qaContainer.colorBack = GetOleColorFromColor(SystemColors.Window);
qaContainer.colorFore = GetOleColorFromColor(Application.SystemColors.WindowText);
qaContainer.colorBack = GetOleColorFromColor(Application.SystemColors.Window);
}

qaContainer.dwAmbientFlags = QACONTAINERFLAGS.QACONTAINER_AUTOCLIP
Expand Down
Loading
Loading