richedit 5.0の使用によるハイパーリンクの失効について

2565 ワード

以前はマイクロソフト2.0バージョンのricheditを使用していましたが、結果的に小さな問題が解決できず、richedit自体の問題があるような気がします.QQと比較してみると、QQにはこれらの問題は存在しないことが分かった.そこで、QQで使用されているバージョンのricheditを見に行きたいと思って、QQのインストールディレクトリにricheditライブラリファイルRICHED 20.DLLを見つけて、右クリックして属性を見て、対応するバージョン番号がRich Text Edit Control、v 5.0であることを知りました.
        高バージョンは低バージョンより多くの改善を行い、いくつかの機能を強化したので、richeditも5.0バージョンに変更しました.QQの5.0バージョンのRICHED 20.DLLを直接コピーし、インストールディレクトリの下に直接パッケージしました.変えて、前と比較して、確かに一部の問題を解決しました.しかし、新しい問題が発生し、手動で追加したハイパーリンクが失効し、以前の2.0バージョンを使用するのは正常です.最初はハイパーリンクを追加するコードに問題があると思って修正を試みましたが、なかなか解決できませんでした.ネットで検索しても、基本的に役に立つものは見つからず(ちなみに、技術的なものを検索すると、Googleは確かにBaiduよりずっと強い)、ある時何気なくこのようなリンクを見つけました.https://connect.microsoft.com/VisualStudio/feedback/details/551071/the-6-0a-sdk-is-missing-riched20-lib-for-x64,既存のコードでCreateTextServices関数を呼び出す場所を次のコードに変更します.
void CreateRichEdit(ITextHost *pTextHost, IUnknown **ppUnk)
{
    TextServicesProcType TextServicesProc;
    HMODULE hmod = LoadLibrary("msftedit.dll");
    if (hmod) TextServicesProc = (TextServicesProcType)GetProcAddress(hmod, "CreateTextServices");
    if (TextServicesProc)
    {
        HRESULT hr = TextServicesProc(NULL, pTextHost, ppUnk);
    }
}
ハイパーリンクは正常です.本当の原因はまだ分からないが、ここに記録する必要がある.現在使用されているduilibライブラリが古いバージョンであることを考えて、最新バージョンのコードに改善点があるかどうかを見て、svnでduilibの元のコードを更新して、見てみると、確かに修正して、上の変更とそっくりです.duilibは現在メンテナンスが少なくなっていますが、duilibに熱心な友达が使用中に発見した問題を改善し、修正する意見を出しているので、人が多く力があり、研究する人が多ければ多いほど、進歩も多くなります.次にduilibの問題に遭遇したら、まず最新のduilibと比較して、変更したかどうかを見て参考にすることができます.
参考:
1、The 6.0A SDK is missing RichEd20.lib for x64:
https://connect.microsoft.com/VisualStudio/feedback/details/551071/the-6-0a-sdk-is-missing-riched20-lib-for-x64
2、RichEditのロード問題:
http://blog.csdn.net/luck_donkey/article/details/10349671
3、DuiLibのCRichEditUIコントロールについてwin 8の下で中国語の文字化けしを入力する解決方案:
http://www.cnblogs.com/sunsmile/archive/2013/02/20/ningmengxiu.html
4、VS 2005 VC 6.0 RichEdit高バージョン使用!!:
http://blog.csdn.net/shen_001/article/details/6967902
5、VC 2008下CRichEditViewロードRichEdit 4.1バージョン:
http://blog.csdn.net/akof1314/article/details/6607265
6、COM Interface Hooking and Its Application - Part I:
http://www.codeproject.com/Articles/5253/COM-Interface-Hooking-and-Its-Application-Part-I
7、CRichEditControl50W - A VC++ Rich Text Edit 4.1 MFC Control:
http://www.codeproject.com/Articles/9810/CRichEditControl-W-A-VC-Rich-Text-Edit-MFC-Co
8、How to Create Rich Edit Controls:
http://msdn.microsoft.com/en-us/library/windows/desktop/hh298375%28v=vs.85%29.aspx