Все это компилируется нормально, без ошибок, но курсор находится вертикально и отображается в верхнем правом углу окна, а текстовый поток похож на японский сверху вниз в символах, справа налево в строках. Символы невидимы, но копируемы. У меня английская Windows XP SP3 без азиатского программного обеспечения на борту.
#include <windows.h>
#include <richedit.h>
int main() {
LoadLibrary("Msftedit.dll");
HINSTANCE hInstance = (HINSTANCE)GetModuleHandle(0);
HWND richeditWindow = CreateWindowExW (
WS_EX_TOPMOST,
L"RichEdit50W",
L"window text",
WS_OVERLAPPEDWINDOW | ES_MULTILINE | WS_VISIBLE,
0, 0, 500, 500,
NULL, NULL, hInstance, NULL
);
MSG msg;
while( GetMessageW( &msg, richeditWindow, 0, 0 ) ) {
TranslateMessage( &msg );
DispatchMessageW( &msg );
}
}
Проблема в том, что вы используете WS_OVERLAPPEDWINDOW
стиль. Богатые элементы редактирования предназначены для использования в качестве дочерних окон и не поддерживают WS_OVERLAPPEDWINDOW.
WS_OVERLAPPEDWINDOW компилируется как 0x00CF0000. Это перекрывает несколько богатых стилей редактирования, а именно:
ES_VERTICAL 0x00400000
ES_NOIME 0x00080000
ES_SELFIME 0x00040000
Таким образом, применение макроса WS_OVERLAPPEDWINDOW к вашему элементу управления аналогично применению этих стилей.
Других решений пока нет …