EDITBOXの座標取得 + 検索
-
- 記事: 154
- 登録日時: 2006年5月02日(火) 16:27
EDITBOXの座標取得 + 検索
こんにちは。ゆちボンです。
EDITBOXで検索をしたいのですが、
どのメッセージをどんな風に送ればいいのかがわかりません。
あと、EDITBOXでカーソル座標を取得したいのですが、「何文字目」ではなく、
左上から横に何ドット(X)たてに何ドット(Y)を取得したいのですがどうすればいいのでしょうか?
現在、EDITBOXとGDIを使って色分けエディタを作っているので、
ぜひ知りたいです。
よろしくお願いします。
EDITBOXで検索をしたいのですが、
どのメッセージをどんな風に送ればいいのかがわかりません。
あと、EDITBOXでカーソル座標を取得したいのですが、「何文字目」ではなく、
左上から横に何ドット(X)たてに何ドット(Y)を取得したいのですがどうすればいいのでしょうか?
現在、EDITBOXとGDIを使って色分けエディタを作っているので、
ぜひ知りたいです。
よろしくお願いします。
-
- 記事: 154
- 登録日時: 2006年5月02日(火) 16:27
-
- 記事: 154
- 登録日時: 2006年5月02日(火) 16:27
-
- 記事: 473
- 登録日時: 2005年5月31日(火) 18:51
- お住まい: 新潟県
-
- 記事: 154
- 登録日時: 2006年5月02日(火) 16:27
-
- 記事: 473
- 登録日時: 2005年5月31日(火) 18:51
- お住まい: 新潟県
-
- 記事: 154
- 登録日時: 2006年5月02日(火) 16:27
-
- 記事: 231
- 登録日時: 2005年5月31日(火) 17:14
- お住まい: 茨城県
EM_FINDTEXTでどうでしょうか?以下のサイトが参考になるかもしれません。
http://yokohama.cool.ne.jp/chokuto/urawaza/message/
http://yokohama.cool.ne.jp/chokuto/urawaza/message/
-
- 記事: 154
- 登録日時: 2006年5月02日(火) 16:27
> EM_FINDTEXTでどうでしょうか?以下のサイトが参考になるかもしれません。
> http://yokohama.cool.ne.jp/chokuto/urawaza/message/
ありがとうございます。
でも、EDITBOXで使用できるのでしょうか?
今から試してみます。
> http://yokohama.cool.ne.jp/chokuto/urawaza/message/
ありがとうございます。
でも、EDITBOXで使用できるのでしょうか?
今から試してみます。
-
- 記事: 473
- 登録日時: 2005年5月31日(火) 18:51
- お住まい: 新潟県
> すいません、言い方を間違えました。
> EDITBOXでは内部で「文字数」で扱っているのでずれます。
> InStrはバイト数で返ってくるので...
???
EDITBOXっていうのは自作したエディットボックスでしょうか???
普通のエディットボックスで以下のコードを実行した場合もズレますか?
EditBox1に対照文字列を入力して、EditBox2に検索文字列を入力。
CommandButton1かなにかを押したときに以下のコードが実行されるようにしてください。
> EDITBOXでは内部で「文字数」で扱っているのでずれます。
> InStrはバイト数で返ってくるので...
???
EDITBOXっていうのは自作したエディットボックスでしょうか???
普通のエディットボックスで以下のコードを実行した場合もズレますか?
EditBox1に対照文字列を入力して、EditBox2に検索文字列を入力。
CommandButton1かなにかを押したときに以下のコードが実行されるようにしてください。
[ここをクリックすると内容が表示されます]
コード: 全て選択
Dim hEdit[1] As HWND
Dim lpStr[1] As LPSTR
Dim nLength[1] As Long
Dim i As Long
hEdit[0]=GetDlgItem(hMainWnd,EditBox1)
nLength[0]=GetWindowTextLength(hEdit[0])+1
lpStr[0]=malloc(nLength[0])
lpStr[0][GetWindowText(hEdit[0],lpStr[0],nLength[0])]=0
hEdit[1]=GetDlgItem(hMainWnd,EditBox2)
nLength[1]=GetWindowTextLength(hEdit[1])+1
lpStr[1]=malloc(nLength[1])
lpStr[1][GetWindowText(hEdit[1],lpStr[1],nLength[1])]=0
i=InStr(1,lpStr[0],lpStr[1])-1
If i=>0 Then
SendMessage(hEdit[0],EM_SETSEL,i,i+nLength[1]-1))
End If
-
- 記事: 154
- 登録日時: 2006年5月02日(火) 16:27
-
- 記事: 473
- 登録日時: 2005年5月31日(火) 18:51
- お住まい: 新潟県
-
- 記事: 104
- 登録日時: 2006年8月21日(月) 14:26
- お住まい: 兵庫県
僕の環境でもちゃんと動いています。
これは、あるボタンを押したときに起こるイベントのコードです。
参考にしてください。
これは、あるボタンを押したときに起こるイベントのコードです。
参考にしてください。
参考になるかどうか分からないコード [ここをクリックすると内容が表示されます]
最近、文字列検索と文字列置換えの機能を追加したばかりです。コード: 全て選択
Dim Count=0 As Long
Sub FindStr_CommandButton1_Click()
Dim FindString As String
Dim buffer As String
Dim MOJISU As Long
Dim nPos As Long
Dim length As Long
buffer=GetDlgItemTextStr(hMainWnd,EditBox1)
FindString=GetDlgItemTextStr(hFindStr,ComboBox1)
nPos=InStr(Count+1,buffer,FindString)-1
If nPos<0 Then
MessageBox(hFindStr,"指定された文字列はありません","エラー",MB_OK)
Count=0
Exit Sub
End If
length=nPos + Len(FindString)
Count=length
SendMessage(GetDlgItem(hMainWnd,EditBox1),EM_SETSEL,nPos,length)
SendMessage(GetDlgItem(hMainWnd,EditBox1),EM_SCROLLCARET,0,0)
SetFocus(GetDlgItem(hMainWnd,EditBox1))
End Sub
===============================
MyHomePage;; raiden.no.land.to/
===============================
MyHomePage;; raiden.no.land.to/
===============================