Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 23.10.2015
Сообщений: 3
1

Как добавить событие по записи данных в буфер обмена?

17.07.2016, 13:02. Показов 1368. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, как в Win32 приложении добавить событие по записи данных в буфер обмена (если я например копирую текст из браузера то в программе что-то делается)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.07.2016, 13:02
Ответы с готовыми решениями:

Как скопировать в буфер обмена выбранные записи в listbox?
Всем привет. Есть Listbox с записями. Как скопировать при нажатии на кнопку все записи, выбранные в listbox?

При копировании текста в буфер обмена, должно происходить событие
Как сделать что бы при копировании в буфер обмена, определенного текста происходило событие? Например при копировании из адресной строки...

Добавить переменную в буфер обмена
Здравствуйте. Перерыл первые три страницы Googl'а в поисках ответа, однако его так и не нашел. Суть задачи такова: нужно добавить...

2
5 / 5 / 3
Регистрация: 15.07.2016
Сообщений: 13
18.07.2016, 19:36 2
Лучший ответ Сообщение было отмечено Raka как решение

Решение

Привет. Вот типа тово
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#define WM_UPDATE_CLIPBOARD (WM_APP+1)
BOOL ClipboardChange;
HWND hwndClipboard;
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    LRESULT retval=0;
    switch( uMsg )
    {
    case WM_CREATE:
    {
        hwndClipboard = SetClipboardViewer(hWnd);/*Включит окно, идентификатор которого передается через единственный параметр,
                                                 в список окон просмотра Clipboard, вернув идентификатор предыдущего окна
                                                 просмотра Clipboard hwndNextViewer.
                                                 -- Вы должны сохранить возвращенное значение, так как функция вашего окна
                                                 просмотра Clipboard будет передавать по цепочке сообщения для других окон
                                                 просмотра Clipboard, пользуясь значением hwndNextViewer.
                                                    Если окно вашего приложения является единственным окном просмотра
                                                    Clipboard, функция вернет значение NULL.
                                                -- Перед завершением работы, приложение должно восстановить список окон
                                                просмотра Clipboard, удалив из него свое окно.
                                                Эту процедуру следует выполнить при обработке сообщения WM_DESTROY при
                                                помощи функции ChangeClipboardChain*/
    }
    break;
    
    case WM_CHANGECBCHAIN:
    {
        if( (HWND)wParam==hwndClipboard )
            hwndClipboard=(HWND)lParam;
        else if( hwndClipboard!=NULL )
            SendMessage(hwndClipboard,uMsg,wParam,lParam);
    }
    break;
 
    case WM_DRAWCLIPBOARD:
    {
        if( !ClipboardChange )
            PostMessage(hWnd,WM_UPDATE_CLIPBOARD,(WPARAM)0,(LPARAM)0);
        if( hwndClipboard!=NULL )
            SendMessage(hwndClipboard,uMsg,wParam,lParam);
    }
    break;
 
    case WM_UPDATE_CLIPBOARD:
    {
        if( ClipboardChange==FALSE )
        {
            ClipboardChange = TRUE;
            static int Count= 0;
            char svStr[64];
            wsprintfA(svStr,"Clipboard change: %d", Count);
            SendMessage(hWnd,WM_SETTEXT,(WPARAM)0,(LPARAM)svStr);
            ++Count;
            ClipboardChange = FALSE;
        }
    }
    break;
 
    case WM_CLOSE:
    PostMessage(hWnd,WM_DESTROY,(WPARAM)0,(LPARAM)0);
    break;
    case WM_DESTROY:
    
        ChangeClipboardChain(hWnd,hwndClipboard);/*Удаляет Wnd из цепочки пpосмотpа буфеpа
                                                 выpезанного изобpажения и заменяет его на WndNext*/
 
    PostQuitMessage(0);
    break;
    default:
    retval=DefWindowProc(hWnd,uMsg,wParam,lParam);
    break;
    }
    return retval;
}
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
19.07.2016, 09:39 3
На Vista и выше можно использовать более простой API, см. AddClipboardFormatListener.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.07.2016, 09:39
Помогаю со студенческими работами здесь

