1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Выравнивание таблицы в Richedit

Тема в разделе "С и С++", создана пользователем -, 9 апр 2009.

  1. Гость

    Репутация:
    0
    Всем привет. Проблема заключается в том, что когда загружаю файл .rtf в RichEdit и делаю выравнивание, то таблица которая находится в этом файле сдвигается куда-то вправо причем расширяя все окно. Вот код моей проги:
    Код:
    #include <windows.h>
    #include <tchar.h>
    #include <stdio.h>
    #include <richedit.h>
    
    HWND hMainWnd = 0;
    HWND hWndRichEdit = 0;
    
    LRESULT CALLBACK MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
    switch(uMsg)
    {
    case WM_DESTROY:
    PostQuitMessage(0);
    break;
    
    case WM_SIZE:
    MoveWindow(hWndRichEdit, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE);
    PARAFORMAT pf = {0};
    pf.cbSize = sizeof(pf);
    pf.dwMask = PFM_ALIGNMENT;
    pf.wAlignment = PFA_CENTER;
    
    // Выделить текст
    SendMessage(hWndRichEdit,EM_SETSEL,0,-1);
    
    // Применить к выделению центрирование
    SendMessage(hWndRichEdit,EM_SETPARAFORMAT,0,(LPARAM)&pf);
    
    
    break;
    }
    return DefWindowProc(hWnd, uMsg, wParam, lParam);
    }
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
    {
    WNDCLASSEX wc = {0};
    
    wc.cbSize = sizeof(wc);
    wc.lpfnWndProc = MainWndProc;
    wc.hInstance = hInstance;
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1);
    wc.lpszClassName = _T("MainWndClass");
    RegisterClassEx(&wc);
    
    hMainWnd = CreateWindowEx(0, wc.lpszClassName, _T("TestApp"), WS_OVERLAPPEDWINDOW | WS_VISIBLE,
    200, 200, 400, 365, NULL, NULL, hInstance, NULL);
    
    LoadLibrary("Msftedit.dll");
    
    hWndRichEdit = CreateWindowEx(0, _T("RichEdit50W"), NULL, WS_VISIBLE | WS_CHILD | WS_BORDER |
    ES_MULTILINE | WS_VSCROLL | WS_HSCROLL | ES_AUTOHSCROLL | ES_AUTOVSCROLL | ES_READONLY,
    0, 0, 380, 320, hMainWnd, NULL, hInstance, NULL);
    
    HANDLE hFile = CreateFile(_T("C:\\1.rtf"), GENERIC_READ, FILE_SHARE_READ,
    0, OPEN_EXISTING, 0, 0);
    if(hFile != INVALID_HANDLE_VALUE)
    {
    DWORD dwRead = 0, dwSize = GetFileSize(hFile, NULL);
    char *buf = new char[dwSize+1];
    ReadFile(hFile, buf, dwSize, &dwRead, 0);
    buf[dwRead] = '\0';
    CloseHandle(hFile);
    
    SetWindowTextW(hWndRichEdit, (wchar_t*)buf);  // передаётся ANSI строка. работает. тестировалось в WinXP SP2.
    // при портировании на другие версии ОС Windows может не работать.
    
    delete []buf;
    }
    
    MSG msg;
    while(GetMessage(&msg, 0, 0, 0))
    {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }
    
    return 0;
    }
    вот файл, который загружаю:
    Скажите в чем проблема?
     

    Вложения:

    • 3.rtf
      Размер файла:
      18,9 КБ
      Просмотров:
      6
Загрузка...

Поделиться этой страницей