如何在VC6的基于对话框的程序中启用RICHEDIT 4.1,对应DLL版本为MSFTEDIT.DLLGOOGLE了一下,米有结果。另外,在VS 2005及以上版本启用4.1的方法呢?如果是RICHEDIT 2.0,是不是只要AfxInitRichEdit2()就可以了?

解决方案 »

  1.   

    http://blog.xdnice.com/space-526-do-blog-id-145194.html
      

  2.   

    关键代码不就是m_hinstRE41=LoadLibrary(TEXT("msftedit.dll"));//添加这一句
    这些么,你改改就行了啊
      

  3.   


    我Load了,但是还是必须使用AfxinitRichedit()函数,而且,也依然不能使用新特性,说明版本还是1.0……
      

  4.   


    补充一下,我所做的:
    在InitInstance()中加入AfxOleInit();和LoadLibrary(_T("MSFTEDIT.DLL"));为Dlg类创建新成员函数PreCreateWindow
    BOOL CRICHEDIT_TEST_2Dlg::PreCreateWindow(CREATESTRUCT& cs) 
    {
    BOOL bRes = CRICHEDIT_TEST_2Dlg::PreCreateWindow(cs);
    cs.style |= ES_SELECTIONBAR;
    cs.lpszClass = TEXT("RICHEDIT50W");
    return bRes;
    }
      

  5.   

    2.0确实是你说的方法
    不过4.1还真没用过
    而且根据以前版本的经验
    用低版本的IDE跑高版本的RichEdit好像有些功能确实不好用
      

  6.   

    HI~~
    我在MSDN上找到得页面,http://support.microsoft.com/kb/261171/en-us
    但他说,可以通过改变RICHEDIT的控制类为RichEdit20A and RichEdit20W,这里的方法是不是说把.rc文件中的
    "",IDC_RICHEDIT3,"RICHEDIT",ES_AUTOHSCROLL | WS_BORDER |
                        WS_TABSTOP,41,29,200,120
    改为  "",IDC_RICHEDIT3,"RichEdit20A",ES_AUTOHSCROLL | WS_BORDER |
                        WS_TABSTOP,41,29,200,120

    另外,那4.1的版本咋个改咧……囧~~~
      

  7.   


    可俺现在的电脑配置太烂,WIN 7都装不起,VS 05跑的勉勉强强~~但05用不太习惯,刚好也准备买新电脑了,到时候用VS 2010开发了。问个事儿兄弟,那在高版本的VS下RICHEDIT默认版本还是1.0么?高版本的VS切换RICHEDIT的版本也如此纠结么?谢谢,辛苦了哈!
      

  8.   

    关于8楼的问题:
    控件的行为是通过控制变量来控制的
    也就是说你的资源本身是什么版本只是一个默认链接标识
    所以理论上你用什么版本的类控制就会是什么样的控件
    不过4.1我确实没用过关于9楼的问题:
    一个控件不单单就是他自己
    也会关联其他的东西
    高版本的控制类相关的高级功能自然关联的是高版本的系统或IDE环境
    这也就是不同版本间控件行为不同的原因最后费一句你有什么非用这个4.1的理由么?
    如果就是为了赶时髦我觉得大可不必吧
      

  9.   


    还真没有费用不可的理由。2.0满足需求了。平常都在Linux下写程序,这次一个项目需要在WIN上需要有个小的功能平台,功能不复杂,我就被发配过来了。看了一阵子WIN32API和MFC手册。主要就是编码上要兼容unicode,所以2.0就够用了。但个人习惯,遇到问题总是想弄明白。所以就想知道4.1这货咋用。嘿嘿……谢谢大哥了!