■79910 / ) |
Re[2]: カラーパレット任意の座標に表示する |
□投稿者/ kazu (3回)-(2016/05/27(Fri) 16:49:09)
|
■No79887 (魔界の仮面弁士 さん) に返信 > ■No79858 (kazu さん) に返信 >>dlg.Position = p; > (中略) >>dlg.Dispose(); > > ShowDialog 後に、毎回 Dispose しているのは何故ですか? > > StripColorBtn_Click で都度都度 new ColorDialogEx() しているのであればともかく、 > もしもデザイン時に貼ったまま使っているのであれば、Dispose してはマズイでしょう。 > > このクラスに関しては Dispose してもしなくても変わりませんし、 > そのことが本件に影響するかどうかは別問題ですけれども…。 > > 使用的によくわからず、いろんなサイトを参考にして書いているため、disposeしました。 メソッド内でnewしてない場合は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 引数の方が良いと思います。間違いではありませんけれどね。 > > まだrefとoutの違いをきちんと理解していないため、わかりませんがサイトコピペの影響です… outで書いた場合の書き方も教授していただけると幸いです
>>ステップ実行してみると、 > メッセージ処理を阻害する可能性があるので、この場合のステップ実行は控えましょう。 > > >>if (msg == 0x110) 部分でmsg == 0x110がfalseになるため中の処理に入らず、 > その場合の msg は何でしたか? >
この部分のメソッドが呼ばれるたびにmsgの値は変わっているので、これと言ってひとつではなかったです。 3桁から4桁の数字が入っていました。
> >>永遠とループしている状態で > そもそも HookProc は WM_INIDIALOG 専用というわけではなく、 > いろいろな msg 値が幾度も幾度も飛んでくる仕様です。 > > コメントにも「// WM_INIDIALOG 以外のメッセージに対しては」と書かれていますよね。
よろしくお願いします。
|
|