Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2009, 21:39   #1
yngwie
Пользователь
 
Регистрация: 18.01.2009
Сообщений: 16
По умолчанию Выравнивание таблицы в RichEdit

Всем привет. Проблема заключается в том, что когда загружаю файл .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;
}
вот файл, который загружаю (это формат файла rtf просто из-за отсутствия допустимого расширения пложения прошлось переименовать в doc). Переименуйте doc->rtf

Скажите в чем проблема?
Вложения
Тип файла: doc 3.doc (18.9 Кб, 9 просмотров)
yngwie вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выравнивание высоты таблицы для разного разрешения Svetix HTML и CSS 10 03.04.2009 17:00
Выравнивание форм в ячейках таблицы Antoha HTML и CSS 3 30.03.2009 23:15
выравнивание wolf950 HTML и CSS 2 17.03.2009 10:05
выравнивание слоёв в IE balashovka HTML и CSS 2 19.01.2009 16:20
как сделать, чтоб значения из dbf-таблицы считывались в RichEdit Алёна БД в Delphi 2 13.04.2007 09:42