关于windows:Rich Edit Control in raw Win32

关于windows:Rich Edit Control in raw Win32

Rich Edit Control in raw Win32

Rich Edit Controls 的文档真的像看起来那样糟糕(错误?)吗?现在我手动调用 LoadLibrary("riched20.dll") 以显示富编辑控件。 Rich Edit 的文档在第一个使用 Rich Edit 控件的代码示例中未能很好地说明这一点。

它谈到调用 InitCommonControlsEx() 来添加视觉样式,但没有提到要传入哪些标志。

有没有更好的方法来加载 Rich Edit 控件?

http://msdn.microsoft.com/en-us/library/bb787877(VS.85).aspx

这是我可以编写的唯一代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include"Richedit.h"
#include"commctrl.h"

INITCOMMONCONTROLSEX icex;
icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
icex.dwICC = ICC_USEREX_CLASSES;  //Could be 0xFFFFFFFF and it still wouldn't work
InitCommonControlsEx(&icex);  //Does nothing for Rich Edit controls

LoadLibrary("riched20.dll");  //Manually?  For real?
hWndRichEdit = CreateWindowEx(
    ES_SUNKEN,
    RICHEDIT_CLASS,
   "",
    WS_BORDER | WS_VISIBLE | WS_CHILD,
    2, 2, 100, 24,
    hWnd, (HMENU) ID_RICH_EDIT, hInst, NULL);

很多年前,我也遇到过同样的问题,是的,答案是手动加载 .dll。据我所知,原因是 RichEdit 窗口类注册在riched20.dll 的 DllMain 中。


使用 MFC,RichEdit 控件可以正常工作。

使用 InitCommonControlsEx() 加载 - ICC_USEREX_CLASSES 不加载 RichEdit AFAIK,您不需要它,因为它只加载不包括 Richedit 的"标准"通用控件。显然你只需要调用它来启用 Windows 中的"视觉样式",而不是让 RichEdits 工作。

如果您使用的是 2008,则您希望包含 Msftedit.dll 并改用 MSFTEDIT_CLASS(MS 有时为了向后兼容是垃圾)。

文档确实建议您正确地进行 Win32 编程。


是否有可以链接到的导入库(可能是riched20.lib)。这样您就不必在运行时"手动"加载它。这就是所有标准控件的工作方式。 VS 在创建项目时自动添加对 user32.lib 的引用。


我认为您必须在创建任何常用控件之前调用 CoInitializeEx。

不需要 LoadLibrary。如果您链接到正确的 .lib 文件,exe-loader 将为您处理这些详细信息。


推荐阅读

    linux满屏显示命令?

    linux满屏显示命令?,工具,系统,服务,电脑,网络,技术,信息,数据,上会,软件,如

    显示linux时间命令?

    显示linux时间命令?,时间,系统,信息,一致,命令,文件,终端,目录,选项,参数,lin

    linux命令刷新显示?

    linux命令刷新显示?,系统,工作,最新,地址,命令,异常,分析,工具,信息,软件,Lin

    linux命令错误的是?

    linux命令错误的是?,系统,信息,异常,密码,工具,地址,网络,实时,状态,数据,Lin

    linux命令chm文档?

    linux命令chm文档?,电脑,系统,文件,首页,百度,软件,电机,管理,产品,设备,谁知

    linux显示最多的命令?

    linux显示最多的命令?,系统,情况,信息,数据,工具,电脑,状态,时间,分析,命令,

    linux命令高亮显示?

    linux命令高亮显示?,系统,信息,命令,电脑,地址,代码,情况,分析,位置,文件,Lin

    linux调用函数的命令?

    linux调用函数的命令?,系统,代码,策略,上调,时间,设计,通信,网络,设备,项目,

    linux中编辑文档命令?

    linux中编辑文档命令?,状态,工作,命令,电脑,信息,第一,系统,编辑,终端,文件,L

    linux显示隐藏命令?

    linux显示隐藏命令?,系统,电脑,档案,工具,一致,生产,文件夹,文件,命令,开头,l

    linux显示错误命令?

    linux显示错误命令?,信息,系统,电脑,状态,时间,环境,命令,搜狐,密码,异常,虚

    linux逐行显示命令?

    linux逐行显示命令?,标准,信息,系统,工作,地址,命令,实时,名称,文件,目录,Lin

    linux外部命令调用?

    linux外部命令调用?,系统,软件,标准,命令,盘中,管理,外部,进程,程序,内存,lin

    linux退出错误命令的?

    linux退出错误命令的?,系统,电脑,环境,命令,位置,管理,工具,设备,终端,进程,L

    linux怎么调用命令行?

    linux怎么调用命令行?,系统,地址,工具,工作,首页,终端,命令,密码,信息,情况,l

    linux显示时间命令?

    linux显示时间命令?,时间,系统,管理,标准,信息,单位,工具,数据,中国,命令,lin

    linux没有该命令错误?

    linux没有该命令错误?,系统,第一,环境,命令,分析,软件,异常,文件,目录,空格,

    浏览器调用linux命令?

    浏览器调用linux命令?,系统,信息,人工智能,软件,数据,首次,地址,代码,咨询,

    linux启动显示命令行?

    linux启动显示命令行?,系统,密码,终端,状态,首页,情况,基础,电脑,信息,工具,l

    py调用linux的命令?

    py调用linux的命令?,系统,代码,状态,环境,标准,工具,命令,文件,脚本,终端,lin