スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
拍手コメントを見る

ふざけてるなぁ・・・C#によるカスタムカーソル

マウスカーソルをプログラム内部でカスタマイズ作成して、放棄して、作成して、放棄して~
を繰り返していると、「GDI+ で一般的なエラーが発生しました」なんてのが出力されちゃいました。

//
// 問題コード ( GDI+ Exception !! )
//
//マウスが押されて呼ばれるメソッド

private void myCtrl_MouseDown(object sender, MouseEventArgs e)
{
Bitmap bmp = new Bitmap(120, 120);
Graphics g = Graphics.FromImage(bmp);
Pen pen = new Pen(Color.Black, 1);
g.DrawRectangle(pen, 2,2, bmp.Width-2, bmp.Height-2);
g.Dispose();
try
{
IntPtr hicon = bmp.GetHicon(); // ここで例外エラーになる
this.MyCustomCursor = new Cursor(hicon);
}
catch(Exception ex)
{
System.Diagnositics.Debug.WriteLine(ex.Message);
}
}

//マウスが離されて呼ばれるメソッド
private void myCtrl_MouseUp(object sender, MouseEventArgs e)
{
if ( null != MyCustomCursor )
{
MyCustomCursor.Dispose();
MyCustomCursor = null;
}
}


どうやら、new Cursor(hicon) をやっているところで、内部的にハンドルを保持しているくさい。

Icon.FromHandle() のヘルプをみると、「Win32 API の DestroyIcon メソッドを使用して結果のアイコンを破棄して、確実にリソースが解放されるようにする必要があります。」とある。
続きはないけれども、この後に「そうしないとシステムリソースを食いつぶしちゃいます」と伝えたいのでしょう。

コラコラ。。。
こういうヒントは、Bitmap.GetHicon() にも書いておいてチョーだいよ。
というか、Cursor.Dispose() で処理してよ・・・というのが本音。

C# で Win32API を呼び出す必要があるのはできる限り避けたい・・・けれども、Win32 アプリだから、ま、いっか、、とも思うし、もう後には引けないのもあるし。


というわけで、次のようにしてみたところ、快適に動くようになりました。

//
// 対応コード ( bye-bye Exception code )
//
//Win32 API 呼び出しの宣言・・・(涙)

[System.Runtime.InteropServices.DllImport("user32")]
private static extern bool DestroyIcon(IntPtr hIcon);

//マウスが押されて呼ばれるメソッド
private void myCtrl_MouseDown(object sender, MouseEventArgs e)
{
Bitmap bmp = new Bitmap(120, 120);
Graphics g = Graphics.FromImage(bmp);
Pen pen = new Pen(Color.Black, 1);
g.DrawRectangle(pen, 2,2, bmp.Width-2, bmp.Height-2);
g.Dispose();
try
{
destroyIconResource(); //万が一呼び出し
this.MyCustomCursor = new Cursor( bmp.GetHicon() );
}
catch(Exception ex)
{
System.Diagnositics.Debug.WriteLine(ex.Message);
}
}

//マウスが離されて呼ばれるメソッド
private void myCtrl_MouseUp(object sender, MouseEventArgs e)
{
destroyIconResource();
}

//カーソルリソースの破棄はまとめてこちらで処理します
private void destroyIconResource()
{
if ( null != MyCustomCursor )
{
if (IntPtr.Zero != MyCustomCursor.Handle )
{
DestroyIcon(MyCustomCursor.Handle);
}
MyCustomCursor.Dispose();
MyCustomCursor = null;
}
}

参考文献はこちら-> tech-archive.net
※↑は回りくどい解決策をやっている気がしてなりませぬ。
スポンサーサイト
拍手コメントを見る

テーマ : プログラミング
ジャンル : コンピュータ

引き分ける!?

うぅむ、toto-BIG。
前回は8個当たり。今回は、浦和-名古屋を残して9個当たりが2口。
浦和-名古屋戦のクジは、ホーム勝の「1」または、アウェイ勝の「2」でした。

で、結果は引き分けの「0」。

なんでやねん。

ま、10個当たったからといって、ハズレはハズレなんですけどね。
(1等は14個、2等は13個、3等は12個、4等は11個、で当選)

さて、川崎フロンターレ。
「伝統の多摩川クラシコ」(って『伝統』と言っていいの?)を圧倒的に制しました。
0-7って、野球かよ!?って感じですが、11/03のナビスコ決勝戦に向けてこのまま突っ走って頂戴!!

