richedit控件的奇怪行为,文本是像旧日语一样水平书写的

时间:2013-01-17 15:32:46

标签: c++ winapi richedit

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

1 个答案:

答案 0 :(得分:4)

问题是您使用WS_OVERLAPPEDWINDOW样式。丰富的编辑控件旨在用作子窗口,不支持WS_OVERLAPPEDWINDOW。

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

ES_VERTICAL         0x00400000
ES_NOIME            0x00080000
ES_SELFIME          0x00040000

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