2

所有这些都可以编译,没有错误,但是光标是垂直的并且显示在窗口的右上角,并且文本流就像日语从上到下的字符,从右到左的行。字符是不可见的,但可以复制。我有英文 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 );
  }
}
4

1 回答 1

4

问题是你对WS_OVERLAPPEDWINDOW风格的使用。富编辑控件被设计为用作子窗口,不支持 WS_OVERLAPPEDWINDOW。

WS_OVERLAPPEDWINDOW 编译为 0x00CF0000。这与几种丰富的编辑样式重叠,即:

ES_VERTICAL         0x00400000
ES_NOIME            0x00080000
ES_SELFIME          0x00040000

因此,将 WS_OVERLAPPEDWINDOW 宏应用于您的控件与应用这些样式相同。

于 2013-01-17T15:46:51.077 回答