その後の 11/11 のホームでの浦和戦。
あのぉ、マギヌンも憲剛も佐原も出られないんですけど。。。
対する浦和はACL決勝の中日(なかび)だから、レギュラー休ませて、新戦力で望んでくるでしょうか?リーグ優勝かかっているとはいえ、現在独走になっちゃっているので、お休みも必要でしょう。
おっと、その場合も「リーグ戦は最強メンバーでないと・・・」と、リーグ運営側は苦言を言うのでしょうかね。文句言う前に、ACLで勝ち進みやすい体制を整えろ!って思います。 拍手コメントを見る

My Original New Impreza

今週木曜日からラリージャパンが北海道の帯広近辺で開催されます。

現在フォードに在籍しているマーカス・グロンホルムは今年で引退だそうな。いつも文句言っている人だったけど、居なくなると思うと寂しいなぁ。

来年以降はシトロエンのセバスチャン・ローブの独壇場でしょうか。
いやいや、現フォード(旧スバル)のミッコ・ヒルボネンが食い下がるのか。

さて、スバルのペター・ソルベルグ。車の戦闘能力が低いんでしょうか、今年も(昨年も、その前も)成績さっぱりです。

2007のラリージャパンはスバルのホームグラウンドですから意地を見せて欲しいところです。

スバルといえば母体となる Impreza WRX STI がハッチバックとしてフルモデルチェンジしたわけですが、来年は当然の如くこのプラットフォームに置き換わるんでしょう。
噂では、自主規制突破の300馬力だとか。すごいですね。

ですが、勝手に言わせていただきますと、エクステリアに関して、斜め前方からみた New Impreza はフェンダーありなしに関わらず、ボンネットとフロントライトとバンパーに繋がるラインが・・・・・「もっさり」していて気に入りません。

ラジエーターグリルから伸びているボンネットのラインエッジがボンネットを盛り上げて見せる効果があり、ここが1もっさり。
ボンネットとフロントライトをつなぐラインに段差があり、ここが2もっさり。
フロントグリルの銀色ライン、ここが3もっさり。

もっさり解消!

上の画はオリジナルで、下の画は上記の「もっさり感」をとってみましたが、精悍な顔つきになったと思いません?
My Original New Impreza

拍手コメントを見る

小さい「ぅ」

20071018120326
何も言いますまい。 拍手コメントを見る

布団が恋しい

うーん、素直に寝ればいいのに、ここのところ毎晩PCの前で転寝(うたたね)しちゃって、気がついたら朝ってのが多いです。

10/24-10/29 の間で不在になるから、その分前倒しで土日も仕事するから、仕事に遅れはとりませんから、と上司を説得して頂戴した休暇。

その期間は北海道の十勝に行くはずだったのですが、結局行かない事になりました。

で、何が残ったか!?というと、土日の仕事で発見してしまった些細な問題が、今となっては大きな問題になってしまった、という事実です。

その事実に対応するべく、休暇を「とる・とらない」に関係なく、土日だけでもなく、毎夜徹夜もどきが続いています。

布団が恋しい。
ちょっと悪寒がしてきました。

松坂大輔風に言うと、
「風邪気味だったんですけど、今日それが風邪に変わりました」

・・・もうこん(毛根)な時間・・・なのね・・・ 拍手コメントを見る

よっしゃ!ナビスコ杯は決勝や!

川崎フロンターレが乱打戦(?)を乗り越えて、ナビスコカップの決勝進出です!

相手はガンバ大阪。
11/03の国立決戦には、応援にいくぞ~!!(希望)

また、その先には天皇杯がまってますし。 拍手コメントを見る

hula と feet

久々にDVD借りて映画観ました。

まずは「フラガール」。
☆☆☆☆

かなり良かった。蒼井優って天才?ソロのシーンは瞬き忘れる位魅入ってしまいました。
一つ少ないのはクライマックスのカメラワークというか、コマ割。それまで完璧だと思っていた松雪泰子の表情が一種類しかなく変化なしだったため。

次は「ハッピーフィート」
☆☆☆

期待しすぎてたかも。
ゴキゲン!にはならなんだ。
まぁ可愛いんだけど、そんなテーマだったの?と思わせる展開までがダルいです。

最後は「アホリックス」
智蔵が見つけてきたマトリックスのパロディらしい。
こっちはまだ観てないです。 拍手コメントを見る
ブログ内検索
プロフィール

雷ぶ

Author:雷ぶ

最近の記事
最近のコメント
最近のトラックバック
カテゴリー
月間アーカイブ
ブロとも申請フォーム

この人とブロともになる

RSSフィード
リンク

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。