C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 136 を表示中)
■79887 / )  Re[1]: カラーパレット任意の座標に表示する
□投稿者/ 魔界の仮面弁士 (727回)-(2016/05/26(Thu) 13:51:43)
No79858 (kazu さん) に返信
> dlg.Position = p;
  (中略)
> dlg.Dispose();

ShowDialog 後に、毎回 Dispose しているのは何故ですか?

StripColorBtn_Click で都度都度 new ColorDialogEx() しているのであればともかく、
もしもデザイン時に貼ったまま使っているのであれば、Dispose してはマズイでしょう。

このクラスに関しては Dispose してもしなくても変わりませんし、
そのことが本件に影響するかどうかは別問題ですけれども…。


> if (dlg.ShowDialog() == DialogResult.OK)
> this.StripSelectColorBtn.BackColor = dlg.Color;
> archPaint._selectColor = dlg.Color;

それだと

if (dlg.ShowDialog() == DialogResult.OK) {
 this.StripSelectColorBtn.BackColor = dlg.Color;
 archPaint._selectColor = dlg.Color;
}

ではなく、

if (dlg.ShowDialog() == DialogResult.OK) {
 this.StripSelectColorBtn.BackColor = dlg.Color;
}
archPaint._selectColor = dlg.Color;

の意味になりますが、本当にそれで良いのですか?



> GetWindowRect(hWnd, ref r);
ref ではなく out 引数の方が良いと思います。間違いではありませんけれどね。


> ステップ実行してみると、
メッセージ処理を阻害する可能性があるので、この場合のステップ実行は控えましょう。


> if (msg == 0x110) 部分でmsg == 0x110がfalseになるため中の処理に入らず、
その場合の msg は何でしたか?


> 永遠とループしている状態で
そもそも HookProc は WM_INIDIALOG 専用というわけではなく、
いろいろな msg 値が幾度も幾度も飛んでくる仕様です。

コメントにも「// WM_INIDIALOG 以外のメッセージに対しては」と書かれていますよね。
返信 編集キー/


管理者用

- Child Tree -