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 に答える