2008年05月02日

カレットの表示位置

 今日も昨日の続きで、バイナリ表示用のエディットコントロールの作成をしました。
 昨日は16進数とASCII値を表示させるところまで出来たので、今日はカレットをきちんと文字の下に表示出来るように改良することにしました。

 まず、カレット位置が変わるタイミングとして、マウスの左ボタンダウンの場合からやることにしたのですが、何故かいくらやってもカレットの位置が変わらず悩んでいたのですが、見本と見比べてみて原因が解りました。
 それは、通常だとオーバーライドしたメッセージは派生元のCWndへメッセージを戻すのですが、それを戻らないようにしなければいけなかったみたいで、そこを修正するときちんと動作するようになりました。

 その後、なんやかんやでとりあえずマウスの左ダウンでの処理は完成しました。
 しかし、これからがまだまだ大変で、あと、キーボードイベントの処理や、コンテキストメニュー、文字選択、スクロール、貼り付け、コピーなどの処理をやらなければいけません。
 まだまだ先が長そうです。_| ̄|〇

 いつものように、ソフトとは関係ないところへ脱線し、ソフトの方は放置してしまう、というパターンに入りそうです。
 以前も、処理中のプログレスバーを円グラフ風にしようとして、そのままやりかけのソフトを放置し、未だに完成してないですからね。(´・ω・`)
 まぁ、今回はそうならないように頑張ってみようと思います。

 昨日書いた、古いVSからプロジェクトをアップグレードしたときのエラーや警告について書き忘れていたものがあったので、少し書き足しておくと、
VS 2008から型チェックがきびしくなりました。
 今までは警告も出なかったようなものでも、「データが失われるかもしれません」とかでたり、ひどいものは、「bool」と「BOOL」でも違う型だと判断されたりします。
 今まではそんなに警告が出なかったような気がするので、きびしくなった、というより、きちんとチェックするようになったのではないかと思います。
ランキングへ  posted by 遠雷 at 00:40 | コメント(0) | MFC

2008年05月01日

VSでのアップグレード変換

 今日は、バイナリ値のアドレス、16進数、ASCIIを表示させるエディットコントロールについて調べてみました。
 まず、いつものようにCodeguruにいき、色々物色して使えそうなものをダウンロードしました。
 そのなかに、知りたいことそのものの見本がありました。

 早速、それについてコードをざっと見たところ、データ表示の方法は、描画の際にビットマップを作り、そのビットマップに各データを描画し、それを貼り付けているだけでした。
 この方法は画像の表示などでも使うダブルバッファリングという手法で、画面のちらつきがなくなるやりかたです。

 それはともかく、そのあとが問題で、各データを表示したあと、選択したりカレットの表示位置などがどうなっているのか気になりました。
 試しにダウンロードしたもので試してみたのですが、すこし挙動が変なところがあったので、この辺は自分で修正しなければいけなさそうです。
 そこで、その該当部分を見ようとしたのですが、時間がきたので(何の?)明日に回すことにしました。

 いつもCodeguruというサイトから、色んな見本をダウンロードしてくるのですが、作られたのが結構古いものが多く、VS 5.0やVS 6.0というが大半だったりします。
 そこで、それらをVS 2005やVS 2008用にプロジェクトを変換しコンパイルするのですが、かなりエラーや警告が出ます。
 その内容がどんなものかというと、多いのが変数のスコープ問題、stecpyなどのセキュリティ強化される前の関数などが多いです。

 変数のスコープについては元々のものが異常で、2005から(6の次に2005を使ったため間については不明)C++の規格に準拠したものになっただけなので、きちんと修正すれば問題ないです。
 例としてあげると、for文で宣言した変数が、本来はfor文の中だけで有効なのに、そのあとでも使えた、などです。
 次に、
セキュリティ強化される前の関数については、警告なのでそのままでもいいのですが、やはり気分的に嫌なのできちんと、strcpy_sなどのセキュリティ強化関数に置き換えます。

 あと厄介なのがメモリリークで、今回のものもそうだったんですが、意外とメモリリークしているものがあったりします。
 2005から?は、メモリリークしていたらきちんと警告が出るようになったので分かり易いのですが、今までは専用のソフトなどを使わないとわからなかったため、このようなことになっているものがあるんだと思います。

 次に、Windows XP sp3についてですが、公開直前に中止になったみたいで、Windows Updateで公開されるまでもう少し時間がかかるようです。
ランキングへ  posted by 遠雷 at 01:02 | コメント(0) | MFC