none
RichTextBox上でのコピー&ペーストについて RRS feed

  • 質問

  • 【環境】
    -------------------
    Windows Server 2003 SP2
    VisualBasic6.0 SP6
    -------------------

    【現象】
    RichTextBoxコントロール上にある”(全角ダブルクォーテーションを)コピーしてそのまま
    RichTextBoxコントロール上にペーストすると
    "(半角ダブルクォーテーション)に変換されてしまう。
    ちなみに’(全角のシングルクォーテーション)も同様です。

    【質問】
    上記の現象を回避する方法をご存知でしたらご教示ください。
    よろしくお願いいたします。
    2008年6月6日 7:40

回答

  • こんにちは!中川俊輔です。

     

    全角のダブルクォーテーションが半角に変換されてしまうのは、

    Windows2003のriched32.dllが影響しているようです。
    そこで、VB6付属のriched32.dllを先読みしてしまうという方法はどうでしょうか?

     

    実装例を下記にあげます。

    module

    Public Declare Function LoadLibrary Lib "kernel32" Alias _
     "LoadLibraryA" (ByVal pLibFileName As String) As Long

     

    Sub Main()
     Dim lngVal As Long
     lngVal = LoadLibrary("Riched32.dll")
     Form1.Show
    End Sub

     

     

    Riched32.dllはVBインストールディレクトリの”VB98\Wizards\PDWizard\Redist\”
    フォルダにありますので、作成したexeファイルと同じ場所に置いてください。
    こちらで試したところデバック中はうまく動かないようです。

    また、旧バージョンのdllを使用するため、動作に問題がないか十分検証する必要があります。

     

    参考になると幸いです。

    それでは!

     

    この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。

    コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。

    2008年6月12日 8:48

すべての返信

  • こんにちは!中川俊輔です。

     

    全角のダブルクォーテーションが半角に変換されてしまうのは、

    Windows2003のriched32.dllが影響しているようです。
    そこで、VB6付属のriched32.dllを先読みしてしまうという方法はどうでしょうか?

     

    実装例を下記にあげます。

    module

    Public Declare Function LoadLibrary Lib "kernel32" Alias _
     "LoadLibraryA" (ByVal pLibFileName As String) As Long

     

    Sub Main()
     Dim lngVal As Long
     lngVal = LoadLibrary("Riched32.dll")
     Form1.Show
    End Sub

     

     

    Riched32.dllはVBインストールディレクトリの”VB98\Wizards\PDWizard\Redist\”
    フォルダにありますので、作成したexeファイルと同じ場所に置いてください。
    こちらで試したところデバック中はうまく動かないようです。

    また、旧バージョンのdllを使用するため、動作に問題がないか十分検証する必要があります。

     

    参考になると幸いです。

    それでは!

     

    この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。

    コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。

    2008年6月12日 8:48
  • 中川様 ありがとうございます。

    実行環境には
    exe名.localファイルを置いて、同一フォルダのDLLを読みこむようにしています。
    http://www.microsoft.com/japan/msdn/windows/windows2000/sidebyside.aspx

    ご教示いただいた先読みのロジックを試したところ動作しました。

    ちなみに先読みのロジックをはずし、アプリケーションフォルダのDLLだけを入れ替えたところ
    それでも期待通りの動作をしました。

    2008年6月13日 7:27