- - PR -
RichTextBoxでのAPI利用
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-12-18 22:13
現在C#でWindowsアプリを作成しているのですが、
RichTextBoxについてお聞きしたいことがあります。 RichTextBoxで、表示されている一番上の行と一番左に表示されているのが何番目の文字か、 全部で何行あるのかなどを取得したいのです。 APIでpublic static extern int SendMessage(IntPtr hWnd, uint msg, uint wParam, uint lParam); を使えばいいようなことがWebに乗っていたのですが、msgに public readonly uint EM_GETLINECOUNT = 0x00BA; public readonly uint EM_LINEINDEX = 0x00BB; public readonly uint EM_LINEFROMCHAR = 0x00C9; などを送っても正しい値が返ってきません。 どなたか、同じようなことをしたことのある方はいらっしゃいませんでしょうか。 ご教授願います。 | ||||||||||||
|
投稿日時: 2003-12-19 00:08
こんにちわ。諸農です。
EM_GETLINECOUNTは行の総数、EM_LINEINDEXは指定された行の左端までの文字数、 EM_LINEFROMCHARはキャレットのある行番号を取得するものですよね? 表示されている一番上の行を取得するメッセージが定義されていませんが、 どのような方法で試してみて、正しい値が返ってこないとされているのでしょうか? こちらで試してみましたが、期待通りのことは出来ます。 おせっかいかもしれませんが、コードの添付を忘れました(^^;
表示されている先頭行が取得できているなら、こっちの方が簡単かも。
_________________ 諸農和岳 Powered by Borland Delphi/C++Builder & Microsoft VS.NET [ メッセージ編集済み 編集者: Jubei 編集日時 2003-12-19 00:19 ] [ メッセージ編集済み 編集者: Jubei 編集日時 2003-12-19 00:20 ] [ メッセージ編集済み 編集者: Jubei 編集日時 2003-12-19 00:25 ] | ||||||||||||
|
投稿日時: 2003-12-19 22:16
諸農さん、レスありがとうございます。
EM_GETFIRSTVISIBLELINEは定義していませんでした・・・。 EM_LINEINDEXを送っても0しか返ってこなかったのですが、 第三引数で-1を送っていたので、それかもしれませんね。 これから試してみたいと思います。
非常に助かります。 サンプルコードを探してもなかなか見つからなかったもので。 APIをあまり使ったことがないので、使い方がいまいちわからなかったりしたので。 | ||||||||||||
|
投稿日時: 2003-12-20 00:27
こんにちわ。諸農です。
どうやって、表示されている最上位行を取得していたんですか? 「うまくいかない」というのはどういった現象を指していたんでしょうか? また、定義されていたメッセージの意味を調べられましたか?
-1を送ると、現在キャレットのある行が対象となりますけど、 現在の行位置を確認されましたか?
MSDNサイトで確認できましたけど。。 例えば「EM_LINEINDEX」メッセージであれば。。 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/editcontrols/editcontrolreference/editcontrolmessages/em_lineindex.asp?frame=true もしも、MSDNに加入していればローカルデスクトップですぐに検索も可能です。 本筋からは外れるかもしれませんが、Borland DelphiやBorland C++Builderのような マイクロソフト社とは違う会社の開発ツールベンダーの製品にもWin32SDKHELPは付属し ています。それらを使っても、上記のメッセージの意味くらいなら検索は可能ですし、 旧版のVSにもWin32が検索できるドキュメントが付属しているはずです。 また、オンラインサイトに頼らなくても書籍がたくさんあると思いますよ。 ではでは(^^)/ _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||||||
|
投稿日時: 2003-12-20 23:13
諸農さん、ありがとうございます。
最上位の行取得は定数を探していた段階で、 キャレット位置の行番号などがうまく返ってこなかった時点で 質問させていただいたため、定義していませんでした・・・。 諸農さんに載せていただいたコードで想定とおりの値が帰ってきました。 が、等幅フォント(MS ゴシック)を指定しているのに、 アルファベットと日本語を混在させると、 幅が合わない現象に陥っています。 例えば、1行目に半角英数6文字、2行目に全角日本語3文字。 等幅フォントの場合には、上下の行で同じ幅になりますよね? これを回避する方法はあるのでしょうか。 ##新規レス立てたほうがよかったかな・・・。 | ||||||||||||
|
投稿日時: 2003-12-21 00:09
こんにちわ。諸農です。
英文字を入力するとフォントがArailに変わるという現象ですか? 以前、GDNJの掲示板でも話題になっていました。 NewsGroupでも話題になっていたようです。 GDNJ「RichTextboxのフォントについて」 http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=1526 上記掲示板の発言中に、ニューズグループへのリンクが提示されています。 ではでは(^^)/ _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||||||
|
投稿日時: 2003-12-21 20:40
諸農さん、ありがとうございます。
リンクを参考に調べてみたいと思います。 また、不明な点がありましたら、 質問させていただきますので、よろしくお願いいたします。 |
1