Richedit и Winapi

Тема в разделе "MS Visual C++", создана пользователем Fenomant, 12 мар 2009.

  1. Fenomant

    Fenomant Гость

    Здраствуйте, у меня следующая проблема, подскажите пжл как её можно решить...
    Есть программа в ней RichEdit(1)
    Мне надо из другой программы вставить текст в RichEdit(1)

    Вопрос. Как можно функцией sendmessage (или любой другой) вставить текст в RichEdit из другой программы.

    Остановился покачто на sendmessage(hwnd, WM_PASTE, 0, 0);
    Но незнаю как программно скопировать тект в буфер обмена, если кто знает скажите и это.
    Заранее спасибо.
     
  2. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Попробуйте сообщение WM_SETTEXT
     
  3. Fenomant

    Fenomant Гость

    пробывал так делать sendmessage(hwnd, WM_SETTEXT, WPARAM("Text"), 0), непомогло :angry:
     
  4. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    И не поможет, т.к. параметры неправильно передаете

    Вот пример из MSDN:
    Код (Text):
    char szText[] = "This is sample Text";
    SendMessage(hWnd, WM_SETTEXT, 0, (LPSTR)szText);
     
  5. Fenomant

    Fenomant Гость

    если вот так:
    char szText[] = "This is sample Text";
    SendMessage(hWnd, WM_SETTEXT, 0, (LPSTR)szText);
    На это пишет:
    1>.\main.cpp(573) : error C2664: SendMessageW: невозможно преобразовать параметр 4 из 'LPSTR' в 'LPARAM'
    p.s. если спросите почему ошибка SendMessageW а в коде SendMessage? - незнаю :)

    пробывал вот так:
    char szText[] = "This is sample Text";
    SendMessage(hWnd, WM_SETTEXT, 0, (LPARAM)szText);
    этот вариант неработает

    ещё пробывал верхние варианты с SendMessageW, так на всякий случай ;) но тоже непомогло

    p.s. hWnd найден правельно, проверял командой ShowWindow(hWnd, 0)...

    p.s. Незнаете ли из-за чего вот такая ошибка возникает при построении проекта:
    1>Проект : error PRJ0002 : Результат ошибки 1 возвращен из "C:\WINDOWS\system32\cmd.exe".
    хотя строиться нормально, т.е. на выходе получается рабочий ехе файл...
    использую Microsoft VS 2008

    вот код, может чем поможет, хотя...

    Код (Text):
    BOOL Start(){
    HWND hwnd, hwndEdit, hwndButton;

    hwnd = FindWindowA(LPCSTR("TMain"), NULL);
    hwnd = FindWindowExA(hwnd, NULL,LPCSTR("TTePageControl"), NULL);
    hwnd = FindWindowExA(hwnd, NULL,LPCSTR("TTeTabSheet"), NULL);
    hwnd = FindWindowExA(hwnd, NULL,LPCSTR("TTeHeaderPanel"), NULL);
    hwnd = FindWindowExA(hwnd, NULL,LPCSTR("TMyPanelEx"), NULL);
    hwndEdit = FindWindowExA(hwnd, NULL,LPCSTR("TRichViewEdit"), NULL);

    hwnd = FindWindowExA(hwnd, NULL,LPCSTR("TMyPanelEx"), NULL);
    hwnd = FindWindowExA(hwnd, NULL,LPCSTR("TMyPanelEx"), NULL);
    hwnd = FindWindowExA(hwnd, NULL,LPCSTR("TMyPanelEx"), NULL);
    hwndButton = FindWindowExA(hwnd, NULL,LPCSTR("TTeButton"), NULL);

    char szText[] = "This is sample Text";
    SendMessage(hwndEdit, WM_SETTEXT, 0, (LPARAM)(LPSTR)szText);

    //SendMessage(hwndButton, WM_LBUTTONDOWN,MK_LBUTTON,0);
    //SendMessage(hwndButton, WM_LBUTTONUP,MK_LBUTTON,0);
    return true;
    }
    так
    Код (Text):
    char szText[] = "This is sample Text";
    SendMessage(hwndEdit, WM_SETTEXT, 0, (LPARAM)(LPSTR)szText);
    тоже непомогает
     
  6. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Во-первых, разберитесь сначала, что означают буквы А и W на конце системных функций, потом можно будет продолжить
     
  7. Fenomant

    Fenomant Гость

    ANSI и Юникод кодировки
     
  8. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Вот... Отлично. А почему Вы пытаетесь использовать оба типа функций? А какая кодировка у Вас в настройках проекта?
     
  9. Fenomant

    Fenomant Гость

    Лишняя проверка неповредит...

    юникод


    понял, спс


    p.s. непотеме... Чтото или у меня, или у вас с тегами кода туговато (скрин прикрепил) Пользуюсь оперой.
     

    Вложения:

    • 1.JPG
      1.JPG
      Размер файла:
      17,3 КБ
      Просмотров:
      17
  10. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Вот в том то и дело, что программист НЕ ДОЛЖЕН указывать явно, какой тип функции использовать. Поэтому удаляйте постфиксы и приводите программу к компилябельному состоянию.
    Далее, если вы используете Юникод, то и все строки должны быть в Юникоде. Пример, который я приводил выше, не Юникодовский. Объявите строку вроде:
    Код (Text):
    TCHAR wText[] = _T("This is sample Text");
    и вперед ;)
    Желаю удачи!
     
  11. Fenomant

    Fenomant Гость

    спс непомешает

    Спасибо что помогли разобраться, форум хороший, оставлю в закладках ;)
     
Загрузка...

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