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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Знак _ перед функцией http://www.cyberforum.ru/cpp-beginners/thread365672.html
Читал книгу Страуструпа и наткнулся на интересную вещь: он ставил _ перед функцией. Можете объяснить, что делает этот знак? И можно еще пару примеров?
C++ планировщик движения головок Кто-нибудь знает как можно на C++создать планировщик движения головок?? Дисциплина SCAN. Если кто-то знает-помогите пожалуйста!!!! http://www.cyberforum.ru/cpp-beginners/thread365659.html
Ошибка компилятора wxDev-C++ C++
Помогите, написал пример из книги Дейтела Как программировать на С++. Написал все как в примере, при компиляции выдает ошибки: undefined reference to `WinMain@16' ld returned 1 exit status Что делать? Пример из книги во вложении. Если есть точно такая еже тема просьба удалить мою.
C++ Функция генерирует одинаковые случайные числа
Необходимо заполнить три массива произвольного размера случайными числами. Для заполнения массивов написана функция, но при отработке совпадающие по порядковому номеру элементы всех трех массивов заполняются одинаковыми значениями. Как это исправить? #include <iostream.h> #include <math.h> #include <time.h> #include <stdlib.h> int ZapolnenieMassiva (int x) { int *Massive;
C++ блок-схемы http://www.cyberforum.ru/cpp-beginners/thread365607.html
нарисовать блок-схему для рограммы: Напишите программу, которая будет определять размер для данных (int, char, long, double, short, unsigned, float) и выводить информацию (о размере данных) на экран.
C++ Вычислить сумму элементов массива с нечетными номерами Народ, помогите пожалуйста. Программировать не умею, препод не объясняет, только требует результатов, гразиться, поставить не зачет мне и еще половине группы.Помогите пожалуйста и если есть возможность поясните, что от куда получилось, чтобы хоть, что-то отложилось в памяти.Заранее СПАСИБО!!! В одномерном массиве, состоящем из η вещественных элементов, вычислить: 1) сумму элементов массива с... подробнее

Показать сообщение отдельно
_Dan_
2 / 2 / 0
Регистрация: 09.09.2011
Сообщений: 12
13.10.2011, 14:11     Clipboard (запись/чтение) массива структур
Привет, форумчане!
Прошу консультации по работе с буфером обмена 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;
}



Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru