どうでもよい話


目次

    つい公開、つい後悔(2000/01/14)
      どうでもよくない話(2000/01/23)
    荒技(2000/01/12)
    お詫び(2000/01/08)
      2度あることは、...(2000/01/10)
      当面の残作業(2000/01/10)
    ひとりごと(2000/01/07)
    祝 Ver. 1.00 (2000/01/06)
    ver 0.998β バグ一覧(2000/01/04)
      バグ?不具合?(2000/01/05)
      魔法の呪文(2000/01/05)
    謹賀新年(2000/01/03)
      追加(2000/01/04)
      追加(2000/01/08)
    現在Version 0.993β(1999/12/20)
      なんとか、年内完成を?(1999/12/29)
      敗北宣言(1999/12/31)
    カウンター1000件突破、感謝(1999/12/06)
    うまく読めなかったテキストファイル(1999/11/29)
    アクセラレータ・キー(1999/11/25)
    Ver 1.00まで後少し(1999/11/21)
      機能追加終了?!(1999/11/27)
      残作業リスト(1999/12/18)
    ドラッグ&ドロップ動作の修正(1999/11/14)
    第2ツリービュー再び(1999/11/14)
      固定ピッチフォント(1999/12/25)
    削除セクションの復活機能(1999/11/13)
    第3世代テキストエディタ(1999/11/06)
    第2ツリービューの不具合(1999/11/06)
      後日談 (1999/11/10)
    ツリーコントロールに関する不満(1999/11/03)
    セクション・レベル編集(1999/10/30)
    著作権?(H11.10.24)
      みうち? (1999/10/26)
    朝令暮改(H11.10.17)
    「お詫び」と「お知らせ」(H11.10.14)
    印刷機能(H11.10.10)
      MFCって・・・(H11.10.14)
    CRichEditViewに変更したら・・・(H11.10.02)
    CHtmlView(HTMLビュー)
    ツリーコントロールとウインドウの分割方向
    オブジェクト指向の醍醐味
    良いコーディングスタイル
    エディット・ビューの背景色変更はどうすれば・・・・
      後日談
    実行形式のファイル名はstvi.exeにしました。
つい公開、つい後悔(2000/01/14)




一応、すぐ手の付けれる改良は一通り終った積もり。
なもんで、UPしちゃいました。
テスト不足はわかっているのですが、
こんだけ、高機能になったので、つい見せびらかしたく
なってしまった。

感想、要望、バグ報告等、お待ちしております。


どうでもよくない話(2000/01/23)

v1.14使用中に、強制終了の憂き目に2度ほど会っています。
2回とも「セクションの削除」操作を行なった時に発生しました。
再現性がなく、デバッグできておりません。


荒技(2000/01/12)




注意力散漫な私は、自明なことに気が付かずに時を過し、
とんでもない時に、突然気付いてあわてふためく。

今回は、ツリービューのハイライト表示でした。
「構造化エディタ」だとエディットペインにフォーカスが
移るとツリーペインの選択状態は、ハイライト表示から、
グレイ表示に切り替わる。なのになのに、STVIでは、
ハイライト表示のまま。なぜ?

まじめにソース追いかけて、デバッガで調べたりしてわかったことは、
一度、Drag&Drop処理のDrop先のアイテムとしてハイライト表示した
アイテムは、SetItemStateメンバ関数では、ハイライト属性をクリア
できない。このため、選択セクションを常に、ハイライト表示に
していたということ。

でも、ようやくクリアする方法をみつけました。
(1)ダミーのアイテムを生成する。
(2)こいつにハイライト属性をくれてやる。
(3)アイテムごとハイライト属性を削除する。

我ながら、すごい荒技だとは思うが、誰かがいったように
『動けば、官軍』さ。

お詫び(2000/01/08)




めでたく「Ver. 1.00」をアップロードすることができ、
のんびり内部構造の整理に入ろうと思っていたら、
プログラムを立ち上げたまま、表示するファイルを
切替えていくと落ちることに気が付いてしまった。
「Ver. 1.00」ダウンロードされた方、ゴメンナサイ。
修正バージョン「Ver. 1.10」アップしておきました。

さあ、今度こそ腰を落ち着けられるかな。

2度あることは、...(2000/01/10)

1/8,9,10と3日連続で、バージョンアップ?(バグフィックス?)
してしまった。
1.00から1.10にする時にもう少し、まじめにテストすれば良かったのだが、
とりあえず、普通の操作で落ちるのはまずいということで、アップを
急いでしまった。その後は、エンバグしていたところが他の部分を修正中に
みつかり、五月雨式のバージョンアップと相成りました。
2回続くとさすがにまずいなと、猿でもできる程度の反省をして、
あとは、多少のバグが見付かってもじたばたせずに、他も含めて
じっくり修正してからアップしようと思っています。
でも通常動作で落ちるようなバグが見付かれば、またじたばたするんだろうな。
もう無いとはおもっているのだが......。




当面の残作業(2000/01/10)

第2ツリービューはじめ、Stviでやりたいことは、まだまだ
あるのですが、1−3月の仕事がなくて暇な時期に、
印刷ツールの方をなんとか形にしたいという欲求が強いんで、
Stviに関して、後3つ作業を片したら、本格的に印刷ツールの
作業に入ろうと思います。
今回の作業でセクションオブジェクトがかなりすっきりしたんで
同じクラスを使ってなんとかいけそうな気はしているのですが。


・セクションチェンジした際の、キャレット位置の保存・復元
(プログラム動作中のみの機能とし、ファイルの読み込み/保存で
リセットするものとする。)

・上書き保存処理により、画面表示が、ファイルを再読み込みした時と
同じ状態になるようにする。
(要するに、上書き保存の時に、内部メモリの再配置を行なうという事です。)

・Drag&Dropの時の自動スクロールと、閉じてるノードが開く処理

ひとりごと(2000/01/07)




いちおう、こっちの「どうでもよい話」の方は、なんでもありだけど、
「設計メモ」の方は設計に関する事を格調高くというつもりでいたんですが、
気づいたら、設計メモの「内部構造の見直し(2000/01/06)」
の最後に下のようなぼやきが入っていたんで削除しました。

(今となっては、この設計メモの下の方で「ビューへのアクセス」と
いうタイトルで馬鹿なことを書いているのが、はずかしいというか、
微笑ましいというか。はー。)

本当、なにやってんだか。

祝 Ver. 1.00 (2000/01/06)




見切り発車という、心の声は無視して、
めでたく「Ver. 1.00」をアップロードすることが
できました。

感想、要望、バグ報告等、お待ちしております。

PS. 「ビュアーとはいえないビュアー」Stvi、最終的な名称は

STVI:「sted formatのための 構造化支援ツール」

としました。

ver 0.998β バグ一覧(2000/01/04)




0.998ベータを、リビルドして、「でけた」と思ったのだが、
やっぱり「チョー甘かった」。
一通りいじっただけで、こーんなにBUGがみつかったりして。
さあ、次はいよいよ0.999β。もう、後がない。


バグ?不具合?(2000/01/05)

バグというと、プログラムを組んだ人1人が完全に悪者だが、
不具合というと、悪いことの責任がいろいろな所に分散される
気がする。そんな気がするのは私だけ?

さて、先に掲げたバグ一覧の一部を不具合リストに移します。

まず、バグ一覧に残るもの
これ以外は、バグではなく不具合です。

CDocument::Serialize()の中で、ファイルからの読み込み処理を
していたのですが、この関数はなんと、size0のファイルを
選択した時には呼ばれない!!

これは、プログラミング上の問題ではなく設計上の問題。
(バグじゃないにしても、悪者が誰かは明白だな。まずいな。)

これ、ゆっくりやれば、ちゃんと一回毎に鳴ってました。
ビープ音を鳴らした直後はキー入力をきちんと受付けないみたいです。

これもバグではなく設計上の問題ですね。

魔法の呪文(2000/01/05)

悪い魔女のかけた呪いをとく、強力なおまじない見つけました。

処理の途中でフォーカスが行方不明になるという呪いをかけられ
苦しんでいたのですが、

処理の最初に、
CMainFrame::GetActiveView() ;
を唱え、

目的の処理を行ない

最後に
CMainFrame::SetActiveView() ;
CView::SetFocus() ;
を唱えるというおまじないは、なかなか強力な呪文です。

この後、呪いの痕跡が見つかっても(おいおい)、
この呪文を唱えれば、あっさり撃破できそうです。

謹賀新年(2000/01/03)




新年、明けましておめでとうございます。
深刻なY2K問題も発生せず、とりあえず良かったよかった。

しかし、stvi version 1.00への道のりは遠い。
現在 0.997βだから、あと2回余裕がある(?)とはいえ、
なんとか、次のアップでversion 1.00にしたいものです。

さて、年頭にあたり、今年の抱負と希望などを。
(注:抱負 − 比較的実現可能性が高い)
(注:希望 − ・・・。(さっしてくれますよね。))

まず、抱負から

・第2ツリービューの導入
・子セクションの格上げ機能の追加
・子セクション連続表示機能の実装
・「保存して実行」機能の実装
・選択文字列検索機能
・Drag&Drop機能の充実
・VC6.0への移行
・印刷ツールの作成


次に希望

・最終ルートセクションを使用した拡張sted formatの実装
・UNIX系改行記号への対応(読み込みonly)
・setext対応
・ツリービューの背景色指定
・セクション内テキスト編集機能の追加
・ソースコード(プロジェクトファイル)の公開
・HTMLで保存機能
・[元に戻す]、[ひとつ前に戻る]機能の実装
・印刷ツールと連動した印刷機能の実現

追加(2000/01/04)


追加(2000/01/08)

あと、Drag&Dropの時、今はカーソルを変えてごまかしているけど、
エクスプローラのように、ビットマップをドラッグするようにしたい。

それと、ツリービューに貼り付けるイメージも増やしたい気はするのだが。


現在Version 0.993β(1999/12/20)




現在、Versionは、一応 0.993βとなっています。
でも、いじっていると、いろいろ気に食わない点とかでてきます。
0.999βの次のバージョンは、βのとれた1.00にしたいものです。
0.9991βというバージョンは作らなくてすむよう頑張ります。

なんとか、年内完成を?(1999/12/29)

なんとか年内に、ver. 1.00をリリースしたいのですが、
どうなることやら。

とにかく現在、ver. 1.00のための条件として、

・stvi.txt(README.txt)の完成
・Windowの最大化、最小化状態の保存
・検索処理の見直し
・Windowのフォーカスが行方不明にならないようにする

を考えています。
年が明けたら、気分も新たに『"sted format"印刷ツール』開発プロジェクトに
取り組みたいと思っていますが、どうなることやら。


敗北宣言(1999/12/31)

1000年代も、後3時間ほどで終了。(日本に限っていえばだけど)
ここであわてて頑張ってY2K問題に巻き込まれたら悲しいので
年内の完成はあきらめました。

とりあえず、現在判明している「まだ残っている作業」は

・検索処理の見直し
・ファイル変更判断の見直し

ただ、まっとうなテストはやっていないんで、.....。

さあ、来年、また頑張ろう!!!

どうか気長に付合って下さい。

皆様、よいお年を。

カウンター1000件突破、感謝(1999/12/06)




HPを開設した当初は、自分一人で1日3アクセスすれば、
1年で1000アクセス達成か、などと思っていたのですが、
それより遥かに早く1000件を達成することができました。
ありがとうございます。

自分のHPにアクセスすると前日の最後のカウンタ値から、
1増えてるだけという状態が2ヶ月くらい続いたのですが、
松崎さんのHPからリンクを貼って貰って以来、アクセス
数は順調に伸びはじめました。まあ、1日数件という
かわいいもんですけど。
そして、11/9から11/10にかけて、いきなり100件近い
アクセスがあって、逆にびびったりしてしまいました。
まあ、その後、また1日数件のレベルに戻りましたが。

アクセス数が少ない内は、著作権等もあまり気に
ならなかったのですが、アクセスが増えると
その辺も気になり出します。
個人的には、プロジェクトファイルを公開したいという
希望はあるので、その辺、時間ができたら調べてみて
できる限り公開する方向で検討してみます。なにかVC++の
プロジェクトファイル公開に関する著作権関連の情報が
ありましたら教えて下さい。

つたないHPですが、訪問して下さった皆様、
本当に有難うございます。これからも気長に
つきあってやって下さい。

うまく読めなかったテキストファイル(1999/11/29)




バグリストの中に

と書いたのですが、この原因が判明しました。
改行記号が、"\r\n"でなかったことが原因でした。

秀丸で読み込んで、上書き保存をしたところ正常に動作するように
なりました。

このテキストファイル、実はあるSF作家のMLのログだったん
ですけど、もともとJISコードだったのを、シフトJISに変換
したものでした。

