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

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


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

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

Чемпионы рейтинга экспертов в этой рассылке

Орловский Дмитрий
Статус: Профессор
Рейтинг: 4052
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2649
∙ повысить рейтинг »
cradlea
Статус: Практикант
Рейтинг: 1258
∙ повысить рейтинг »

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

Номер выпуска:590
Дата выхода:26.02.2011, 22:00
Администратор рассылки:Зенченко Константин Николаевич (Модератор)
Подписчиков / экспертов:242 / 88
Вопросов / ответов:3 / 8

Вопрос № 28555: Здравствуйте ув. эксперты. В функции(процедуре) окна можно объявить объект PAINTSTRUCT ps; и сразу начинать рисование BeginPaint(hwnd, &ps); Можно сделать даже так BeginPaint(hwnd, (LPPAINTSTRUCT)&ps); Но почему нельзя сделать во...


Вопрос № 36292: Как определить размер логического диска (тома)? Беру GetDiskFreeSpace, перемножаю все кластеры на секторы и на размеры кластера, получается чтото не то. При GetDiskFreeSpaceEx появляется переполнение буфера. Подозреваю, что нужно както яв...
Вопрос № 55017: Добрый день, у меня возникла проблема со следующей функцией PlaySound(LPCSTR pszSound,HMODULE hmod, DWORD fdwSound ) заданный звук не проигрывается есть только звук по умолчанию(щелчек), если кто то с этим сталкивался то разьясните поподробнее, и есл...

Вопрос № 28555:

Здравствуйте ув. эксперты.

В функции(процедуре) окна можно объявить объект
PAINTSTRUCT ps; и сразу начинать рисование BeginPaint(hwnd, &ps);
Можно сделать даже так BeginPaint(hwnd, (LPPAINTSTRUCT)&ps);
Но почему нельзя сделать вот так:
PAINTSTRUCT ps;
LPPAINTSTRUCT lpps = &ps;
Данная идея родилась после изучения заголовочных файлов Windows API.
Конкретно winuser.h Практического воплощения пока нет, просто не понятно почему не срабатывает механизм определения типов.

Отправлен: 30.10.2005, 17:24
Вопрос задал: Цепков Константин Владимирович
Всего ответов: 4
Страница вопроса »


Отвечает Алексей Смуриков (Специалист) :
Здравствуйте, Цепков Константин Владимирович!
Если тат то тогда только один совет:
Переходи на ассемблер там пофигу какой тип!!! Организация: ОАО НИИ
Адрес сайта: Авторский проект
ICQ # 308870500

-----
Из того, что я утратил больше всего мне жаль разум.....

