番号

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
まったくの初心者

番号

#1 投稿記事 by まったくの初心者 »

MainWndのEditBoxの左端に「ActiveBASIC」のように行数の番号を表示
したいのですが、名前の通りまったくの初心者のため、ソースと詳しい解説
をお願いします。ABの上、中級者の方のお世話になりながら自分の技術を
少しでも磨けたらいいと思っています。

よろしくを願いします。
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

Re: 番号

#2 投稿記事 by 7 »

> MainWndのEditBoxの左端に「ActiveBASIC」のように行数の番号を表示
> したいのですが、名前の通りまったくの初心者のため、ソースと詳しい解説
> をお願いします。
外見上はこうしたいってことですよね。 とりあえず、自分だったらCreateWindowEx()関数でウィンドウを作って、そのウィンドウのクライアント領域左側を適当な分だけ行数表示の領域と考え、そこにはDrawText()関数とかDrawTextEx()関数で行数を描写、右側にはユーザーが入力した文字列を描写って感じにします。

もちろんこれは独自にエディットコントロールを作る必要があるので初心者の方には難しいと思います...。

で、申し訳ないですけど、通常のエディットボックスやリッチエディットではどうやるのか分かりません...。
まったくの初心者

EditBoxの作り方は

#3 投稿記事 by まったくの初心者 »

7さんのおっしゃっていた、自分でEditBoxをつくるとはどうすればいいのですか。

できればソースと解説をお願いします。
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

Re: EditBoxの作り方は

#4 投稿記事 by 7 »

> 7さんのおっしゃっていた、自分でEditBoxをつくるとはどうすればいいのですか。
  • 1. ウィンドウを作る。
    • 1. スクロールバーを操作する関数群を実装する。
      • 1. etcetc...
      2. WM_CHAR が送られてきた時の処理を実装する。
      3. リサイズ時の処理を実装する。
      4. キャレットを操作する関数群を作る。
      • 1. etcetc...
      5. etcetc...
    2. 文字列を操作する関数群を作る。
    • 1. 循環リストを実装する。(行単位での双方向が望ましい?)
      • 1. しかるべき行のノードの追加、挿入、削除する機能を実装する。
        2. しかるべき行のノードにデータを適切に追加、挿入、削除する機能を実装する。
        3. etcetc...
      2. etcetc...
    3. ウィンドウに文字列を描写する関数群を作る。
    • 1. ダブルバッファリングを実装する。
      2. しかるべき位置に行数を描写する必要がある。
      3. しかるべき位置に入力された文字列を描写する必要がある。
      4. etcetc...
> できればソースと解説をお願いします。
ソースなんて隠す必要あるのかなんて考える人間なので提示できたらするんですけど、できないのでしません。
というか、以前のソースをどこまでも改造していけばいつかできると思います。
ウィンドウクラスの情報を設定する時に背景色を設定し忘れてるのとか訂正しながら。

歯磨いて寝よっ。
まったくの初心者

まったくの初心者のため...

#5 投稿記事 by まったくの初心者 »

本当にすみません。

名前の通りまったくの初心者のため、解説に加えソースコードも投稿していただけませんか。

7さんには本当にご迷惑をおかけしていることはよく存じています。

お願いします。m(..)m
まったくの初心者

本当にすみません。

#6 投稿記事 by まったくの初心者 »

5/15日の投稿から一週間いろいろ検索して、打ち込んでやったのに、

警告....だの...が無効だのいろいろエラーがでて、僕のような「カス」の技術では
とてもできないテクニックです。

そこで、7さんなど、ヘビーユーザーの方に、やり方を細かく教えていただき
これ以上ヘビーユーザーに方々にやり方を聞くことのないように、

自分のテクニックを磨こうと今思っています。

いろいろとすみません。どうか、お願いします。
まったくの初心者

できました。

#7 投稿記事 by まったくの初心者 »

何とか番号を表示するようにはなったのですが、肝心の文字が打てません。
打ち込むにはどうすればいいでしょうか。

また、改行したときに、番号もそれにあわせて、増えていくようにするにはどうすれば
いいですかね。

お願いします。
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

Re: できました。

#8 投稿記事 by 7 »

> 何とか番号を表示するようにはなったのですが、肝心の文字が打てません。
> 打ち込むにはどうすればいいでしょうか。
ユーザーがキーボードを押した時の処理も全部自分で実装しなくてはなりません。

> また、改行したときに、番号もそれにあわせて、増えていくようにするにはどうすれば
> いいですかね。
例えば、ユーザーが改行するたびに行数をカウントアップしてその数だけ番号を描写したらいいんじゃないでしょうかねぇ。
随分と手抜きで間の抜けた作りなので参考程度にしかなりません。

このサイトを参考にご自分で頑張っては如何でしょう。
http://vivi.dyndns.org/tech/tech.phtml
自分は「行単位双方向リンク」という項目に悩んでます...。

所でエディットボックスに行数を表示する機能を考えて思いついたんですけど、エディットボックスを2つ用意して1つは行数だけ表示してれば良さそうですよね。
もう1つが改行するたびに行数を増やして。(意味不明かな...?)
入力するエディットボックスに同期させないと無理なんですけどねぇ。
hige3

2エディットボックスの同期スクロール

#9 投稿記事 by hige3 »

すみません、ここへ割り込んでいいのかどうか。
下記で悩んでいて7さんの文章がが目に入りましたので飛びつきました。

2つのエディットボックスを用意して、スクロールバーで2つのエディットボックスをスクロールさせる方法についてお知らせ下さい。
初心者向けにお願い致します。

>所でエディットボックスに行数を表示する機能を考えて思いついたんですけど、エディットボックスを2つ用意して1つは行数だけ表示してれば良さそうですよね。
>もう1つが改行するたびに行数を増やして。(意味不明かな...?)
>入力するエディットボックスに同期させないと無理なんですけどねぇ。
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

Re: 2エディットボックスの同期スクロール

#10 投稿記事 by 7 »

> 2つのエディットボックスを用意して、スクロールバーで2つのエディットボックスをスクロールさせる方法についてお知らせ下さい。
お知らせです。
思いついただけで出来るか試してないので動くか分かりませんよ。

まず、スクロールバーが動いた時(動き終わった時か)にGetScrollInfo()関数でスクロールバーの情報を取得。
次に2つのエディットボックスに対し、SetScrollInfo()関数でスクロールバーの情報を設定してやります。
これでいいんじゃないかと思ったんですけど...。

> 初心者向けにお願い致します。
スクロールバーについて、ヘルプを見たり、インターネットで検索してみて、それで分からないことがあったらまた質問して下さい。
hige3

アドバイスありがとうございます。

#11 投稿記事 by hige3 »

7さんありがとうございます。
思うようにスクロールバーを操作するには時間がかかりそうなので、2つの内容をTABで1行にくっつけて、1つのエディットボックスでスクロールさせる姑息な手段をとりました。
掲示板ではHELPにないコマンドなどを見かけます。
ABHelperを参考にさせていただいておりますが、更なる充実を待ち望んでいます。
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

Re: アドバイスありがとうございます。

#12 投稿記事 by 7 »

hige3さん さんが書きました:思うようにスクロールバーを操作するには時間がかかりそうなので、2つの内容をTABで1行にくっつけて、1つのエディットボックスでスクロールさせる姑息な手段をとりました。
いや、スクロールバーを同期させようってのも結構姑息なやり方だと思いますよ。

解決したようですけど、とりあえず同期させようと思ってやってみました。ちょっと面倒そうです...。
Edit1のスクロールバーの情報を取得、Edit2のスクロールバーの情報を設定しようとすると、Edit2のスクロールバーが有効状態(?)じゃないと設定できなくて、まずこれが問題です。
適当にEdit2の内容を改行してスクロールバーを有効状態にして、スクロールバーの情報を設定するんですけど、Edit2に表示される内容はスクロールしてくれないんですよね。盲点でした。これも問題です。

EM_SCROLLを使ったり色々やればできるのかもしれませんけど、面倒なので止めます。

> 掲示板ではHELPにないコマンドなどを見かけます。
> ABHelperを参考にさせていただいておりますが、更なる充実を待ち望んでいます。
ActiveBasic付属のヘルプに載っていないヘルプから作っていけば読む方としては効率が良いんでしょうけど、現状は...。
頑張ろうと思います。
返信する