user-0 提问: 如何创建richedit控件？（dev，用CreateWindow）

回复:
user: user-0
content: 引用 5 楼 Intel0011 的回复:[quote=引用 4 楼 六道佩恩 的回复:] 怪了，确实创建成功了。 不应该呀，我把动态库换成链接静态库，就没成功，不应该呀，它这个一定要用动态库吗？ 这个没深究，应该是要DLL，使用DLL的话，操作系统易于升级RichEdit，而程序不变就可以使用新的版本[/quote]  你了解win32的MCI吗？关于它支持的格式的问题，它是只支持那么几种格式？还是随驱动程序而定？ https://bbs.csdn.net/topics/398377944

user: user-1
content: 引用 4 楼 六道佩恩 的回复:怪了，确实创建成功了。 不应该呀，我把动态库换成链接静态库，就没成功，不应该呀，它这个一定要用动态库吗？ 这个没深究，应该是要DLL，使用DLL的话，操作系统易于升级RichEdit，而程序不变就可以使用新的版本

user: user-0
content: 引用 2 楼 Intel0011 的回复:[quote=引用 楼主 六道佩恩 的回复:]创建失败，原因未知，用过MSFTEDIT_CLASS，仍然失败 RichEdit相对其他的控件来说，比较大，所以MS单独封装为一个DLL，使用时需要单独导入[/quote]  怪了，确实创建成功了。 不应该呀，我把动态库换成链接静态库，就没成功，不应该呀，它这个一定要用动态库吗？

user: user-1
content: 引用 楼主 六道佩恩 的回复:创建失败，原因未知，用过MSFTEDIT_CLASS，仍然失败 RichEdit相对其他的控件来说，比较大，所以MS单独封装为一个DLL，使用时需要单独导入

user: user-2
content: InitCommonControls  In order to use common controls on a dialog box, you need to call InitCommonControlsEx or AFXInitCommonControls before you create the dialog box.

user: user-1
content: VC下的例子 主要是RichEdit控件比较大的控件，而且是有不同版本的 需要先载入 hRichEditDll = LoadLibrary(_T("RICHED20")); 才能使用 //* #define UNICODE #define _UNICODE //*/ #include <Windows.h> #include <tchar.h> #include <commctrl.h>  #pragma comment(lib, "gdi32") #pragma comment(lib, "user32") #pragma comment(lib, "comctl32")  #pragma comment(linker, "/subsystem:windows")  LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);  static HMODULE hRichEditDll = NULL; static HWND hRichEdit;  int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR szCmdLine, int iCmdShow) {    static TCHAR szAppName[] = TEXT("HelloWin");    HWND         hwnd;    MSG          msg;    WNDCLASS     wndclass;    HDC          hdc;           RtlZeroMemory(&wndclass, sizeof(wndclass));    wndclass.style         = CS_HREDRAW | CS_VREDRAW;    wndclass.lpfnWndProc   = WndProc;    wndclass.hInstance     = hInstance;    wndclass.hIcon         = LoadIcon(NULL, TEXT("#32512"));    wndclass.hCursor       = LoadCursor(NULL, IDC_ARROW);    wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);    wndclass.lpszMenuName  = NULL;    wndclass.lpszClassName = szAppName;     if (!RegisterClass(&wndclass))    {       MessageBox(NULL, TEXT("This program requires Windows NT series!"), szAppName, MB_ICONERROR);       return -1;    }        InitCommonControls();    hRichEditDll = LoadLibrary(_T("RICHED20"));              hwnd = CreateWindowEx(WS_EX_APPWINDOW,         // A tool window does not appear in the task bar or in the window that appears when the user presses ALT+TAB.                          szAppName,                  // window class name                          TEXT("The Hello Program"),  // window caption                          WS_OVERLAPPEDWINDOW,        // window style                          100,//CW_USEDEFAULT,              // initial x position                          200,//CW_USEDEFAULT,              // initial y position                          320,//CW_USEDEFAULT,              // initial x size                          320,//CW_USEDEFAULT,              // initial y size                          NULL,                       // parent window handle                          NULL,                       // window menu handle                          hInstance,                  // program instance handle                          NULL);                      // creation parameters     hdc = GetDC(hwnd);    SelectObject(hdc, GetStockObject(SYSTEM_FIXED_FONT));     ShowWindow(hwnd, SW_SHOW);    UpdateWindow(hwnd);        {       BOOL bRet;       while ((bRet = GetMessage(&msg, NULL, 0, 0)) != 0)       {          if (bRet == -1)          {             MessageBox(NULL, TEXT("GetMessage Error."), TEXT("Message"), MB_ICONERROR);             return -1;          }          else          {             TranslateMessage(&msg);             DispatchMessage(&msg);          }       }    }        SelectObject(hdc, GetStockObject(SYSTEM_FONT));    ReleaseDC(hwnd, hdc);        FreeLibrary(hRichEditDll);    hRichEditDll = NULL;     UnregisterClass(szAppName, hInstance);    return msg.wParam; }  LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {    HDC         hdc;    PAINTSTRUCT ps;    RECT        rect;        switch (message)    {       case WM_CREATE:          #ifdef UNICODE          #define RICHEDIT L"RichEdit20W"          #else          #define RICHEDIT  "RichEdit20A"          #endif          hRichEdit = CreateWindowEx(WS_EX_CLIENTEDGE, RICHEDIT, TEXT(""),                                      WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_NOHIDESEL,                                     0, 0, 100, 100, hwnd, (HMENU)10, ((LPCREATESTRUCTA)lParam)->hInstance, NULL);                    return 0;       case WM_PAINT:          hdc = BeginPaint(hwnd, &ps);          GetClientRect(hwnd, &rect);          DrawText(ps.hdc, TEXT("Hello, Windows!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);                 EndPaint(hwnd, &ps);          return 0;       case WM_DESTROY:          PostQuitMessage(0);          return 0;    }    return DefWindowProc(hwnd, message, wParam, lParam); }