KB938660

以前WPF3.5の新機能として紹介した、レイヤーウィンドウの高速化ですが、Windows Vista SP1 の前に Windows Vista のホットフィックス KB938660 として公開されました。もちろんこれは Windows Vista SP1 にも含まれるものですが、サイズが1MBなのでサクッとインストールできます(再起動が必要)。 Windows Vista x86 Windows Vista x64  楽天ランキングタウンはレイヤーウィンドウ上のWPFアプリなので、このホットフィックスを入れると高速化できる可能性は高いですね。

0

WPF3.5の新機能② SoundPlayerAction

WPF 3.5 では軽量なサウンド再生プレーヤとして、SoundPlayerAction が追加されました。 しかし、これは、MediaElementのように音楽再生に使うようなものではなく、EventTrigger に対する応答性を向上させた反応音のようなものに使うプレーヤです。MediaElement が FrameworkElement を継承しているのと違って、SoundPlayerAction は TriggerAction の派生クラスです。 SDK にある Media Gallary サンプルの「Sound from User Event Sample」タブは、EediaElement + Storyboard と SoundPlayerAction が比較できるサンプルです。SoundPlayerAction は次のように EventTrigger 内で使います。 <Page xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation”   xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml” >   <Page.Triggers>     <EventTrigger RoutedEvent=”Button.Click”         SourceName=”clickButton”>       <EventTrigger.Actions>         <SoundPlayerAction Source=”media\lowbat.wav”/>       </EventTrigger.Actions>     </EventTrigger>     <EventTrigger RoutedEvent=”Button.MouseEnter”        SourceName=”hoverButton”>      …

0

WPF3.5の新機能①レイヤーウィンドウの高速化

Visual Studio 2008 のリリースと同時に .NET Framework 3.5 もリリースされました。これに伴い Windows Presentation Foundation にもいくつかの新機能が追加されました。その新機能を紹介していきます。 まず、レイヤーウィンドウがハードウェア レンダリングされるようになりました。レイヤーウィンドウというのはフレーム枠なして背景を透明にして描画するものです。WPF 3.0 ではレイヤーウィンドウはソフトウェア レンダリングだったため、CPU負荷が高く動作が遅くて使い出がよくありませんでした。しかし、WPF 3.5 ではレイヤーウィンドウがハードウェア レンダリングになったので、かなりサクサク動くようになりました。 特筆すべきは、WPF 3.0 でビルドしたアプリもこの恩恵を受けることです。つまり、WPF 3.0 でビルドしたレイヤーウィンドウのアプリを WPF 3.5 ランタイムの環境(つまり Vista SP1 など)で動かせれば、ハードウェア レンダリングで高速に動作するようになります。 私のテスト結果では、以前紹介したことのあるレイヤーウィンドウでティーポットがくるくる回るアプリが、Windows Vista の新しいデスクトップ (Core2 2.4GHz GeForce8800) では 16fps だったのが、Windows Vista SP1 RC1 の少し前のノートPC (PentiumM 2.2GHz, Mobility Radeon X800XT) で59fps になりました。Perforator の結果を紹介します、FrameRateを見てください。 Widows Vista…

3

Windows SDK (6.0.6000)日本語版

これまでWPFを含む.NET Framework 3.0で開発するとき、英語のドキュメントしかなくて困っていた皆さんに朗報です! 「Windows Vista™ および .NET Framework 3.0 ランタイム コンポーネント用 Microsoft® Windows® Software Development Kit バージョン6.0.6000」いわゆるWindows SDK の日本語版が公開されました。この日本語版SDKでは.NET Framework 3.0 のドキュメントがすべて日本語化されています。 これは昨年11月に公開されたWindows SDK バージョン6.0.6000の日本語版です。なぜバージョンにこだわるかというと、実は英語版は3月に更新されており、Microsoft® Windows® Software Development Kit Update for Windows Vista 6.1.6000 というのが公開されているからです。 日本語化されたドキュメントはMSDNオンラインでも近々公開されるそうです。

0

Windows Vistaの秘密

Tim Sneathが彼のブログで「Windows Vista Secret」という連載(?)をやっています。役に立ちそうなものもあるので、ここでタイトルだけ日本語化して紹介します。詳細は(英語ですが)リンク先を見てください。 任意のフォルダでコマンドプロンプトを開く パスをコピーする XPとおなじ「ファイル名を指定して実行」ダイアログを開く ユーザーアカウント制御を無効にする タスクバーのクイック起動項目をキーで起動する セットアップ中にコマンドプロンプトを開く Windowsで最も古いコンポーネントは? Windows Explorerでズーム 負荷の高いスタートアップ起動を止めさせる 6つのキーストロークで管理者権限コマンドプロンプトを開く 削除不可を削除する              

0

UAC Escalation Notification

Windows Vista でユーザー アカウントを超える操作 (例えばインストールや管理者として実行) を行おうとすると、デスクトップが暗くなって、UAC (User Account Control) エスカレーション ダイアログが表示されます。このダイアログが表示されることをアプリケーションから知りたいときは、次のように SetWinEventHook でイベントとコールバックを指定します。   SetWinEventHook(          EVENT_SYSTEM_DESKTOPSWITCH,           EVENT_SYSTEM_DESKTOPSWITCH,           NULL,           WinEventCallback,           0,           0,           WINEVENT_OUTOFCONTEXT | WINEVENT_SKIPOWNTHREAD); … VOID CALLBACK WinEventCallback(           HWINEVENTHOOK hWinEventHook,           DWORD event,           HWND hwnd,           LONG idObject,           LONG idChild,           DWORD dwEventThread,           DWORD dwmsEventTime){     switch( event )     {          case EVENT_SYSTEM_DESKTOPSWITCH:               MessageBox(hwnd, TEXT(“EVENT_SYSTEM_DESKTOPSWITCH”), NULL,…

1

Media Foundation, EVR, DXVA 2.0

Windows Vistaでは、.NET Framework 3.0 のようなマネージAPIだけではなく、以前紹介したデスクトップウィンドウマネージャAPIのような新しいアンマネージ のAPIも導入されています。その1つが、Media Foundationです。 Media Foundationはビデオやオーディオのようなメディアを扱うための新しいAPIです。特に著作権で保護された高品位のメディアを扱うことを主眼に開発さました。Protected Media Pathが導入され、保護環境でメディアを再生する仕組みが用意されました。 DirectShowアプリケーションも問題なくVista上で動作しますが、DirectShowからMediaFoundationのレンダラーが使えるように、DirectShow EVR フィルタが用意されています。EVRは内部でDXVA (DirectX Video Acceralation) 2.0を活用し、GPUでのデコードやエフェクトが可能になっています。 DXVAは、ビデオのようなストリーミングデータをGPUでデコードしたり、色変換したりするためのAPIです。これまでのDXVA1.0はDirectShowからしか使えませんでしたが、DXVA2.0は、Media FoundationやDirectShowと直接的には結びついておらず、単独でも利用できます。また、DXVA2.0はデコード以外のビデオ処理にもGPUが使えるようになりました。 Windows SDK のサンプルコードには、DXVA2_VideoProcというサンプルがあり、Media FoundationもDirectShowも使わずに、YUV(YCbCr)からRCBへの変換やアルファブレンドによる合成をデモンストレーションしています。

1

Desktop Window Manager on Vista

Windows Vista の特徴に半透明のウィンドウ フレームがあります。これは、Aero テーマが有効なときに表示されます。よく見ると、この半透明のウィンドウ フレームの裏側の画像には、ぼかしがかかっています。 このぼかしがかかったウィンドウフレームを広げたり、ウィンドウ背景を全てぼかしがかかった半透明にすることができます。これはデスクトップの合成を司る Windows Desktop Manager の機能の一つであり、それを利用する (Unmanaged の) API が用意されています。 DWM API による背景ぼかし付き半透明ウィンドウの作り方は、SDK ドキュメントでも紹介されていますし、Tim Sneath が彼のブログで Win Form を使った利用方法を説明しています。また、NyaRuRu さんが DirectX で描画した画像の DWM 上での合成を紹介しています。 ここでは、Visual Studio 2005 のテンプレートで作成した Win32 ウィンドウの背景を半透明化する方法を紹介します。 まず、Visual Studio 2005 で C++ の Win32 プロジェクト (Windows アプリケーション) を新規作成し、DWMApi.h のインクルードを宣言して、次の関数をInitInstance() の前に追加します。 HRESULT EnableBlurBehind(HWND hwnd){   HRESULT hr = S_OK;  …

1