Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
_Dan_
2 / 2 / 0
Регистрация: 09.09.2011
Сообщений: 12
#1

Clipboard (запись/чтение) массива структур - C++

13.10.2011, 14:11. Просмотров 988. Ответов 4
Метки нет (Все метки)

Привет, форумчане!
Прошу консультации по работе с буфером обмена Windows.
Нужно корректно записывать/считывать массив структур определенных мной.
По записи/чтении в буфер одного экземпляра структуры вопросов нет. Подскажите как правильно прочитать массив структур из буфера, при условии что записываться в него может различное число экземпляров. Даю свой код для наглядности.


Запись
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
struct Same_Data
{
 int X;
 float y;
};
struct Same_Data My_Data;
 
//------------------------------------------------------------------------------------------------------------
int _tmain(int argc, _TCHAR* argv[])
{
  My_Data.X = 100;
  My_Data.y = 89.698;
 
  UINT format = RegisterClipboardFormat("MY_STRUCT_FORMAT"); //регистрируем наш формат данных
 
  if( OpenClipboard(NULL) )//открываем буфер обмена
  {
       HGLOBAL hgBuffer;
 
       char* chBuffer;
 
       EmptyClipboard(); //очищаем буфер
 
       hgBuffer= GlobalAlloc( GMEM_DDESHARE, sizeof(struct Same_Data) );//выделим память
 
       struct Same_Data* buffer = (struct Same_Data*)GlobalLock(hgBuffer);
 
       *buffer = My_Data;      //запишем данные в память
 
       GlobalUnlock(hgBuffer); //разблокируем память
 
       SetClipboardData(format, hgBuffer); //помещаем данные в буфер обмена
 
       CloseClipboard();       //после работы с буфером, его нужно закрыть
  } //  if( OpenClipboard(NULL) )//открываем буфер обмена
 
    return 0;
}
//************************************************************************************************************

Чтение
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
struct Same_Data
{
 int X;
 float y;
};
struct Same_Data;
 
int _tmain(int argc, _TCHAR* argv[])
{
 
UINT format = RegisterClipboardFormat("MY_STRUCT_FORMAT"); //регистрируем наш формат данных
 
//прочитаем наши данные из буфера обмена
//вызываем второй раз, чтобы просто получить формат
 
Same_Data  data;
 
    if ( OpenClipboard(NULL) ) 
    {
       //извлекаем данные из буфера
       HANDLE hData = GetClipboardData(format);
       Same_Data* buffer = (Same_Data*)GlobalLock( hData );
       data = *buffer;  //заполняем структуру полученными данными
       GlobalUnlock( hData );
       CloseClipboard();
    }
 return 0;
}



Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2011, 14:11     Clipboard (запись/чтение) массива структур
Посмотрите здесь:

Запись в бинарный файл и чтение из него массива структур - C++
Ребята, выручайте. Огромная проблема с записью и с чтением структуры из бинарного файла. Помогите кто чем может. void bin_w() { int...

Запись и чтение в файл массива структур в которую вложен вектор - C++
Здравствуйте! Подскажите как и можно ли вообще записать в один файл данную структуру: struct Xozorgan { char familia; char...

Запись и чтение структур данных - C++
Изучаю структуры данных в C++. Решил написать программу, которая просто получает данные для структуры и записывает структуру в файл txt. ...

Запись/чтение структур (файлы) + разница между FILE * и <fstream> - C++
Всем привет. Порыскал по форуму, погуглил... Решения есть, но они не ясны (что, почему да как) и не все работают. Однако, я так и не нашёл...

Чтение из файла массива структур - C++
/* 4. Дана информация о семи студентах. Структура имеет вид: фамилия, имя, отчество и 4 оценки за экзамены. Вывести данные о...

Чтение массива структур из файла - C++
есть структура typedef struct { unsigned short codeContribution; unsigned short contributorCode; float amountContribution;...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
Заблокирован
13.10.2011, 14:54     Clipboard (запись/чтение) массива структур #2
Цитата Сообщение от _Dan_ Посмотреть сообщение
GlobalLock
Цитата Сообщение от _Dan_ Посмотреть сообщение
GlobalAlloc

Подскажите как правильно прочитать массив структур из буфера
а где массив структур? в программе 2 точки входа...?
_Dan_
2 / 2 / 0
Регистрация: 09.09.2011
Сообщений: 12
13.10.2011, 15:04  [ТС]     Clipboard (запись/чтение) массива структур #3
Цитата Сообщение от alkagolik Посмотреть сообщение


а где массив структур? в программе 2 точки входа...?
Нет, это две консольные программки. Одна записывает в clipboard, вторая считывает. Массива структур тут нет, тут код для 1-го экземпляра. Я и прошу показать как корректно сделать с массивом структур.
alkagolik
Заблокирован
13.10.2011, 15:39     Clipboard (запись/чтение) массива структур #4
Цитата Сообщение от _Dan_ Посмотреть сообщение
Одна записывает в clipboard, вторая считывает.
но позвольте, их же надо синхронизировать... где гарантия что считывание будет после записи? запись будет после считывания... это наверное надо сделать в одном процессе двумя взаимозависимыми потоками...
Цитата Сообщение от _Dan_ Посмотреть сообщение
прошу показать как корректно сделать с массивом структур
не смешите людей. решите пару десятков задач по статическим и динамическим массивам.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2011, 15:56     Clipboard (запись/чтение) массива структур
Еще ссылки по теме:

Чтение массива структур из бинарного файла - C++
Доброго времени суток.Возникла проблема с чтением структур из бинарного файла.Файл открывает,но при считывании данных, сразу закрывается с...

Чтение массива структур из бинарного файла - C++
при выводе дает какую-то кашу из символов переписываю структуру из одного файла в 10. это необходимо для внешней сортировки слиянием ...

запись массива структур в файл - C++
Запись массива структур в файл так, что бы потом можно было считывать, удалять ненужные записи, добавлять, сортировать, поиск. Я пробовал...

Компактная запись массива структур - C++
Можно ли записать массив структур более компактно, чем в приведённом ниже примере? И как это сделать? / control.cpp: определяет точку...


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

Или воспользуйтесь поиском по форуму:
_Dan_
2 / 2 / 0
Регистрация: 09.09.2011
Сообщений: 12
13.10.2011, 15:56  [ТС]     Clipboard (запись/чтение) массива структур #5
Цитата Сообщение от alkagolik Посмотреть сообщение
но позвольте, их же надо синхронизировать... где гарантия что считывание будет после записи? запись будет после считывания... это наверное надо сделать в одном процессе двумя взаимозависимыми потоками...

не смешите людей. решите пару десятков задач по статическим и динамическим массивам.
В моем случае с буфером обмена будет работать человек а не машина, так что синхронизация потоков тут не обязательно. Людей я не смешу, поэтому и обращаюсь в разделе «для начинающих».
Yandex
Объявления
13.10.2011, 15:56     Clipboard (запись/чтение) массива структур
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru