C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[13]: HTMLエディターの作成


(過去ログ 15 を表示中)

[トピック内 28 記事 (1 - 20 表示)]  << 0 | 1 >>

■5451 / inTopicNo.1)  HTMLエディターの作成
  
□投稿者/ 倉田 有大 (47回)-(2007/07/13(Fri) 13:18:50)

分類:[C#] 

HTMLエディターを作成したいのですが、とりあえず、html文の特定のキーワードに色を付けるということを行いたいのです。
色は、richtextコントロールの多分rtfを直接あつかって変更することになると思うのです。以前。selectionを試しにつかったら、めちゃくちゃ遅かったのを覚えていますので^^;

textchangeイベントが起こるたびに、htmlすべてを解析しなおさないとだめでしょうか?
普通のキー入力なら、その行だけを解析すればよいとおもうのですが、複数行のペーストなどがあると、どこからどこまで、
ペーストされたかわからないと、どこからどこまで解析しなおさないといけないのが判断がつかないです。
TextChangedイベントで、ペーストされた文が取得できると、行単位の処理で行うことが出来ると思うのですが。
なにか、ヒントをいただけたら幸いです。

しかし、色を高速にかえることができる、テキストコントロールがほしいですね;_;
自分で以前テキストコントロールの作成に挑戦したときは、IMEのAPIをじかにいじらないことをしって挫折しましたね^^;
引用返信 編集キー/
■5476 / inTopicNo.2)  Re[1]: HTMLエディターの作成
□投稿者/ 倉田 有大 (48回)-(2007/07/14(Sat) 10:48:43)
まてよ、貼り付けのときだけ、全文処理しなおせばいいのか。
richtextboxに貼り付けが行われた時、イベント起きますでしょうか?

引用返信 編集キー/
■5478 / inTopicNo.3)  Re[2]: HTMLエディターの作成
□投稿者/ 渋木宏明(ひどり) (273回)-(2007/07/14(Sat) 18:18:05)
渋木宏明(ひどり) さんの Web サイト
イベントは changed 位しいかこないと思うけど、WndProc をオーバーライドすれば WM_PASTE を捕まえることはできるんじゃないでしょうか。

引用返信 編集キー/
■5479 / inTopicNo.4)  Re[3]: HTMLエディターの作成
□投稿者/ 倉田 有大 (49回)-(2007/07/14(Sat) 19:06:28)
No5478 (渋木宏明(ひどり) さん) に返信
> イベントは changed 位しいかこないと思うけど、WndProc をオーバーライドすれば WM_PASTE を捕まえることはできるんじゃないでしょうか。

渋木宏明さん、どうもありがとうございます、WM_PASTEが送られてくるんですね。
解決済み
引用返信 編集キー/
■5480 / inTopicNo.5)  Re[4]: HTMLエディターの作成
□投稿者/ 渋木宏明(ひどり) (274回)-(2007/07/14(Sat) 20:34:22)
渋木宏明(ひどり) さんの Web サイト
>WM_PASTEが送られてくるんですね。

「通例としては」です。
モノによっては独自にキー入力を処理している場合もあるはずです。

RichTextBox がどういう実装になっているかは、僕は分かりません。
引用返信 編集キー/
■5482 / inTopicNo.6)  Re[5]: HTMLエディターの作成
□投稿者/ 倉田 有大 (50回)-(2007/07/14(Sat) 22:23:37)
2007/07/14(Sat) 22:24:04 編集(投稿者)

No5480 (渋木宏明(ひどり) さん) に返信
> >WM_PASTEが送られてくるんですね。
>
> 「通例としては」です。
> モノによっては独自にキー入力を処理している場合もあるはずです。
>
> RichTextBox がどういう実装になっているかは、僕は分かりません。

なるほど、実験してみます。
まあ、TextBoxとそう変わらないとはおもうのですが^^
解決済み
引用返信 編集キー/
■5485 / inTopicNo.7)  Re[6]: HTMLエディターの作成
□投稿者/ 倉田 有大(UNYORA) (3回)-(2007/07/14(Sat) 23:07:04)
ありゃ、ぐぐったら、じゃんぬねっとさんの
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=27339&forum=7
>RichTextBox も WM_PASTE が捕捉できれば確実なんですけどね... (^^;)
こんな発言が。
出来る事前提に何か考える前に、試したほうがよさそうですね
引用返信 編集キー/
■5486 / inTopicNo.8)  Re[7]: HTMLエディターの作成
□投稿者/ 倉田 有大 (52回)-(2007/07/14(Sat) 23:16:15)
2007/07/14(Sat) 23:17:01 編集(投稿者)

あれ、ぎゃーああああああああ
こないいいいいいいいいい!!!!!!!!!(爆)

Key_DownかKey_Pressイベントつかうしかないのかな^^;;;
引用返信 編集キー/
■5547 / inTopicNo.9)  Re[1]: HTMLエディターの作成
□投稿者/ れい (5回)-(2007/07/18(Wed) 01:06:11)
No5451 (倉田 有大 さん) に返信
> ペーストされたかわからないと、どこからどこまで解析しなおさないといけないのが判断がつかないです。

相違点を検索するアルゴリズムはかなり高速なのがあります。
また、変更は分割して発生することはありませんので
頭から、足から変更点をはさむ簡易的な方法でも、
(HTMLが相当巨大でない限り)うまくいくのではないでしょうか?

MS推奨な方法では、
ペーストのタイミングと位置を知るために
IRichEditOleCallback::QueryInsertObject
が用意されています。
これだと完璧ですが、.Netだとちょっと実装がめんどくさいですね
引用返信 編集キー/
■5562 / inTopicNo.10)  Re[2]: HTMLエディターの作成
□投稿者/ 倉田 有大 (54回)-(2007/07/18(Wed) 13:07:44)
No5547 (れい さん) に返信
> ■No5451 (倉田 有大 さん) に返信
>>ペーストされたかわからないと、どこからどこまで解析しなおさないといけないのが判断がつかないです。
>
> 相違点を検索するアルゴリズムはかなり高速なのがあります。

れいさん、お返事ありがとうございます。
これは、TextChangedイベントが発生するたびにTXT全体を保存して、差分を調べるという方法でしょうか?

> また、変更は分割して発生することはありませんので

すいません、これはどういった意味でしょうか?^^;

> MS推奨な方法では、
> ペーストのタイミングと位置を知るために
> IRichEditOleCallback::QueryInsertObject
> が用意されています。
> これだと完璧ですが、.Netだとちょっと実装がめんどくさいですね

こういうのがあるんですね。.Netだとどう実装するのか、ちょっと調べてみないと、私にはわかりません。
ぐぐってみますね。
引用返信 編集キー/
■5576 / inTopicNo.11)  Re[3]: HTMLエディターの作成
□投稿者/ れい (6回)-(2007/07/18(Wed) 17:10:14)
No5562 (倉田 有大 さん) に返信
> れいさん、お返事ありがとうございます。
> これは、TextChangedイベントが発生するたびにTXT全体を保存して、差分を調べるという方法でしょうか?

そうです。
だめかな?

>>また、変更は分割して発生することはありませんので
>
> すいません、これはどういった意味でしょうか?^^;

変更点を探したときに、かならず

未変更部分-変更部分-未変更部分

となるはずだということです。

未変更部分-変更部分-未変更部分-変更部分-未変更部分

こうはならない、ということです。(たぶん。
だから先頭からと末尾から変更点をはさめば小さくてすむかなーと。
だめかな?

引用返信 編集キー/
■5577 / inTopicNo.12)  Re[4]: HTMLエディターの作成
□投稿者/ mあ (18回)-(2007/07/18(Wed) 17:46:13)
> 未変更部分-変更部分-未変更部分
>
> となるはずだということです。
>
> 未変更部分-変更部分-未変更部分-変更部分-未変更部分
>
なりますよ。
全コピー、修正、全ペーストで。

JavaScript で HTML エディタを作成されている方が居るのでそちらの方と相談してみたら
どうでしょうか?
http://www.forest.impress.co.jp/article/1999/04/22/iehtmledit.html
技術提供っての?フリーソフトで名のある方ですから、もしかしたら相談に乗ってくれる
かもしれませんよ。

基本は、IEのDOMパーサー任せで、必要な時だけ、C#の方から必要な情報だけぱくる、
ってのがいいかもしれませんね。

画面のペーストイベントハンドルして innerText を IFRAMEに write して、結果のDOM
ツリー取って、タグノード全てを再起処理で色づけして、結果を画面にアペンドする。

責任持てない発言で済みません。

引用返信 編集キー/
■5579 / inTopicNo.13)  Re[5]: HTMLエディターの作成
□投稿者/ ぽぴ王子 (242回)-(2007/07/18(Wed) 18:12:02)
ぽぴ王子 さんの Web サイト
> JavaScript で HTML エディタを作成されている方が居るのでそちらの方と相談してみたら
> どうでしょうか?
> http://www.forest.impress.co.jp/article/1999/04/22/iehtmledit.html

Webサイトが移転していて、移転先でも
> 昔は頻繁に更新していましたが、2002年頃からは惰性で続けているような状態です。
> 2006年からは放置状態です。
と書かれているので、難しいかも。

個人的な感想から言うと、HTMLエディタと題するものにRichTextBoxコントロールを
使うのもちょっとはばかられるというか、簡単に色がつけられるテキストボックス
だから!とかいう理由でRichTextBoxをホイホイと使うのは、自分はしないかなあとか
思ってみたり。
できればエディタ部分も自作するぐらいの気合いがあればいいのだけど、でもそれは
それでハードルが高いし、その時点でかなりやる気がなくなりそうです。
あくまで個人的な感想で申し訳ないですが、自分であれば「あきらめる」という選択肢が
第一に浮かんでしまいそうです。
引用返信 編集キー/
■5584 / inTopicNo.14)  Re[6]: HTMLエディターの作成
□投稿者/ 倉田 有大 (55回)-(2007/07/18(Wed) 19:13:28)
みなさん、ありがとうございます。

>JavaScript で HTML エディタを作成されている方が居るのでそちらの方と相談してみたら
どうでしょうか?