...で思ったこと。
(1)読み込みの際には、改行コードはMS-DOS系の"\r\n"、
UNIX系の"\n"、両方に対応した方がよい。
(ただ、これをするとファイル読み込み時の時間が、
若干長くなるかもしれない。)
(2)通常のテキストファイルに、[Space]と[TAB]だけからなる
行が存在することがあるので、これによって分割された
セクションを結合する手段が欲しい。
(3)あるキーワードが必ずセクションの先頭に有るとわかっている
テキストファイルを構造化する場合、キーワードを与えれば
後は自動的に分割するという機能が欲しい。

ただ、(2)、(3)に関しては、本ツールに含めるべきか、
別に文書フィルターを用意した方が良いのか、思案中。
まあ、本ツールに含めるとしてもVer1.0より後の話ですが。

アクセラレータ・キー(1999/11/25)




「構造化エディタ」では、ツリーペインにおける
[Home]キーと[End]キーの動作がディフォルトと
異なる。

 ツリービューにおける動作を「構造化エディタ」と
合わせるため、[Home]キーと[End]キーをリソースの
アクセラレータに登録したところ、エディットビューで
この2つのキーで行頭、行末にいっていた動作が行われなく
なってしまった。

アクセラレータキーの動作の中で、アクティブな
ビューを判断して、それぞれの動作をするようにしてみたが、
折り返し時に、行末にキャレットを移動することができず、
次の行の先頭に移動してしまう。

エディットビューでの動作を変更せずに、ツリービューの
ショートカットキー動作を実現するにはどうすれば良いのだろう?
ツリービューでキー押下のメッセージを処理するしかないのかな?

Ver 1.00まで後少し(1999/11/21)




以前より、
『β版に対して次の作業をクリアした段階で1.00とする。

・ショートカットキーに関して、STEDとの整合性をとる。
・(印刷関係のメニュー、ボタンの削除)
・不正な"sted format"ファイルをテキストファイルとして読み込む』

と考えていましたが、これとは関係の無い作業をいろいろとやって
遊んでいました。最近、ようやく

・ショートカットキーに関して、STEDとの整合性をとる。

に入り、ようやく先がみえてきた感じです。

とりあえず、上記の作業に

・stvi.txt(README.txt)の作成

を加えて、Ver 1.00とすることにしました。
ただし、ショートカットキーでむづかしいのは後回しにします。

以下の作業はVer1.00以降のお楽しみにしようと思っています。

・第2ツリービュー
・ドラッグ&ドロップ動作の修正

・ショートカットキーによる横スクロール
・「保存して実行」機能
・Ctrl+Wで「単語を選択」


Ver1.00が完成したら、Version Up作業の前に、
編集機能を全て取っ払って、stedprn.exeのビュアー機能の
部分の雛形を作ってしまおうと思っています。

機能追加終了?!(1999/11/27)

一応、v1.0に必要な機能追加はこれで終了にしようと
思います。(すぐ、気が変るかもしれませんが)

後は、楽しいデバッグ&テスト、そしてREADME.TXTの作成。
(あーあ。)

まずは、バグ出し、課題の列挙 ですね。
それと並んで、クラス整理かな?

本当は、第2ツリービューを早くやりたくて仕方ないのですが、
印刷ツールの方もかなり気に掛かっていて、
セクション関係のオブジェクトクラスやブックマーク関連の
オブジェクトクラスは同じ物を使おうなどと虫のいい事を考えて
いるので、とりあえず、ここで一区切り付けることにします。

残作業リスト(1999/12/18)

現在、残作業として考えているのは、

・stvi.txtの「3.使用方法」の章の完成
・アイコン状態、最大化状態の保存/再現
・タイトル一覧ダイアログの状態保存
・検索処理のデバッグ
・ウインドウのフォーカスが、行方不明になることが無いようにする。
・タブ動作をわかりやすくする。

といったところです。バグ情報、お待ちしております。

ドラッグ&ドロップ動作の修正(1999/11/14)




現在、ドラッグ&ドロップ動作には、「移動モード」という
訳の解らない概念を導入しているが、emptyセクションに
ドロップした際には、emptyセクションを置き換えるという
動作にした方が使いやすいかもしれない。

完全にSTEDの「貼り付け」動作の真似ですから、STEDユーザにも
違和感はないでしょうし。
(う〜ん。でも勝手にUNTITLEDをbranchやemptyに変えているから
違和感は充分あるか....)