Добавить строку в буфер обмена
Dim oDataObj As New DataObject 'вставляем строку в буфер обмена-в лифте её видно не будет oDataObj.SetText str ...

Копирование в буфер обмена данных из поля
Как скопировать в буфер обмена данные из поля в VBA? Сами данные получаю, след. образом: Set rst =...

Одновременная передача данных в виде двух массивов через буфер обмена
Добрый день, пишу программу корреляционного расходомера на основе sdk виртуального осциллографа и столкнулся с проблемой одновременной...

Копирование через буфер обмена из 2х полей формы и вставка данных в другую форму
Всем очень добрый день! Подскажите пожалуйста, можно ли реализовать одновременное копирование данных из 2-х полей формы и вставку этих...

Загрузка и сохранение массива данных, посредством помещения его в буфер обмена. Пример?
Цель: 1) Скопировать массив данных в буфер. 2) сохранить в файл тип имени файла любой. MyFile.MyFormat 3) Загрузить массив из файла,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
std::mutex в C++: Хитрости и тонкости использования
Wired 03.03.2025
В C++ ключевым инструментом для обеспечения корректной работы параллельных процессов выступает std::mutex – примитив синхронизации, появившийся в стандарте C++11. До его появления использовали. . .
std::span в C++: Производительно­сть и практическое использование
Wired 03.03.2025
Традиционная работа с указателями и массивами часто приводит к ошибкам и уязвимостям в безопасности. Именно поэтому в C++20 появился std::span - легковесная обертка, обеспечивающая безопасный. . .
std::span в C++: Константность и безопасность типов
Wired 03.03.2025
std::span - представитель семейства view-типов, появившийся в стандарте C++20. Этот компонент предоставляет легковесное и эффективное решение для работы с непрерывными последовательностями данных,. . .
std::span в C++: Subview и Slice
Wired 03.03.2025
std::span - невладеющий тип данных C++, который предоставляет гибкий интерфейс для работы с непрерывными последовательностями элементов. Этот тип существенно упрощает обработку массивов и. . .
std::span в C++: Доступ к элементам и итерирование
Wired 03.03.2025
Появление std::span в стандарте C++20 стало значительным шагом вперед, предоставив разработчикам средство для безопасного и производительного доступа к непрерывным последовательностям элементов. . . .
std::span в C++: Управление массивами данных без владения
Wired 03.03.2025
Новый класс std::span, появившийся в стандарте C++20, открывает возможности для оптимизации работы с последовательными наборами данных. По сути, это легковесная обертка, которая предоставляет доступ. . .
Неблокируемый стек в C++26: реализуем простой сборщик мусора
stackOverflow 02.03.2025
Многопоточные приложения требуют надежных и производительных структур данных, способных эффективно работать в условиях конкурентного доступа. Неблокируемые структуры данных представляют собой особый. . .
Шаблон REQ/REP в ZeroMQ: сверхбыстрый обмен сообщениями в C++ и Python
stackOverflow 02.03.2025
Построение высоконагруженных распределенных систем требует надежного и производительного механизма обмена сообщениями. ZeroMQ выделяется среди прочих решений своей невероятной скоростью работы и. . .
Нестандартные приемы работы с итераторами в C++
stackOverflow 02.03.2025
Итераторы - один из краеугольных камней C++, предоставляющий универсальный механизм обхода и манипуляции данными в контейнерах. Появившись как замена небезопасным указателям, они эволюционировали от. . .
Лексический анализ и регулярные выражения в C++26
stackOverflow 02.03.2025
Лексический анализ - ядро любого компилятора и инструмента обработки текста. Каждый программист сталкивается с задачами парсинга строк, обработки файлов конфигурации или анализа пользовательского. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru