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

RFpro.ru: Консультации по функциям WinAPI


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Орловский Дмитрий
Статус: Советник
Рейтинг: 6841
∙ повысить рейтинг »
Коцюрбенко Алексей aka Жерар
Статус: Профессор
Рейтинг: 3160
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2597
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / WinAPI

Номер выпуска:597
Дата выхода:12.12.2011, 17:30
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:213 / 86
Вопросов / ответов:3 / 6

Консультация # 29279: Здраствуйте уважаемые эксперты. Подскажите пожайлуста. Есть функция FindFirstFile,FindNextFile которая возвращает указатель на буфер с параметрами найденного файла. Как мне определить что найденный файл является каталогом,если Windows в один бит где находится флаг что это каталог ставит и другие характеристики. Зарание спасибо. ..


Консультация # 28766: Добрый День Товарищи Россияне - Эксперты В области WinAPI !!! Вот такой вот вопросик.... Нарисовал простое Окно с рисунком в редакторе, вызвал функцию DialogBoxParam, но ресунок не появился. Я знаю, для того чтобы этот простой БитМап(.bmp) появился в Этом окне мне надо что то сделать..... Так вот Товарищи!!! Как мне этот рисунок отоброз...
Консультация # 173619: Здравствуйте!Помогите,пожалуйста,разобраться со следующим вопросом: Есть задача по синхронизации потоков. Есть некоторое число потоков(>3).Нужно,чтобы каждый поток запускался и выводил на консоль сообщение ,что он запустился,потом этот поток спит несколько секунд (с помощью функции Sleep) и выводит на консоль сообщение, что он завершился.С...

Консультация # 29279:

Здраствуйте уважаемые эксперты.
Подскажите пожайлуста.
Есть функция FindFirstFile,FindNextFile которая возвращает указатель на буфер с параметрами найденного файла.
Как мне определить что найденный файл является каталогом,если Windows в один бит где находится флаг что это каталог ставит и другие характеристики.
Зарание спасибо.
Мой майл: magoja@ua.fm

Дата отправки: 10.11.2005, 01:05
Вопрос задал: MAgoja
Всего ответов: 3
Страница онлайн-консультации »


Консультирует Алексей Смуриков (Специалист):

Здравствуйте, MAgoja!
Надо просто при сравнении типа на папку не писать \'=\', а всё зависит от языка разработки поставить что-то вроде логического \'и\':
if Type & DIRECTORY

Консультировал: Алексей Смуриков (Специалист)
Дата отправки: 10.11.2005, 07:14
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Rusland (Профессионал):

Здравствуйте, MAgoja!
Второй параметр у функций iAttributes может содержать faDirectory - это означает что найденное - папка.

Консультировал: Rusland (Профессионал)
Дата отправки: 10.11.2005, 09:29
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует estiGi:

Здравствуйте, MAgoja!
Ты имеешь в виду поле DWORD dwFileAttributes структуры WIN32_FIND_DATA ?
Значения записываются не _в_один_бит_, а в _одно_число_ типа DWORD. И суть как раз в том, что в каждом бите свое знчение и их надо проверять.

if (dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
// this is folder
}
if (dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) {
// folder is hidden
}
if (dwFileAttributes & FILE_ATTRIBUTE_READONLY) {
// folder has a ro attribute
}

Консультировал: estiGi
Дата отправки: 10.11.2005, 12:35
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 28766:

Добрый День Товарищи Россияне - Эксперты В области WinAPI !!!
Вот такой вот вопросик....
Нарисовал простое Окно с рисунком в редакторе, вызвал функцию DialogBoxParam, но ресунок не появился. Я знаю, для того чтобы этот простой БитМап(.bmp) появился в Этом окне мне надо что то сделать.....
Так вот Товарищи!!! Как мне этот рисунок отоброзить учитывая что я его уже нарисовал в редакторе в этом самом окне.
Если можно с примером.Спасибо!!

Дата отправки: 02.11.2005, 07:38
Вопрос задал: Joy~ (Студент)
Всего ответов: 2
Страница онлайн-консультации »


Консультирует estiGi:

Здравствуйте, PRiSon!
Ну, наверное еще не помешало бы его на диалог положить...
Создаешь контрол типа StaticText, ставишь ему стиль SS_BITMAP и ложишь на статик свой битмап посылкой ему сообщения STM_SETIMAGE

Консультировал: estiGi
Дата отправки: 03.11.2005, 00:51
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Лысков Игорь Витальевич (Старший модератор):

Здравствуйте, PRiSon!
http://www.rsdn.ru/article/qna/ui/dlgbk.xml

Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 05.11.2005, 16:26
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 173619:

Здравствуйте!Помогите,пожалуйста,разобраться со следующим вопросом:
Есть задача по синхронизации потоков.
Есть некоторое число потоков(>3).Нужно,чтобы каждый поток запускался и выводил на консоль сообщение ,что он запустился,потом этот поток спит несколько секунд (с помощью функции Sleep) и выводит на консоль сообщение, что он завершился.Сообщения должны выводиться в хаотичном порядке.Например:
поток 1 запустился
поток 3 запустился
поток 1 завершился
поток 2 запустился и т.д. в цикле.
Синхронизацию осуществляю с помощью CRITICAL SECTION .Проблема именно в хаотичности.(os windows xp,среда builder c++6)
Помогите новичку!пробная версия в приложении!

Дата отправки: 23.10.2009, 23:22
Вопрос задал: РАИ
Всего ответов: 1
Страница онлайн-консультации »


Консультирует amnick (Профессионал):

Здравствуйте, РАИ.
Как я вижу, Вы переделали мою программу. Парочка замечаний.

- если несколько потоков должны выполнять одинаковую работу, совершенно незачем для каждого из них делать отдельную функцию. Можно обойтись одной функцией, передавая ей разные параметры. Сохраняйте нужные данные локально (в стеке) или выделяйте память для потока (Thread Local Storage). См. описания (TlsAlloc,TlsGetValue,TlsSetValue,TlsFree). В данном случае достаточно сохранить номер потока в локальной переменной. Написание отдельных одинаковых функций для каждого потока свидетельствует о непонимании того, как работают потоки.

- в вашем варианте есть серьезная (с моей точки зрения) ошибка. Вы пишете:

EnterCriticalSection(&cs);
cout<<"thread#1 started"<<GetCurrentThreadId()<<endl;
Sleep(500);
cout<<"thread#1 finished"<<GetCurrentThread()<<endl;
LeaveCriticalSection(&cs);

При этом выполнение очередного потока начнется только после завершения предыдущего.
Нужно синхронизировать только вывод на консоль:

EnterCriticalSection(&cs);
cout<<"thread#1 started"<<GetCurrentThreadId()<<endl;
LeaveCriticalSection(&cs);

Sleep(500);

EnterCriticalSection(&cs);
cout<<"thread#1 finished"<<GetCurrentThread()<<endl;
LeaveCriticalSection(&cs);

- директива #define WIN32_LEAN_AND_MEAN должна быть ПЕРЕД #include<windows.h>, иначе она не имеет смысла.

Переработанный вариант программы — в приложении. Директивы #pragma, специфические для Borland C++ Builder, я закомментировал. Проверял с MSVC 6.0.

Потоки запускаются и завершаются в случайном порядке. Для запуска генерируется случайный номер и проверяется, не запущен ли уже поток с данным номером. Если нет, то поток создается. Внутри каждого потока генерируется случайная задержка, поэтому и завершаются потоки в случайном порядке. Пример выполнения:

thread 4 started 9604
thread 1 started 8396
thread 3 started 8816
thread 2 started 8300
thread 3 finished 8816
thread 1 finished 8396
thread 4 finished 9604
thread 2 finished 8300

All threads finished. Press any key to exit.

Успехов!

P.S. Если будут вопросы, то ответить смогу только в понедельник после 13-14 часов.

Приложение:

Консультировал: amnick (Профессионал)
Дата отправки: 24.10.2009, 00:31
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное