2011-08-09 11 views
2

私はSystem.Windows.Forms.Cursorを持っていて、それをSystem.Windows.Input.Cursor型のWPFのimage.Cursorプロパティに割り当てる必要がありました。 ここでの制約は、以前のCursor型がFrameworkによって返され、私は決してそれを変更できません。前者を後者に鋳造する方法はありますか? SafeFileHandleためWPFカーソルキャストの問題

SafeFileHandle panHandle = new SafeFileHandle(System.Windows.Forms.Cursors.PanNorth.Handle, false); 
this.Cursor = System.Windows.Interop.CursorInteropHelper.Create(panHandle); 

ドキュメントが第二引数にfalseを使用しないことを警告しているが、私は関係なく、私は(私はCursors.PanNorth.CopyHandleを使用している場合にも当てはまり使用した場合にどのようなSEHExceptionsを得なかっ:

+1

ここに投稿する前に、回答を探すサイトをほとんどブラウズしていません。しかし、運が少ない... [:(] – Anee

+0

私はあなたがそれを投げることはできないと思っているでしょう。 –

+0

あなたはそれをキャストすることはできませんが、カーソルデータを流すことができるかもしれませんあなたはWPF Cursor(Stream)コンストラクタにこれを渡すことができます。ハンドルを指定してカーソルを保存すると、Windows APIに落ちることになり、ひどくひどくひどく文書化されているように見えますが、 http://www.codeguru.com/forum/showthread.php?t=353956にはいくつかの提案があります。 – itowlson

答えて

1

これは私のためのトリックを行いました())

+0

優れています、+1。これを見ている人には注意してください - 'System.Windows.Forms.Cursors.PanNorth'は難しい-coded in - 任意の 'System.Windows.Forms.Cursor'を送信し、' .Handle'を取得すると、 'Bitmap bmp = Bitmap.FromFile(filePath);で定義されたカスタムのものであっても動作します; IntPtr ptr = bmp.GetHicon(); System.Windows.Forms.Cursor c = new System.Windows.Forms.Cursor(ptr); 'だから、あなたはちょうどp 'System.Windows.Forms.Cursors.PanNorth.Handle'の代わりに' c.Handle'に置き換えてください。 – vapcguy