Ответ отправил: Алексей Смуриков (Специалист)
Ответ отправлен: 30.10.2005, 17:45

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 69487 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает Bob Johnson (Мастер-Эксперт) :
    Здравствуйте, Цепков Константин Владимирович!
    А кто тебе сказал, что так сделать нельзя? Так можно сделать как раз...

    Приложение:
    Россия, Калуга
    Адрес сайта: Программирование

    Ответ отправил: Bob Johnson (Мастер-Эксперт)
    Ответ отправлен: 30.10.2005, 18:19

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 69494 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает estiGi :
    Здравствуйте, Цепков Константин Владимирович!
    А с чего ты взял, что нельзя? LPPAINTSTRUCT взялся от typedef на PAINTSTRUCT*, поэтому такой код:
    PAINTSTRUCT ps;
    LPPAINTSTRUCT lpps = &ps;
    прекрасно компилируется и работает. Если у тебя нет - значит ты где то изменил тот самый winuser.h. Или я просто не понял, что именно ты имел в виду.
    А вообще при рисовании посоветовал бы хорошо подумать, когда используешь BeginPaint/EndPaint - могут возникнуть непонятки и неожиданности :)
    Если вдруг ты не понимаешь, почему нужный тебе фрагмент не перерисовывается, когда ты вроде все делаешь правильно, пользуй GetDC/ReleaseDC

    Ответ отправил: estiGi
    Ответ отправлен: 30.10.2005, 19:04

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 69499 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает VampSergey :
    Здравствуйте, Цепков Константин Владимирович!
    так:

    PAINTSTRUCT ps;
    LPPAINTSTRUCT lpps = &ps;

    делать можно(зачем-то...)!
    Может не подключен "windows.h" или "winuser.h", но не могу представить как(без них) остальное-то работает :)

    Ответ отправил: VampSergey
    Ответ отправлен: 01.11.2005, 00:16

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 69762 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 36292:

    Как определить размер логического диска (тома)?
    Беру GetDiskFreeSpace, перемножаю все кластеры на секторы и на размеры кластера, получается чтото не то.
    При GetDiskFreeSpaceEx появляется переполнение буфера.
    Подозреваю, что нужно както явно задавать типы данных при перемножении (ставить большие вроде __int64), но где и как пока не выяснил.
    Мсожет ктото решил уже эту задачу?
    PS/ Расчет делается на большие диски (например, больше 100 мб).

    Отправлен: 27.02.2006, 00:56
    Вопрос задал: Белкин Алексей
    Всего ответов: 2
    Страница вопроса »


    Отвечает X-MAN :
    Здравствуйте, Белкин Алексей!
    Существует функция _getdiskfree()
    См. приложение

    Первый параметр этой функции - номер логического диска: a -1, c - 3, и т.д.

    Приложение:

    Ответ отправил: X-MAN
    Ответ отправлен: 27.02.2006, 02:42

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 85671 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает Morgion (Студент) :
    Здравствуйте, Белкин Алексей!
    Преобразуй в double и всё заработает. См приложение

    Приложение:
    Россия, Санкт-Петербург

    Ответ отправил: Morgion (Студент)
    Ответ отправлен: 27.02.2006, 10:25

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 85713 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 55017:

    Добрый день, у меня возникла проблема со следующей функцией PlaySound(LPCSTR pszSound,HMODULE hmod, DWORD fdwSound ) заданный звук не проигрывается есть только звук по умолчанию(щелчек), если кто то с этим сталкивался то разьясните поподробнее, и если не сложно то обьясните и как понимать вот это SND_FILENAME-The pszSound parameter is a filename

    Отправлен: 11.09.2006, 13:18
    Вопрос задал: All
    Всего ответов: 2
    Страница вопроса »


    Отвечает InviZ :
    Здравствуйте, All!
    SND_FILENAME - это флаг, который означает, что строка, переданная в первом параметре является именем файла, а не, к примеру, идентификатором ресурса...
    Так что, в первый раз вы вызываете функцию правильно, во второй раз - нет.

    Ответ отправил: InviZ
    Ответ отправлен: 11.09.2006, 18:00

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 116170 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает Лысков Игорь Витальевич (Старший модератор) :
    Здравствуйте, All!
    Немного подправлю предыдущего эксперта
    Смотрим сначала описание параметра fdwSound из MSDN (см приложение)
    SND_ALIAS говорит о том, что заданное имя должно интерпретироваться явно как системное событие (например, WindowsLogon - т.е. должен звучать звук, как при загрузке);
    SND_FILENAME - явно как имя файла;
    SND_RESOURCE - как идетификатор ресурса
    Если не задано ничего, то сначала ищется ассоциация (типа как SND_ALIAS), затем ищется файл с указанным именем (как SND_FILENAME).
    Т.о., в указанном примере ошибки нет. По любому, будет проигрываться файл с указанным именем.

    PS Программа вполне рабочая. У меня работает.
    Если не проигрывается, попробуй проиграть из текущего каталога (имя задать без пути)

    Приложение:
    Украина, Кировоград
    Тел.: +380957525051
    ICQ # 234137952
    Mail.ru-агент: igorlyskov@mail.ru

    -----
    Люби своего ближнего, как самого себя

    Ответ отправил: Лысков Игорь Витальевич (Старший модератор)
    Ответ отправлен: 11.09.2006, 18:37

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 116180 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    подать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.



    В избранное