みなさんはじめまして。
リッチエディットを作って、EM_AUTOURLDETECTを送ってURLの検出はできたのですが、
URL検出部分にマウスが来たり、マウスがクリックされたときを知るにはどうすればよろしいでしょうか?
リッチエディットのURL検出
コード: 全て選択
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
メニューが入っている場合は上の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を主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
Re: リッチエディットのURL検出
ここは参考になりませんでしょうか?(C言語ですが…)
[猫でもわかるプログラミング - 第149章 本文中からURLを検出する ]
http://www.kumei.ne.jp/c_lang/sdk2/sdk_149.htm
参考にならなかったらすいません。
[猫でもわかるプログラミング - 第149章 本文中からURLを検出する ]
http://www.kumei.ne.jp/c_lang/sdk2/sdk_149.htm
参考にならなかったらすいません。
Re: リッチエディットのURL検出
> ここは参考になりませんでしょうか?(C言語ですが…)
>
> [猫でもわかるプログラミング - 第149章 本文中からURLを検出する ]
> http://www.kumei.ne.jp/c_lang/sdk2/sdk_149.htm
>
> 参考にならなかったらすいません。
イベントマスクにENM_LINKを加えるのまで出来たんですが、
WM_NOTIFYメッセージの処理がよくわかりません・・・
>
> [猫でもわかるプログラミング - 第149章 本文中からURLを検出する ]
> http://www.kumei.ne.jp/c_lang/sdk2/sdk_149.htm
>
> 参考にならなかったらすいません。
イベントマスクにENM_LINKを加えるのまで出来たんですが、
WM_NOTIFYメッセージの処理がよくわかりません・・・
Re: リッチエディットのURL検出
↑のサイトのWM_NOTIFYメッセージハンドラの部分のみをAB風に書き直しただけのものですが...> [猫でもわかるプログラミング - 第149章 本文中からURLを検出する ]
> http://www.kumei.ne.jp/c_lang/sdk2/sdk_149.htm
>
> 参考にならなかったらすいません。
イベントマスクにENM_LINKを加えるのまで出来たんですが、
WM_NOTIFYメッセージの処理がよくわかりません・・・
このコードをMainWnd.sbpのMainWndProc関数内に書いてください。 [ここをクリックすると内容が表示されます]
コード: 全て選択
Select Case dwMsg
Case WM_NOTIFY
Dim lpnmHdr As *NMHDR
If wParam=ID_RICH Then
lpnmHdr=lParam
Select Case lpnmHdr->code
Case EN_LINK
Dim pEnlink As *ENLINK
pEnlink=lParam
If pEnlink->msg=WM_LBUTTONDOWN Then
SendMessage(hEdit, EM_EXSETSEL, 0, VarPtr(pEnlink->chrg))
SendMessage(hEdit, EM_GETSELTEXT, 0, szURL)
ShellExecute(hEdit, "open", szURL, NULL, NULL, SW_SHOWNORMAL)
End If
End Select
End If
End Select
Re: リッチエディットのURL検出
ABで定義されてないAPI関数や構造体を定義するときは、まずC言語用定義を探します。
検索エンジンで関数名や構造体名をキーワードにしてMSDNのサイトを見つけるのが、もっとも確実です。
C用の構造体定義が見つかったらABの書式に書き換えます。
↓が参考になるでしょう。
http://hira.hopto.org/win32api/convert01.htm
どうしてもわからない場合、Cのヘッダファイルをさがして元の定義が何なのかを調べます。
過去ログを探すと他の人がすでに定義したものが見つかるかもしれません。
また、こちらのサイトではAB用のWin32API定義ファイルを公開しています。
これらを切り貼りして利用する手もあります。(著作権等に注意)
検索エンジンで関数名や構造体名をキーワードにしてMSDNのサイトを見つけるのが、もっとも確実です。
コード: 全て選択
typedef struct {
NMHDR nmhdr;
UINT msg;
WPARAM wParam;
LPARAM lParam;
CHARRANGE chrg;
} ENLINK;
↓が参考になるでしょう。
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定義ファイルを公開しています。
これらを切り貼りして利用する手もあります。(著作権等に注意)