第2ツリービュー再び(1999/11/14)




また、真剣に第2ツリービューの実現を検討する気になった。
ウインドウの構成は、やはり、

こんな感じで、第2ツリービューは、動的に表示/非表示を
切替えたい。(IE5.0をお使いの方で上記の図が崩れている方は、
Internet Explorer で、[ツール] メニューの [インターネット オプション] を
クリックし、 [全般] タブの [フォント] をクリックして下さい。
[Web ページ フォント] ボックスで、「MS 明朝」を選択すると、
それなりの図になります。
本当は図を張り付けるなり、表を作るなりすれば良いのですが、
構造化エディタの「HTMLで保存」の機能だけでこのドキュメント
作成しているのでこうなってます。許してチョンマゲ(死語?))


ツリービューと第2ツリービューの関係は主従関係とし、
対等にはしない。

たとえば、ツリービュー同士でセクション・ツリーの移動を行なった
場合、移動後のフォーカスは常にツリービューが持つこととする。
ツリービューの内容はファイルに保存可能だが、
第2ツリービューの内容は、アプリケーションの終了とともに消滅する。
セクションの追加、分割処理はツリービューのみ。
ブックマーク関連の処理もツリービューのみとする。


また、第2ツリービューでは、削除したセクションを表示するだけではなく
既存ファイルをまるごと読み込むという機能も付加したい。


要は、既存のファイルのセクションを寄せ集めて、ひとつのドキュメントを
つくることが簡単に可能な枠組みを提供したい。
(ただし、ここでいう「簡単に」は「セクションのマウスによる
ドラッグ&ドロップ操作で」という意味である。)

固定ピッチフォント(1999/12/25)

プロポーショナルフォンとでは、図の崩れることに気付き
[Web ページ フォント]を固定長の「MS 明朝」にして下さいと
書いたのですが、

松崎氏より、
>ウィンドウ分割の説明の図がくずれてしまってますね。
>文字キャラの図は行頭にタブをいれると
>固定ピッチフォントで表示されるようになります。
とのメールを頂きました。
うーん。たしかに。

STEDとか、HTMLは、奥がふかい。

削除セクションの復活機能(1999/11/13)




かなり苦労して、
削除セクションの一覧をダイアログで表示し、
ボタンで復活できるようにしてはみたのだが、
個人的な感想を言わせて貰えば、『使えないな。』
の一言に尽きる。

要するに、操作手順が多すぎる。
やはり、『使える。』ようにするには、
第2ツリービューを導入し、ドラッグ&ドロップを
サポートする必要がありそうだ。

ver. 1.1か1.2くらいで、実現できたらいいな。



第3世代テキストエディタ(1999/11/06)




私は、勝手に 「構造化エディタ」のことを
第3世代テキストエディタと呼んでいます。


第1世代 テキストエディタ : ラインエディタ
第2世代 テキストエディタ : スクリーンエディタ
第3世代 テキストエディタ : 構造化エディタ
皆さんは、どんな考えをお持ちでしょう?



第2ツリービューの不具合(1999/11/06)




ウインドウを次のような構成にしようと試みた。

このためにウインドウの構成を

+-- CMainFrame
|CStviView(CTreeView)
|CMyEditView(CRichEditView)
+----------

から

+-- CMainFrame
| +----CSubFrame(CFrameWnd)
| |CStviView(CTreeView)
| |CDustView(CTreeView)
| +-------------
|CMyEditView(CRichEditView)
+----------

に変更した。一見、正常動作するのだが、
CStviView(CTreeView)に登録したハンドラが
CStviView(CTreeView)をクリックしても有効にならない。
CMyEditView(CRichEditView)のハンドラがずっと有効なまま
という現象が発生した。

原因を解明して、対処できる自信が全くなかったので
あっさりあきらめてしまいました。


後日談 (1999/11/10)

その後の調べによりますと、

+-- CMainFrame
| +----CSubSplitter(CSplitterWnd)
| |CStviView(CTreeView)
| |CDustView(CTreeView)
| +-------------
|CMyEditView(CRichEditView)
+----------

とすれば良いようです。(未確認)



ツリーコントロールに関する不満(1999/11/03)




