Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на C / C++

Выпуск № 299
от 02.07.2003, 23:50

Администратор:
Имя: Nick.Box
URL: Информационный ресурс
ICQ: 365124
[censored], [censored]
О рассылке:
Задано вопросов: 900
Отправлено ответов: 2094
Активность: 232.6 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

BOLT
Статус: Профессиональный
Общий рейтинг: 173.98
URL: Начинающему программитсу: софт, примеры, документация, Assembler, C & C++.
Телефон: Три раза АУ!
[Подробней >>]
Gibbel
Статус: Профессиональный
Общий рейтинг: 107.87
URL: Savage Metal Club - жизнь в стиле рок-н-ролл
Телефон: +7 901 710 3146
[Подробней >>]
baldr
Статус: Профессиональный
Общий рейтинг: 112.31
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
 
vitya
Статус: Профессиональный
Общий рейтинг: 108.1
[Подробней >>]
Avl2k
Статус: Опытный
Общий рейтинг: 124.38
[Подробней >>]
Yuri Gordienko
Статус: Опытный
Общий рейтинг: 116.66
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 888. Уважаемые эксперты!Как используя SDK создать ярлык? Спасибо. ... (ответов: 1)
Вопрос № 889. Уважаемые эксперты!Как используя SDK свернуть все окна на Desktope? Спасибо. ... (ответов: 2)
Вопрос № 890. Уважаемые эксперты!Как вывести массив указателей (строк) при помощи одного MessageBox? Спасибо. ... (ответов: 2)
Вопрос № 891. Уважаемые эксперты!Как используя SDK по адресу в памяти прочитать значение? Спасибо. ... (ответов: 2)
Вопрос № 892. Здравствуйте, єксперты. Как можно создать массив, размер которого можно изменять во время выполнения... (ответов: 5)

Вопросов: 5, ответов: 12


 Вопрос № 888

Уважаемые эксперты!Как используя SDK создать ярлык?
Спасибо.



Вопрос отправлен: 28.06.2003, 23:50
Отправитель: Yuriy (g.u@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает BOLT

Добрый день, Yuriy!
Вышло по почте.

Ответ отправлен: 01.07.2003, 13:58
Отправитель: BOLT


 Вопрос № 889

Уважаемые эксперты!Как используя SDK свернуть все окна на Desktope?
Спасибо.



Вопрос отправлен: 28.06.2003, 23:50
Отправитель: Yuriy

[Следующий вопрос >>] [Список вопросов]

Отвечает Gibbel

Доброе время суток, Yuriy!
Используя SDK (Software Development Kit - Набор разработчика программного обеспечения) - никак.
Используя WinAPI - перебираешь все окна EnumWindows(), для каждого из них вызываешь ShowWindow() с параметром SW_MINIMIZE (или SW_FORCEMINIMIZE - оно позволяет свернуть абсолютно любое окно, но доступно только для Win2000 и более поздних версий).

Ответ отправлен: 30.06.2003, 10:36
Отправитель: Gibbel


Отвечает BOLT

Здравствуйте, Yuriy!
Две функции:
1)EnumWindows(...)(EnumWindowsProc(...), EnumDesktopWindows(...) - по вкусу )
2)ShowWindow(hwnd, SW_MINIMIZE).

Ответ отправлен: 01.07.2003, 14:54
Отправитель: BOLT


 Вопрос № 890

Уважаемые эксперты!Как вывести массив указателей (строк) при помощи одного MessageBox?
Спасибо.



Вопрос отправлен: 28.06.2003, 23:51
Отправитель: Yuriy

[Следующий вопрос >>] [Список вопросов]

Отвечает baldr

Здравствуйте, Yuriy!
Особой проблемы не вижу... Если это строки, то просто слей их вместе, поставив в конце каждой перевод строки: \n\r .
А если это именно указатели, то преобразуй в long, а потом - в строковое значение и делай так же.


Ответ отправлен: 30.06.2003, 11:04
Отправитель: baldr


Отвечает BOLT

Добрый день, Yuriy!
Алгоритм: Запихиваешь все строки в одну и потом ее MessageBox'ом выводишь.
Реализация: надеюсь сам справишься?

Ответ отправлен: 01.07.2003, 14:41
Отправитель: BOLT


 Вопрос № 891

Уважаемые эксперты!Как используя SDK по адресу в памяти прочитать
значение?
Спасибо.



Вопрос отправлен: 28.06.2003, 23:52
Отправитель: Yuriy (g.u@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает baldr

Здравствуйте, Yuriy!
Указатели рулят!
Есть у тебя "адрес в памяти" - суть указатель.
Допустим, int *chislo;
Ему присвоено какое-то значение. chislo=0x434567;
Учти, что прочитать данные в адресном пространстве другой проги тебе все равно не дадут! Только в своем или общем!
тогда читаешь так:
int i;
i=*chislo;
То есть, разыменовываешь указатель...

Ответ отправлен: 30.06.2003, 11:08
Отправитель: baldr


Отвечает BOLT

Доброе время суток, Yuriy!
В каком смысле? Смотри topic в Win32SDK "Memory Management Functions", может там найдешь что тебе нужно. Если честно, то я не понял для чего это тебе нужно.


Ответ отправлен: 01.07.2003, 14:40
Отправитель: BOLT


 Вопрос № 892

Здравствуйте, єксперты.
Как можно создать массив, размер которого можно изменять во время выполнения программы (увеличивать и уменьшать) без потери данных, хранящихся в массиве. Ответ, если можно, с исходником.

Заранее благодарен.



Вопрос отправлен: 29.06.2003, 01:50
Отправитель: h@Lt

[Следующий вопрос >>] [Список вопросов]

Отвечает vitya

Доброе время суток, h@Lt!
Не мучаемся, а используем
1. stl -> std::vector, std::deque
2. mfc -> CArray
3. ищем в интернете другие библиотеки шаблонных контейнеров.
4. наконец пишем класс, который это делает. Когда массив должен увеличиться - созадаешь новый (больший), копируешь в него данные, потом удаляешь старый.

Ответ отправлен: 29.06.2003, 10:26
Отправитель: vitya


Отвечает baldr

Добрый день, h@Lt!
Исходника не дам, но хороший совет, как известно, лучше исходника...
Когда мне надо было делать такие вещи, причем с довольно большой скоростью (200 Гц и выше) - писать протокол опроса железяки - я использовал класс для работы со связными списками. Да, тратится место на указатель, но зато не надо мучиться с кучей всяких массивов. Для той задачи это был оптимальный вариант.
Класс писал сам. Ничего сложного.

Ответ отправлен: 30.06.2003, 10:58
Отправитель: baldr


Отвечает Avl2k

Здравствуйте, h@Lt!
Лучше всего использовать STL-класс std::vector, у которого есть resize. Если же хочется ручками, то можно так:
// X - вспомогательная структура, чтобы не заморачиваться с исключениями
struct X
{
X( int* p ): m_ptr( p ) {}
X( X& x ): m_ptr( x.ReleasePtr() ) {}
~X() { delete m_ptr; }
X& operator = ( X& x )
{ if( &x != this ) { delete m_ptr; m_ptr = x.ReleasePtr(); } return *this; }
int* ReleasePtr() { int* p = m_ptr; m_ptr = 0; return p; }
operator int* () const { return m_ptr; }
private:
int* m_ptr;
};
void f()
{
const unsigned int size = 5; // текущий размер
const unsigned int newSize = 3; // новый размер

X p1 = new int[size]; // массив
int i;
for( i = 0; i < size; ++i )
p1[i] = i; // некие данные
X p2 = new int[newSize]; // массив нового размера
memcpy( p2, p1, sizeof( int ) * min( size, newSize ) ); // копируем данные
if( newSize > size )
memset( p2 + size, 0, sizeof( int ) * (newSize - size) ); // заполняем остаток
p1 = p2; // присваиваем указатели
for( i = 0; i < newSize; ++i )
cout << p1[i] << ' '; // выводим массив нового размера
}
С уважением, Avl2k.

Ответ отправлен: 30.06.2003, 10:59
Отправитель: Avl2k


Отвечает Yuri Gordienko

Добрый день, h@Lt!
char *name = (char*)malloc(10); //размер 10
strcpy(name,"name");
//теперь размер массива станет 20, старое содержимое не изменится
name = (char*)realloc(name,20);
free(name);
Успехов


Ответ отправлен: 01.07.2003, 10:59
Отправитель: Yuri Gordienko


Отвечает BOLT

Добрый день, h@Lt!
Два варианта:
1)Больше процессорного времени, меньши памяти: создаешь класс, который будет сам увеличивать память, методом удаления старой и выделением новой = старая + сколоько нужно;
2)Меньше процессорного времени, больше памяти: двусвязанный список. Создаешь обьекты классов, которые связываются друг с другом указателями. Но это, по-моему, в наше время не эффектно.
3)Воспользуюся STL(стандартная библиотека шаблонов), там есть один класик vector.

Ответ отправлен: 01.07.2003, 14:54
Отправитель: BOLT



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (38)
C / C++ (24)
Perl (4)
Builder / Delphi (18)
Pascal (25)
Basic / VBA (8)
Java / JavaScript (11)
PHP (4)
MySQL / MSSQL (5)
Пользователю
Windows 95/98/Me (29)
Windows NT/2000/XP (24)
"Железо" (21)
Поиск информации (15)
Администратору
Windows NT/2000/XP (13)
Linux / Unix (5)
Юристу
Гражданское право (7)
Семейное право (3)
Трудовое право (5)
КоАП (4)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное