为什么当我把代码放在课堂上时,这个 richEdit 窗口没有显示?

why this richedit window doesn't show up when I put the code in class?

本文关键字:richEdit 这个 窗口 显示 代码 课堂 为什么      更新时间:2023-10-16

编译和运行没有错误。唯一的问题是窗户没有出现。析构函数应该永远保持直到我用鼠标关闭窗口?

#include <windows.h>
#include <richedit.h>
class richEdit {
  HWND richeditWindow;
  richEdit() {
    HMODULE richedit_library = LoadLibrary("Msftedit.dll");
    if (NULL == richedit_library) abort();
    HINSTANCE hInstance = (HINSTANCE)GetModuleHandle(0);
    richeditWindow = CreateWindowExW (
      WS_EX_TOPMOST,
      MSFTEDIT_CLASS,
      L"window text",
      WS_OVERLAPPED | WS_SYSMENU | ES_MULTILINE | WS_VISIBLE,
      0, 0, 500, 500,
      NULL, NULL, hInstance, NULL
    );
  }
  ~richEdit() {
    MSG msg;
    while( GetMessageW( &msg, richeditWindow, 0, 0 ) ) {
      TranslateMessage( &msg );
      DispatchMessageW( &msg );
    }
  }
};
int main() {
  richEdit re();
}

你的问题在这里:

richEdit re();

不是richEdit类型的默认构造的对象。是一个名为re的函数的声明,该函数不接受参数并返回一个richEdit

你想要这样:

richEdit re;

…c++ 11:

richEdit re{};

请注意,阻塞析构函数将来肯定会给您带来麻烦。