原始 Win32 中的丰富编辑控件

use*_*408 5 windows winapi richedit

Rich Edit Controls 的文档是否真的像看起来那么糟糕(错误?)?现在我正在手动调用 LoadLibrary("riched20.dll") 以便显示 Rich Edit Control。Rich Edit 的文档在第一个使用 Rich Edit 控件的代码示例中没有很好地说明这一点。

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

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

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

这是我可以编写的唯一代码以使其工作:

#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);
Run Code Online (Sandbox Code Playgroud)

gbj*_*anb 2

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

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

如果您使用的是 2008,则需要包含 Msftedit.dll 并改用 MSFTEDIT_CLASS(MS 有时在向后兼容性方面很糟糕)。

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