ツリーコントロールはMS-DOSのファイルシステムを
実に忠実にモデル化している。
あるノードより下のノードをすべて別の場所に
移動しようとすると、

(1)別の場所にコピーする。
(2)もとの場所のデータを削除する。

という動作が必要になる。
うーん。UNIXのmvコマンドに対応するものを
用意してくれてもいいじゃない。

セクション・レベル編集(1999/10/30)




ドラッグ&ドロップでセクションの入替えが行えるようになると、
もう少し、欲がでてきてしまう。
具体的にいうと、セクション単位の追加、削除機能が欲しくなった。
早く、α版をβ版にしなさい、取敢えず、当初の設計目標をクリア
しなさいと、心のどこかで声がするのだが、ついつい横道に外れて
しまう。
 まあ、いいや。どうせ趣味でやっているんだ。
やっぱり自分は製品開発には向いてないようだ
と、再確認しています。

著作権?(H11.10.24)




プロジェクトファイルの公開をずっと続けたかったのですが、
MFCソースのカット&ペースト等がでてきて、
そろそろやばい感じなので、今回は、プロジェクトファイルは
添付していません。ゴメンナサイ。

アイコン、ボタン等に関しましては、松崎氏に使用許諾を頂きました。
深くお礼申し上げます。

みうち? (1999/10/26)

HPで不特定多数の人間に、公開するのはまずいけれども、
社内のソースコード・レビューのように身内同志で「あーだ」「こーだ」
いうのは、自由だと考えています。
で、わたしはメールのやり取りをすれば、身内かなと考えているのですが
いかがなもんでしょうか?
(但し、無料アカウントのメールは除く。)




朝令暮改(H11.10.17)




本プロジェクトの「一時凍結」を先日宣言したのですが、
「アッ」いうまに、解凍することにしました。

理由の詳細は、設計メモに記述いたしました。

また、本プロジェクト名称を『"sted format"修飾ツール』開発プロジェクトに改称(解消ではない!)いたします。

今後とも、よろしくお願いいたします。

PS.札幌は初雪が降りました。

「お詫び」と「お知らせ」(H11.10.14)




このビュアーの完成を心待ちにしていた皆様(限りなく0に近いことは
じゅうじゅう承知しておりますが)、
本プロジェクトは今回、開発手順を無視して、子セクションの
ソート機能を付け加えさせて頂きましたが、
この段階で、本プロジェクトを一時凍結いたします。
大変申しわけありません。

そして、『"sted format"印刷ツール』開発プロジェクトを
新たに進めさせて頂きます。

本印刷ツールの特徴として

・文書には一切、書き込み処理を行わない安全なツールであること。
・印刷プレビューを持ち、指定ページのみの印刷を可能にする。

・指定レベルのセクション間で改ページ動作を行う。

・タイトル行は、他の部分とは異なるフォントを指定できる。

を考えております。ご要望等在りましたら、メール下さい。

印刷機能(H11.10.10)




CRichEditViewを使うことにしたら、
印刷機能の実現に色気が出て来てしまった。

タイトル行の4倍角(死語?)表示ができて、
セクション毎に改頁が入るような、
メモ帳の印刷機能より、ほんの少しだけ気の利いた奴。

MFCって・・・(H11.10.14)

メニュー項目の「印刷」および「印刷プレビュー」を削除せずに
いたのだが、CRichEditにキャレットがある状態では、
これらが、動作することに気付いた。
印刷関連のコードは自分では1行も書いていないのに。
MFCって、すごい。

まあ、文書全てを印刷する訳ではなく、現在 CRichEditCtrlに
設定されている内容だけが印刷されるだけだし、
Windowのサイズを変更(幅を狭く)して行数を増やしても
それには連動してくれないようだが。

じゃー、そうするためには何をすれば良いのだろう?
うーん、MFCって・・・。


CRichEditViewに変更したら・・・(H11.10.02)




CEditViewをCRichEditViewに変更することにした。
そうしたら、CRichEditViewにはSetBackgroundColorという
メンバ関数のあることがわかった。

なんだ、CEditViewの背景色を変更しようとして苦労することは
何もなかったんだ。

うーん。だけど、タブ位置はどうやって設定するんだろう。

PS.たかが、ビュアーの存在で400Kを超えてしまった。

CHtmlView(HTMLビュー)




 テックウィン10月号(アスキー)という雑誌に
