tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^3: メモ帳のカーソル位置
投稿日: 2012/07/05(Thu) 15:26
投稿者魔界の仮面弁士
> > > 環境:VB6.08
> > Office VBA をお使いですか?
> 僕のバージョンの書き方がおかしかったでしょうか?
「VB6」や「VB6.0」という表現ならばよく目にしますが、
VB6.08 というバージョンは聞いたことが無かったので、
VBA 系かと勘繰ってしまいました。

# Major=6、Minor=0 系統(6.0.9782 や 6.0.98.15 など)なら、
# たまに見かけるのですけれどね。


> 魔界の仮面弁士さんのSendMessageの書き込みを発見しました。
何度か書いているかも知れませんが、本人も覚えていません。
どれのことだろう…。(^^;

> メモ帳の先頭行に挿入ということで
手抜き実装としては、AppActivate ステートメントでメモ帳をアクティブにした上で、
先頭なら Ctrl + Home、末尾なら Ctrl + End を送るという方法があります。

SendKeys "^{END}", True

これならば API 無しで実現できます。確実性はありませんが。


> 移動だけだと EM_SETSEL を使用すると理解しています。
EM_SETSEL メッセージの場合、wParam が開始位置、lParam が選択文字列の長さです。
VB6 の TextBox で言えば、wParam が SelStart プロパティ、
lParam が SelLength プロパティに相当すると考えれば良いかと。


今回は lParam は 0 固定で構いません。
wParam は、SendMessageA ではバイト数、SendMessageW では文字数を
渡すことになりますが、末尾にしたい場合には手を抜いて、固定で
Long 型の 最大値(&H7FFFFFFF)を指定するという手法も使われます。


> SendMessage(hwndTextBox, EM_SETSEL, 末尾, Nothing)
参考にしたものは、VB6 のものではなく、VB.NET 向けのコードのようですね。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。