[リストへもどる]
一括表示

投稿時間:2004/05/11(Tue) 19:10
投稿者名:うまなり
Eメール:
URL :
タイトル:
テキストボックスにおけるコンテキストメニューについて
はじめて書込みさせて頂きます。現在VB6.0での開発を行っており
このページはたびたび利用させて頂いてます。
質問ですが、テキストボックスを選択して右クリックを押下した際に
コピー・貼り付け等のメニュー(コンテキストメニュー?)が
自動で表示されてしまいますが、非表示にする事は出来ないのでしょうか。
VB.NETでは可能である様な事は調べましたが、VB6.0に対応していませんでした。

以上ですが、ご存知の方がいれば教えて下さい。
よろしくお願いいたします。

投稿時間:2004/05/11(Tue) 19:35
投稿者名:うまなり
Eメール:
URL :
タイトル:
追加情報です
過去ログからポップアップメニューで検索したところ
今回と同事象と思われるログがありました。
テキストボックスのEnableを制御して非表示にするとの事でしたが
自分のPGでは実現できませんでした。
ちなみにテキストボックスはコントロール配列です。
長くなりますがソースも載せておきます。

Private Sub txtCH_MouseDown(Index As Integer, Button As Integer,
                 Shift As Integer, X As Single, Y As Single)
    If Button = 2 Then
        txtCH(Index).Enabled = False
        txtCH(Index).Enabled = True
        txtCH(Index).SetFocus
    End If
End Sub
※txtCH・・・テキストボックスです

投稿時間:2004/05/12(Wed) 20:21
投稿者名:kara
Eメール:
URL :
タイトル:
Re: 追加情報です
> Private Sub txtCH_MouseDown(Index As Integer, Button As Integer,
>                  Shift As Integer, X As Single, Y As Single)
>     If Button = 2 Then
>         txtCH(Index).Enabled = False
>         txtCH(Index).Enabled = True
>         txtCH(Index).SetFocus
>     End If
> End Sub
この方法は非表示にするというよりは
別のメニューを表示させる方法だったと記憶しています

----------------------------------
txtCH(Index).Enabled = False
txtCH(Index).Enabled = True
txtCH(Index).SetFocus
PopupMenu 作成したメニュー
----------------------------------
このようにして最後に
PopupMenuを呼ぶことによって標準のメニューを抑制して、
自作のメニューに置き換えることは出来ますが
非表示にすることは出来なかったと思います

方法のひとつとして
APIのSetCaptureを使用して
----------------------------------
Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = vbRightButton Then
        SetCapture Form1.hwnd
    End If
End Sub

Private Sub Text1_DblClick()
    SetCapture Form1.hwnd
End Sub
----------------------------------
とする方法もあります

SetCaptureについての説明はここで
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpwinui/html/_win32_setcapture.asp

しかしなんかよろしくない感じがしますね・・・

やはり魔界の仮面弁士さんが言われているように
RichTextBoxを利用するほうが安全でいいと思うのですが・・・

投稿時間:2004/05/11(Tue) 19:59
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: テキストボックスにおけるコンテキストメニューについて
> コピー・貼り付け等のメニュー(コンテキストメニュー?)が
> 自動で表示されてしまいますが、非表示にする事は出来ないのでしょうか。
簡単なのは、RichTextBoxを利用する方法でしょうか。
これなら、プロパティの設定だけで、コンテキストメニューを使うかどうかを指定できますし。

TextBoxでなければいけないなら、サブクラス化して、WM_CONTEXTMENUメッセージを握りつぶすとか。

投稿時間:2004/05/11(Tue) 20:12
投稿者名:うまなり
Eメール:
URL :
タイトル:
ありがとうございます♪
> 簡単なのは、RichTextBoxを利用する方法でしょうか。
> これなら、プロパティの設定だけで、コンテキストメニューを使うかどうかを指定できますし。
>
> TextBoxでなければいけないなら、サブクラス化して、WM_CONTEXTMENUメッセージを握りつぶすとか。

特にテキストボックスでという指定は無いので、手間を考えて
RichTextBoxを利用しようと思います。
こんなにも早い返答ありがとうございました。
それでは失礼致します。