リッチエディットのURL検出

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

リッチエディットのURL検出

#1 投稿記事 by 長瀬 »

みなさんはじめまして。

リッチエディットを作って、EM_AUTOURLDETECTを送ってURLの検出はできたのですが、
URL検出部分にマウスが来たり、マウスがクリックされたときを知るにはどうすればよろしいでしょうか?
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#2 投稿記事 by konisi »

コード: 全て選択


Function OnMouse(ByRef X As DWord,ByRef Y As DWord) As DWord
	Dim A As POINTAPI
	Dim B As RECT
	GetWindowRect(_PromptSys_hWnd,B)
	GetCursorPos(A)
	X=A.x-B.left-6
	Y=A.y-B.top-31
	OnMouse=-1
End Function
メニューが入っていなければ、これでマウスのクライアントな位置は把握できたと思います。(古いコード、しかもpromptモードのものから引っ張ったのでなんともいえませんが。)
メニューが入っている場合は上の31を少し大きくしてみるなりして工夫してください。
マウスのボタンがクリックされたかどうかは、僕の場合は

コード: 全て選択


if GetAsyncKeyState(1) And &h8000 Then
    '左クリック時
Else if GetAsyncKeyState(2) And &h8000 Then
    '右クリック時
End if
これでやっちまいます。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
Mario2
記事: 205
登録日時: 2005年5月31日(火) 13:31
お住まい: 大阪市
連絡する:

Re: リッチエディットのURL検出

#3 投稿記事 by Mario2 »

ここは参考になりませんでしょうか?(C言語ですが…)

[猫でもわかるプログラミング - 第149章 本文中からURLを検出する ]
http://www.kumei.ne.jp/c_lang/sdk2/sdk_149.htm

参考にならなかったらすいません。
長瀬

Re: リッチエディットのURL検出

#4 投稿記事 by 長瀬 »

> ここは参考になりませんでしょうか?(C言語ですが…)
>
> [猫でもわかるプログラミング - 第149章 本文中からURLを検出する ]
> http://www.kumei.ne.jp/c_lang/sdk2/sdk_149.htm
>
> 参考にならなかったらすいません。

イベントマスクにENM_LINKを加えるのまで出来たんですが、
WM_NOTIFYメッセージの処理がよくわかりません・・・
Tomorrow
記事: 72
登録日時: 2005年6月04日(土) 10:09

Re: リッチエディットのURL検出

#5 投稿記事 by Tomorrow »

> [猫でもわかるプログラミング - 第149章 本文中からURLを検出する ]
> http://www.kumei.ne.jp/c_lang/sdk2/sdk_149.htm
>
> 参考にならなかったらすいません。

イベントマスクにENM_LINKを加えるのまで出来たんですが、
WM_NOTIFYメッセージの処理がよくわかりません・・・
↑のサイトのWM_NOTIFYメッセージハンドラの部分のみをAB風に書き直しただけのものですが...
長瀬

Re: リッチエディットのURL検出

#6 投稿記事 by 長瀬 »

もしかして、ENLINK構造体の定義とかもしないといけないんですか
よくわかりません・・・(泣)
Tomorrow
記事: 72
登録日時: 2005年6月04日(土) 10:09

Re: リッチエディットのURL検出

#7 投稿記事 by Tomorrow »

ABで定義されてないAPI関数や構造体を定義するときは、まずC言語用定義を探します。
検索エンジンで関数名や構造体名をキーワードにしてMSDNのサイトを見つけるのが、もっとも確実です。

コード: 全て選択

typedef struct {
    NMHDR nmhdr;
    UINT msg;
    WPARAM wParam;
    LPARAM lParam;
    CHARRANGE chrg;
} ENLINK;
C用の構造体定義が見つかったらABの書式に書き換えます。
↓が参考になるでしょう。
http://hira.hopto.org/win32api/convert01.htm
どうしてもわからない場合、Cのヘッダファイルをさがして元の定義が何なのかを調べます。

コード: 全て選択

Type ENLINK
	nmhdr As NMHDR
	msg As DWord
	wParam As WPARAM
	lParam As LPARAM
	chrg As CHARRANGE
End Type

過去ログを探すと他の人がすでに定義したものが見つかるかもしれません。
また、こちらのサイトではAB用のWin32API定義ファイルを公開しています。
これらを切り貼りして利用する手もあります。(著作権等に注意)
長瀬

Re: リッチエディットのURL検出

#8 投稿記事 by 長瀬 »

>Tomorrow さん

ご紹介いただいたサイトを見ながら出来ました。
ありがとうございました。
返信する