JavaじゃなくJavaScriptですか、それはすごい^^;

>個人的な感想から言うと、HTMLエディタと題するものにRichTextBoxコントロールを
使うのもちょっとはばかられるというか、簡単に色がつけられるテキストボックス
だから!とかいう理由でRichTextBoxをホイホイと使うのは、自分はしないかなあとか
思ってみたり。

そうですね、いらない機能もたくさんあります。
正直、テキストボックスに色付けられたらそっちつかうのですが。


>できればエディタ部分も自作するぐらいの気合いがあればいいのだけど、でもそれは
それでハードルが高いし、その時点でかなりやる気がなくなりそうです。

IMEを.Netで直接操作できないんですよね?
ここが一番のハードル?と思っています。
API直にいじるしかないか^^;

>あくまで個人的な感想で申し訳ないですが、自分であれば「あきらめる」という選択肢が
第一に浮かんでしまいそうです。

趣味ですから、まあ、楽しみながらやっていきたいと思います。
テキストエディターコントロール作りに挑戦しようかな^^;

引用返信 編集キー/
■5585 / inTopicNo.15)  Re[6]: HTMLエディターの作成
□投稿者/ Jitta (372回)-(2007/07/18(Wed) 19:14:39)
あきらめてコントロールを探した人が来ましたよ。

会社のIEのお気に入りに入っているので、明晩にでも...


たしか、
HTML EDIT COMPONENT
で検索したような?
引用返信 編集キー/
■5586 / inTopicNo.16)  Re[7]: HTMLエディターの作成
□投稿者/ 倉田 有大 (56回)-(2007/07/18(Wed) 19:19:09)
げげ、昔挑戦したサンプルソースが無いorz どっかいっちゃった
まさしく一からのスタートになりそうです。

http://tsuge.astgate.biz/witchgarden/?C%23%20Tips%2fWitchPaper%a4%c7%bc%c2%c1%f5%a4%b7%a4%bfIME%c0%a9%b8%e6

しかし、こういうページを見つけました。助かる〜T^T


引用返信 編集キー/
■5587 / inTopicNo.17)  Re[8]: HTMLエディターの作成
□投稿者/ 倉田 有大 (57回)-(2007/07/18(Wed) 19:20:34)
>会社のIEのお気に入りに入っているので、明晩にでも...

Jittaさん、ありがとうございます<__>

引用返信 編集キー/
■5591 / inTopicNo.18)  Re[9]: HTMLエディターの作成
□投稿者/ 倉田 有大 (58回)-(2007/07/18(Wed) 19:56:44)
なんじゃ、こりゃ、むかしのIMMのサンプルみつけて、うごかないなとおもったら、

http://forums.microsoft.com/msdn-ja/ShowPost.aspx?PostID=264330&SiteID=7

>これは仕様変更によるものです。2.0 ではキー入力を持つコントロールとキー入力を持たないコントロールに分け、キー入力を持たないコントロールでは、IME が機能しないように変更いたしました。

こんなんみつけました。

>キー入力を受け付ける場合は、Contorl や TextBox (BorderStyle=None, BackColor=Control, Multiline=true)等を全面に貼り付けて使用してください。

えー!パネル継承させてつくろうとおもったんですが。
引用返信 編集キー/
■5595 / inTopicNo.19)  Re[10]: HTMLエディターの作成
□投稿者/ 倉田 有大 (59回)-(2007/07/18(Wed) 20:41:37)
case 0x0281:
bool rc = Win32.ImmAssociateContextEx(
this.Handle,
new IntPtr(0), //<-無視されます//
Win32.ImmAssociateContextExFlags.IACE_DEFAULT);

これでIME開けました。
えーと、運良くテキストエディターが完成したとしても、数年後ですかね(爆)
引用返信 編集キー/
■5597 / inTopicNo.20)  Re[5]: HTMLエディターの作成
 
□投稿者/ れい (7回)-(2007/07/18(Wed) 20:47:18)
No5577 (mあ さん) に返信
>>未変更部分-変更部分-未変更部分
>>
>>となるはずだということです。
>>
>>未変更部分-変更部分-未変更部分-変更部分-未変更部分
>>
> なりますよ。
> 全コピー、修正、全ペーストで。

全ペーストしたら全部変更部分なんでは…?
1回のキー入力、ペーストではならないような。
まぁそうなっても前後の変更部分を除くだけで十分だとおもいますが。

No5579 (ぽぴ王子 さん) に返信
>個人的な感想から言うと、HTMLエディタと題するものにRichTextBoxコントロールを
>使うのもちょっとはばかられるというか、簡単に色がつけられるテキストボックス
>だから!とかいう理由でRichTextBoxをホイホイと使うのは、自分はしないかなあとか
>思ってみたり。

簡単に色をつけたいときはみなさんどうしますか?
すごく悩ましい問題ですが、
私は仕方なくRichEditを使ってしまいますねぇ。
変更不可なら自分で描くんですが。


引用返信 編集キー/

次の20件>
トピック内ページ移動 / << 0 | 1 >>

管理者用

- Child Tree -