.NetフォームのGlassサポートを取得するための秘訣がいくつかあります。
このメソッドの元のソースはここにあると思います:http://blogs.msdn.com/tims/archive/2006/04/18/578637.aspx
基本的に:
//reference Desktop Windows Manager (DWM API)
[DllImport( "dwmapi.dll" )]
static extern void DwmIsCompositionEnabled( ref bool pfEnabled );
[DllImport( "dwmapi.dll" )]
static extern int DwmExtendFrameIntoClientArea( IntPtr hWnd, ref MARGINS pMarInset );
//then on form load
//check for Vista
if ( Environment.OSVersion.Version.Major >= 6 )
{
//check for support
bool isGlassSupported = false;
DwmIsCompositionEnabled( ref isGlassSupported );
if ( isGlassSupported )
DwmExtendFrameIntoClientArea( this.Handle, ref margins );
...
//finally on print draw a black box over the alpha-ed area
//Before SP1 you could also use a black form background
その最後のステップが問題です。その領域に描画されたサブコントロールは、黒をアルファ透明マスクとしても扱うようです。
たとえば、クラス領域のタブストリップには透明なテキストが表示されます。
これを回避する方法はありますか?
これを行う簡単な方法はありますか?
私が取り組んでいるアプリケーションは、XPとVistaの両方で動作する必要があります-正常に機能を低下させる必要があります。ここにベストプラクティスはありますか?