Flip3d(Winkey + Tab)ダイアログに表示されないWPFウィンドウを作成するにはどうすればよいですか?
2 に答える
2
これが私がそれをする方法です:
...
using System.Runtime.InteropServices;
using System.Windows.Interop;
namespace NoFlip3D
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
[DllImport("dwmapi.dll", PreserveSig = false)]
public static extern int DwmSetWindowAttribute(IntPtr hwnd, int attr, ref int attrValue, int attrSize);
[Flags]
public enum DwmWindowAttribute
{
NCRenderingEnabled = 1,
NCRenderingPolicy,
TransitionsForceDisabled,
AllowNCPaint,
CaptionButtonBounds,
NonClientRtlLayout,
ForceIconicRepresentation,
Flip3DPolicy,
ExtendedFrameBounds,
HasIconicBitmap,
DisallowPeek,
ExcludedFromPeek,
Last
}
[Flags]
public enum DwmNCRenderingPolicy
{
UseWindowStyle,
Disabled,
Enabled,
Last
}
public MainWindow()
{
InitializeComponent();
}
public static void RemoveFromFlip3D(IntPtr Hwnd)
{
int renderPolicy = (int)DwmNCRenderingPolicy.Enabled;
DwmSetWindowAttribute(Hwnd, (int)DwmWindowAttribute.Flip3DPolicy, ref renderPolicy, sizeof(int));
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
IntPtr AppHandle = new WindowInteropHelper(this).Handle;
RemoveFromFlip3D(AppHandle);
}
}
}
Flip3Dからは非表示になり、他のものはそのままになります(alt-tabとタスクバー)。ただし、Flip3Dの実行中は、アプリケーションはバックグラウンドで表示されたままになります。
于 2011-08-26T07:15:24.050 に答える
0
メインフォームのShowInTaskbarをfalseに設定するだけです。
<Window x:Class="WpfNoFlip3D.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" ShowInTaskbar="False">
<Grid>
</Grid>
</Window>
Alt + Tabでは機能しないことに注意してください。これは、Win + Tabでのみ機能します(要求に応じて)。副作用として、アプリケーションもタスクバーから消えます。
于 2011-08-05T19:38:34.213 に答える