メルマガ:あゆしゃのC言語プログラミング
タイトル:あゆしゃのC言語プログラミング(Vol.515) あいすエディッタ Ver 0.0.0.3  2004/11/01


/*========================================================*/
    <<<あゆしゃのC言語プログラミング>>>
/*========================================================*/
 第515回 あいすエディッタ Ver 0.0.0.3
 発行    2004年11月1日(月曜日)
 発行数   約2600

{magclick}
/*========================================================*/
 はじめに ( 決り文句 )
/*========================================================*/
・このメールマガジンは、主にまぐまぐさんから発行しています。
・ジャンルは、マルチメディアのプログラム、C言語です。
・横60文字で作成し、インデントは大抵半角スペース4つです。
・ここで扱うプログラムは、C言語と半光年以内のものです。
・登録解除は、メルマガのホームページでお願いします。
・過去ログはバックナンバー(下欄参照)を活用して下さい。
・内容は私が感じたもので、最新の技術も、へたれもあります。
・わかりやすさを優先させる為、たまに嘘があるかもしれません。
・セキュリティ突破のため、暗号化された単語があります。

/*========================================================*/
 ご挨拶
/*========================================================*/

 こんにちは。あゆしゃです。

 すこし、配信が遅れてしまいました。

 別に、ゲームをやっていたからではありません。

 実は、とある理由でユウナ様を検索していたのですが、そこで
ユウナ様ご一行をペットとして飼っている、シムピープルのページ
を見つけました。

 ユウナ様の私生活に一喜一憂していたところ、ふと、
シムピープルってなんだろうと、疑問に思いました。

 そこで調べたところ、あのシムシティの仲間であることが分かり
ました。

 そのとき、シムシリーズ(というらしい)の(たぶん)純正の
ホームページにて、すごいものを見つけてしまったのです。

http://www.japan.ea.com/simcity4/playonline.html

 なんと、インターネット上から「無料で」遊べるシムシティ
です!

 ふと懐かしさを感じながら、ぺしぺしと遊んでいたら、気づくと

 。。。夜中の2時になっていました。。。明日会社なのに。。。

{magclick}
/*========================================================*/
 今回のお題  << あいすエディッタ Ver 0.0.0.3 >>
/*========================================================*/

 前回のものに、行番号が表示されるように修正しました。

プロジェクト
http://ayusya.hp.infoseek.co.jp/Download/AysEditer_0003.zip
実行イメージ
http://ayusya.hp.infoseek.co.jp/Image/AysEditer_0003.jpg

/*========================================================*/

 イベント駆動で再描画をさせると面倒くさいので、とりあえず
タイマー駆動にました。だから少しぎこちないです。

 OnInitDialog にて100ミリタイマーを発生させて、OnTimer
にて行番号の描画処理を直接書いています。

 表示する最初の行と最後の行の取得は、紹介したとおりです。

最初
int top = pEdit->GetFirstVisibleLine();

最後
CRect rc;
pEdit->GetRect( &rc );
int end_ind = pEdit->CharFromPos(
    CPoint( rc.left, rc.bottom - 1 ) );
int end = pEdit->LineFromChar( end_ind );

/*========================================================*/

 行番号表示は、

 最初の行から最後の行までループを回して、

 その行のインデックスを求めて、

 インデックスから座標を求め、

 その座標に表示します。

 CEdit の原点(0,0)に行番号ウィンドウを置いているので、
CEdit のクライアント座標がそのまま使えて、座標変換の手間は
ありません。

 しかーし。


 座標を取得する関数は、よく失敗するので、注意が必要です。

 失敗した場合は、座標がマイナスになります。

 その場合、前回の位置をすこしずらして、何ちゃって座標で
代用します。

 しょーがないです。

 成功した場合には、ラッキーということで、前回の座標から
行番号の正確な Height を割り出しておきます。

/*========================================================*/

 行番号の描画には、CDC::DrawText を使っています。

 右寄せをするためです。

/*========================================================*/

 遊び心で、カーソル位置にある行番号の色を変えてみました。

 変えるといっても、CDC::InvertRect を使って、RGB を反転
させているだけです。

 カーソル位置が強調されて、なかなかいい感じです。

 反転するサイズは、行番号を表示した時の座標をとっておき、
そこからひろいます。

 なので、ループの後で反転をかけます。

{magclick}
/*========================================================*/
 さいごに
/*========================================================*/

 今後の予定です。あくまでも予定です。

 大型計算機「LC」の仕上げとシェアウェア登録

 グラフィックエディッタ「あいすドロワ」の作成
 ファイル比較ツール「あいすでふ」の作成
 C言語解析ツール「しーますた」の作成

★メジャーを登録済み、登録が完了しました

{magclick}
/*========================================================*/
 次回予告
/*========================================================*/

 次回は11月3日(水曜日)に、第516回をお送りします。
 お題は「Measure」

 今回公開した「メジャー」について、紹介します。

 お楽しみに!

/*========================================================*/
 最後の決り文句
/*========================================================*/
 このメールマガジンは、まぐまぐさんから発行しています。
 このメールマガジンを解除したい場合は、まぐまぐさんをご利用
ください。このメルマガのまぐまぐアイディーは最後にあります。
 このメールマガジンには広告が挿入されていますか?
 このメールマガジンの内容に文面の引用はありませんか?
 めーらっくすの場合はめーらっくすの利用方に従ってください。
 このメールマガジンの内容の、転用、流用、宣伝、リンク、
あゆしゃ、ひそかに誕生日 なんて大歓迎です。

{magclick}
/*========================================================*/
 
/*========================================================*/

発行者 あゆしゃ

ホームページ::あゆしゃの世界
http://ayusya.hp.infoseek.co.jp/

ご意見・ご感想・ご質問メール
mailto:ayusya@flamenco.plala.or.jp

まぐまぐ::アイディー
0000020674

まぐまぐ::登録と解除
http://www.mag2.com/m/0000020674.htm

まぐまぐ::バックナンバー
http://jazz.tegami.com/backnumber/frame.cgi?id=0000020674

めーらっくす::アイディー
MM3E1AEE285AB4F

めーらっくす::登録と解除
http://www.mailux.com/mm_dsp.php?mm_id=MM3E1AEE285AB4F 

めーらっくす::バックナンバー★最近のものならこちらが便利★
http://www.mailux.com/mm_bno_list.php?mm_id=MM3E1AEE285AB4F

ブラウザの閉じるボタンで閉じてください。