Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> считывание файла в EditBox 
:(
    Опции темы
yngwie19
Дата 1.4.2009, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



Всем привет. У меня есть editbox большого размера, в который Я пытаюсь считать текстовый файл. Считываю с помощью ReadFile(). С файлом .txt проблем нет, а вот когда хочу считать файл в формате .doc то тут получаются каракули, причем их совсем мало (явно не весь файл). Подскажите, может есть какая-нибудь особенность считывания из .doc.
P.S: Да и еще подскажите как мне считать текст так, чтобы его форматирование сохранилось, и как сделать чтобы после считывания в editbox с текстом НЕльзя было работать (нельзя было копировать, выделять и т.д, т.е полностью заблокировать). Спасибо!
PM MAIL   Вверх
Andrey44
Дата 1.4.2009, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 8
Всего: 26



Цитата(yngwie19 @  1.4.2009,  14:14 Найти цитируемый пост)
а вот когда хочу считать файл в формате .doc то тут получаются каракули

А та пробовал открывать док файл блокнотом? Что там пишет?

Это сообщение отредактировал(а) Andrey44 - 1.4.2009, 14:18


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
yngwie19
Дата 1.4.2009, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



Andrey44, да такая же фигня, тока тут намного больше каракулей чем у меня когда считываю (странно почему). Ну вообщем Я так понял что это не ReadFile() - ом делается? Подскажи пожалуйста как мне быть? Все файлы в txt переименовывать и только тогда считывать?
(хотя нет одна фигня же)P.S: кстати объясни пожалуйста почему когда блокнотом открываешь каракули вылезают. Кодировку не поддерживает вордовскую?

Это сообщение отредактировал(а) yngwie19 - 1.4.2009, 14:32
PM MAIL   Вверх
Andrey44
Дата 1.4.2009, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 8
Всего: 26



Цитата(yngwie19 @  1.4.2009,  14:28 Найти цитируемый пост)
кстати объясни пожалуйста почему когда блокнотом открываешь каракули вылезают. Кодировку не поддерживает вордовскую?

Потому-что у док файла свой формат, и просто блокнотом его не прочитать. Для работы с док файлом есть какие-то свои интерфейсы. Не могу сказать какие. Или ищи формат док файла.


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
586
Дата 1.4.2009, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 39
Всего: 146



Цитата(yngwie19 @  1.4.2009,  15:28 Найти цитируемый пост)
да такая же фигня, тока тут намного больше каракулей чем у меня когда считываю (странно почему)

Потому что файл .doc бинарный (кроме текста находится ещё и другая информация - форматирование текста, рисунки и др.), и в блокноте, перед загрузкой файла в edit, в файле удаляются нулевые символы - поэтому файл загружается полностью.

Как насчёт RTF-формата? Его можно загрузить в RichEdit.

Это сообщение отредактировал(а) 586 - 1.4.2009, 15:03
PM   Вверх
yngwie19
Дата 1.4.2009, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



586, есть примерчик?
PM MAIL   Вверх
586
Дата 1.4.2009, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 39
Всего: 146



Вместо Edit создаётся RichEdit - загружается библиотека с RichEdit'ом riched20.dll (если она загружена, то повторно загружать не нужно smile) и вызывается CreateWindow с нужными параметрами.
Файл считывается в память, а потом загружается в RichEdit с помощью SetWindowTextA (также, как и в Edit).
Код
DWORD dwRead = 0, dwSize = GetFileSize(hFile, NULL);
char *buf = (char*)malloc(dwSize+1);   // ещё один байт нужен для завершающего нулевого символа
ReadFile(hFile, buf, dwSize, &dwRead, NULL);
buf[dwRead] = '\0';  // завершаем строку
SetWindowTextA(hWndRichEdit, buf);    // выводим в RichEdit
free(buf);    // освобождаем память
CloseHandle(hFile);


Если текстовый документ начинается со слова "{\rtf" или "{urtf", то он парсится как RTF документ, иначе, просто открывается, как текстовый документ в Edit.

Это сообщение отредактировал(а) 586 - 1.4.2009, 15:56
PM   Вверх
GremlinProg
Дата 1.4.2009, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



586, разве SetWindowText установит рич-текст?
для этого же существует EM_STREAMIN/EM_STREAMOUT

Добавлено через 3 минуты и 44 секунды
SetWindowText не пробовал, но EM_STREAMIN работает точно


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
586
Дата 1.4.2009, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 39
Всего: 146



Цитата(GremlinProg @  1.4.2009,  17:14 Найти цитируемый пост)
разве SetWindowText установит рич-текст?

В билдере у меня получилось... Но если нужно будут получить обратно RTF код, то при вызове GetWindowText будет возвращён обычный текст, без RTF кодов, и тогда уже не обойтись без EM_STREAMOUT.
Код
SetWindowTextA(RichEdit1->Handle, buf);

PM   Вверх
GremlinProg
Дата 1.4.2009, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



проверил,
это работает только в RichEdit'е самой первой версии(еще без юникод-поддержки): RICHEDIT_CLASS10A{"RICHEDIT"}
последующие версии такой доступ уже не поддерживают

версии RichEdit'ов (не CE):
1.0 Riched32.dll - RICHEDIT_CLASS10A{"RICHEDIT"}
2.0 Riched20.dll - RICHEDIT_CLASS{"RichEdit20A","RichEdit20W"}
3.0 Riched20.dll - RICHEDIT_CLASS{"RichEdit20A","RichEdit20W"}
4.1(и выше) Msftedit.dll - MSFTEDIT_CLASS{"RICHEDIT50A","RICHEDIT50W"}


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
yngwie19
Дата 1.4.2009, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



Ребят а при использовании RichEdit форматирование текста сохранится? Я имею ввиду Размер заголовков, отступы и т.д ? 
PM MAIL   Вверх
586
Дата 1.4.2009, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 39
Всего: 146



Цитата(yngwie19 @  1.4.2009,  20:08 Найти цитируемый пост)
Ребят а при использовании RichEdit форматирование текста сохранится? Я имею ввиду Размер заголовков, отступы и т.д ?  

Сохранится. Содержимое документа будет выглядеть как в WordPad. WordPad основан на RichEdit.

Ещё, есть сообщение EM_SETTEXTEX, оно для RichEdit'ов.
PM   Вверх
yngwie19
Дата 1.4.2009, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



Ребят и как сделать чтобы после считывания в Richedit с текстом НЕльзя было работать (нельзя было копировать, выделять и т.д, т.е полностью заблокировать). Спасибо
PM MAIL   Вверх
yngwie19
Дата 1.4.2009, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



вот что он у меня выдает:
user posted image
а вот загружаемый файл: 

Это сообщение отредактировал(а) yngwie19 - 1.4.2009, 20:52

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  1.doc 215,00 Kb
PM MAIL   Вверх
586
Дата 1.4.2009, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 39
Всего: 146



Цитата(yngwie19 @  1.4.2009,  21:34 Найти цитируемый пост)
как сделать чтобы после считывания в Richedit с текстом НЕльзя было работать (нельзя было копировать, выделять и т.д, т.е полностью заблокировать)

стиль ES_READONLY
или EnableWindow(hWndRichEdit, FALSE);

Цитата(yngwie19 @  1.4.2009,  21:50 Найти цитируемый пост)
вот что он у меня выдает:

RichEdit не моддерживает doc-файлы.

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  test.PNG 52,60 Kb
PM   Вверх
yngwie19
Дата 1.4.2009, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



ой сори Я не тот файл прикрепил. Вот:

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  2.rtf 19,59 Kb
PM MAIL   Вверх
586
Дата 1.4.2009, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 39
Всего: 146



Код
#include <windows.h>
#include <tchar.h>
#include <stdio.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);
        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:\\2.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+2];
        ReadFile(hFile, buf, dwSize, &dwRead, 0);
        buf[dwRead] = '\0';
        buf[dwRead+1] = '\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;
}


Это сообщение отредактировал(а) 586 - 1.4.2009, 23:58
PM   Вверх
yngwie19
Дата 1.4.2009, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



586, Спасибо все работает. У меня vista и все ок. Тока 2 вопроса:
1) В чем главная ошибка в моем коде?
2) Как заблокировать Ctr + C ?
PM MAIL   Вверх
586
Дата 2.4.2009, 01:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 39
Всего: 146



Цитата(yngwie19 @  2.4.2009,  00:44 Найти цитируемый пост)
1) В чем главная ошибка в моем коде?

На снимке экрана видно, что грузится doc-файл в RichEdit. А так, вроде всё правильно.

Итоговый вариант:
Код
#include <windows.h>
#include <Richedit.h>
#include <tchar.h>
#include <stdio.h>

HWND hMainWnd = 0;
HWND hWndRichEdit = 0;

DWORD CALLBACK es_callback(DWORD_PTR dwCookie,
    LPBYTE pbBuff, LONG cb, LONG *pcb)
{
    return !ReadFile((HANDLE)dwCookie, pbBuff, cb, (LPDWORD)pcb, NULL);
}

BOOL RichEdit_SetData(HWND hRichEdit, LPCTSTR lpFilePath)
{
    HANDLE hFile = CreateFile(lpFilePath, GENERIC_READ, FILE_SHARE_READ,
        NULL, OPEN_EXISTING, 0, 0);

    if(hFile == INVALID_HANDLE_VALUE) return FALSE;

    EDITSTREAM es = {0};
    es.dwCookie = (DWORD_PTR)hFile;
    es.pfnCallback = es_callback;

    __try {
        SendMessage(hRichEdit, EM_STREAMIN, SF_RTF, (LPARAM)&es);
    }
    __finally {
        CloseHandle(hFile);
    }

    return TRUE;
}

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);
        break;
    }
    return DefWindowProc(hWnd, uMsg, wParam, lParam);
}

