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

  • Автор темы Guest
  • Дата начала
G

Guest

#1
Всем привет. Проблема заключается в том, что когда загружаю файл .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;
}
вот файл, который загружаю:
Скажите в чем проблема?
 

Вложения

  • 18.9 КБ Просмотры: 6