『VC++攻略講座』なるものが連載されている。
 今月の目標はWWWブラウザーの作成。
 HTML文書をどうやって解析して、表示に反映させて
いくのかと興味を持って読んでいくと、−「基本クラス」の
リストから「CHtmlView」を選ぶ。−で一件落着。

やっぱりHTMLをいじるにはVC++5.0をVC++6.0に
した方が時間の節約にはなりそうです。時間を節約するか
金を節約するか、悩むところです。

でも、こんなクラスが追加されていくのをみると、
Jeff Prosiseが「MFCによるWindows95プログラミング」
の中で、「将来、WindowsAPIを使ってプログラムを書く
プログラマが、現在のアセンブリ言語プログラマと同じように
見られるかもしれない」と述べているのが実感としてわかります。


ツリーコントロールとウインドウの分割方向




ツリーのネストが深くなったり、ノード名が長い時には、
ツリービューとエディットビューを横に並べるより、
縦に並べた方が良いのではと思っていました。

 実際にやってみると、
表示上はたしかにその通りなの(だと私は考えるの)ですが、
操作上では、ツリービュー上で右に右に追っていった結果が
下に出てくるので、違和感のあることがわかりました。
(でも折角作った機能なので、大切にとっておきます。)
 やはり、エクスプローラを作った人はエライ。

オブジェクト指向の醍醐味




アマチュアのプログラマに許されるオブジェクト指向の醍醐味は、
既に動いているプログラムのメンバ変数(属性)やメンバ関数(メソッド)を
いじりまわして、 クラスの再構築を行い、よりオブジェクト指向の
プログラムらしくなったと悦に入ることではないだろうか?

stviに関しては、ブックマーク関連の実装に入る前に、
この辺の醍醐味を味わうモードに突入しました。

良いコーディングスタイル




 プログラマというのは皆それぞれ、コーディングスタイルについては
なんかこだわりを持っているのではないかと思います。

 私の究極の理想のひとつは、まずロジックがすべて日本語でかかれ、
その一行一行を展開する形で、コードが書かれているというものです。
 イメージ的には、C言語のアセンブラへの展開です。

 これが実現できた時には、結構質の高いコーディングができたと
自画自賛するのですが、日本語化の作業は結構面倒くさく、見きりで
コーディングに入ってしまい、後で泣きをみるということを繰り返して
います。

エディット・ビューの背景色変更はどうすれば・・・・




  この前チョット、CEditViewクラスの背景色の変更に挑戦してみた
 のですがなかなかうまく行かず挫折してしまいました。
  いい加減な、挑戦の仕方だったので、どっかで単純ミスを犯してい
 るのかもしれませんが、やったこと、やらなかったことは次の通り。

   (1)背景色の変更が可能なCEditの派生クラスを作り、これを使用
  するCEditViewクラスを作成しようかと思いましたが、背景色の変更が
  可能なCEditの派生クラスをどうやって作れば良いか思い付かず、その
  段階で挫折。(これがうまくいってたとしても、CEditViewクラスの
  変更で、たぶん挫折していたでしょう。)

   (2)CEditViewに関連付けられたCEditのウインドウスタイルに
  WS_EX_TRANSPARENTを指定して透過とし、CEditViewの背景色が直接
  画面にみえるようにしようとした。

 を実行してみたが、CEditは透過にならなかった。

   (3)メッセージハンドラOnCtlColorで、DCの背景色指定を行う
  事で背景色を変更しようとした。

  を書き加えたが、表示に変化はなかった。そもそもこのハンドラ自身
  Windowsから、呼ばれてないんではないだろうか?


後日談

 その後、なんとなく頭の隅に留めておいたら、

ヘルプで
「テクニカル ノート 62: Windows コントロールのメッセージ返送」
というのをみつけました。これの中に背景色を黄色にしたエディット
ボックスの派生クラスの作り方が紹介されていました。
 やはり、(1)の方法で実現するのが正攻法かなと思っています。

実行形式のファイル名はstvi.exeにしました。




 ちなみに、
   STは、わたしのイニシャルで
   STVは、札幌テレビを意味します。

  このプログラムは、ビュアーといいつつ、元のファイルを書き換えてしまう
  とんでもない奴なので、"stview"とはせずに、"stvi"にしました。
  UNIXユーザーなら、なんとなくわかってくれますよね。
  "view"ではなく"vi"なら、編集もOKだって。