WNDPROC pRichEditWndProc = 0;
LRESULT CALLBACK RichEditWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch(uMsg)
    {
    case WM_KEYDOWN:
    case WM_KEYUP:
        if((wParam >= 'A') && (wParam <= 'Z'))
            return 0;
        break;

    case WM_LBUTTONDOWN:
    case WM_LBUTTONUP:
    case WM_RBUTTONDOWN:
    case WM_RBUTTONUP:  
        return 0;
    }
    return CallWindowProc(pRichEditWndProc, 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_AUTOVSCROLL | ES_AUTOHSCROLL | ES_READONLY,
        5, 5, 380, 320, hMainWnd, NULL, hInstance, NULL);

    pRichEditWndProc = (WNDPROC)SetWindowLongPtr(hWndRichEdit, GWLP_WNDPROC, (LONG_PTR)RichEditWndProc);

    RichEdit_SetData(hWndRichEdit, _T("C:\\2.rtf"));

    MSG msg;
    while(GetMessage(&msg, 0, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return 0;
}



PM   Вверх
GremlinProg
Дата 2.4.2009, 01:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



странный баг
Цитата(586 @  2.4.2009,  01:33 Найти цитируемый пост)
SetWindowTextW(hWndRichEdit, (wchar_t*)buf); 

оригинально, с ума они там чтоли посходили
по моему, это ненадолго ))

у меня все равно остается впечатление, что SetWindowText для RTF использовать не стоит
тут просто ситуация такая выйдет, что файлы одного редактора будут парситься, а файлы другго - будут выноситься с исходным RTF-содержимым

я пробовал только из википедии пример, который парсится корректно только в первой версии контрола,
в Msftedit он уже не парсится

Добавлено через 1 минуту и 8 секунд
Цитата(586 @  2.4.2009,  03:08 Найти цитируемый пост)
SendMessage(hRichEdit, EM_STREAMIN, SF_RTF, (LPARAM)&es);

опередил )


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
586
Дата 2.4.2009, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 39
Всего: 146



Цитата(GremlinProg @  2.4.2009,  02:16 Найти цитируемый пост)
у меня все равно остается впечатление, что SetWindowText для RTF использовать не стоит

согласен
PM   Вверх
yngwie19
Дата 2.4.2009, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



586, 
Цитата(586 @  1.4.2009,  23:33 Найти цитируемый пост)
LoadLibrary("Msftedit.dll");

1) Эту библиотеку использовать обязятельно?


Цитата(586 @  1.4.2009,  23:33 Найти цитируемый пост)
buf[dwRead] = '\0';
        buf[dwRead+1] = '\0';


2) Это обязятельно?

3) Кстати у этого класса "RichEdit50W" странное название, что значит 50 ?
4) Обязятельно перед каждым строковым литералом ставить _T ?
5) Кстати ищу на компе файл Msftedit.dll, и по ходу у меня его нет. Скажите откуда он загружается?

Это сообщение отредактировал(а) yngwie19 - 2.4.2009, 20:17
PM MAIL   Вверх
586
Дата 2.4.2009, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 39
Всего: 146



Цитата(yngwie19 @  2.4.2009,  20:55 Найти цитируемый пост)
Цитата
LoadLibrary("Msftedit.dll");

Эту библиотеку использовать обязятельно?

Для RichEdit, в зависимости от версии, нужно загружать либо riched32.dll, либо riched20.dll либо Msftedit.dll. В этой библиотеке содержится оконная функция, которая реализует RichEdit.

Цитата(yngwie19 @  2.4.2009,  20:55 Найти цитируемый пост)
Цитата
buf[dwRead] = '\0';
buf[dwRead+1] = '\0';

2) Это обязятельно? 

Обязательно. Сишные строки должны завершаться нулевым символом. В загруженном файле нету нулевых символов, поэтому добавляем нули, чтобы небыло выхода за пределы массива.
Цитата
3) Кстати у этого класса "RichEdit50W" странное название, что значит 50 ?

50 - Это версия RichEdit Control'а. Означает версию 5.0. Буква 'W' означает, что это Юникод-версия RichEdit'а.
Версии 50A (ANSI) нету.
Цитата
4) Обязятельно перед каждым строковым литералом ставить _T ?

Необязательно. Это нужно для того, чтобы проект можно было собрать и под Юникод и под ANSI.
В не-Юникод проектах используются функции RegisterClassExA, CreateWindowExA и т.д., а в Юникод проектах RegisterClassExW, CreateWindowExW и т.д.
Цитата(yngwie19 @  2.4.2009,  20:55 Найти цитируемый пост)
5) Кстати ищу на компе файл Msftedit.dll, и по ходу у меня его нет. Скажите откуда он загружается?

Выбери версию RichEdit'а помладше. Например, riched20.dll RichEdit20W

Это сообщение отредактировал(а) 586 - 2.4.2009, 20:44
PM   Вверх
yngwie19
Дата 2.4.2009, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



Цитата(586 @  2.4.2009,  20:19 Найти цитируемый пост)
Выбери версию RichEdit'а помладше. Например, riched20.dll RichEdit20W

дак самое интересное, что если эту строку закоментить:
Код

// LoadLibrary("Msftedit.dll");

То никакого окна не создается, значит он все же что-то загружает.

586, Тебе большое спасибо за подробные ответы!
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0663 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.