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

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


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

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

Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 3211
∙ повысить рейтинг »
CradleA
Статус: Профессионал
Рейтинг: 923
∙ повысить рейтинг »
Орловский Дмитрий
Статус: Мастер-Эксперт
Рейтинг: 0
∙ повысить рейтинг »

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

Номер выпуска:629
Дата выхода:26.01.2016, 16:21
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:7 / 7
Вопросов / ответов:3 / 11

Консультация # 139538: Вопрос: как реализовать несколько слоёв в окне? например сначала рисуешь на первом, потом создайшь ёщё один HDC, рисуешь на нём и рисуешь его поверх первого через BitBlt. Перепробовал разные способы, не получается =(...
Консультация # 42338: Здравствуйте, меня интересуют два вопроса: 1. Какое сообщение надо послать, чтобы отключить компьютер(не просто выйти из ОС, а чтобы и компьютер выключился); 2.1 Как запустить в Windows приложение с параметрами? Мне надо, чтобы мое приложение знало, какие параметры ему передаются и соответственным образом работало. 2.2 Как запустить ко...
Консультация # 28209: ПРивет ВСЕМ!!!! Уважаемые!!!! где взять самый большой и огромный справочник по WinAPI32 на русском... у меня есть два но там не все функции каких то там 790 функций -Этож мало... Очень надо... Спасибо заранее....!!!!!!!! ...

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

Вопрос:
как реализовать несколько слоёв в окне?
например сначала рисуешь на первом, потом создайшь ёщё один HDC,
рисуешь на нём и рисуешь его поверх первого через BitBlt.
Перепробовал разные способы, не получается =(

Дата отправки: 08.06.2008, 14:29
Вопрос задал: Xeladen
Всего ответов: 2
Страница онлайн-консультации »


Консультирует Сандров Алекс:

Здравствуйте, Xeladen!

Самый быстрый и простой способ, который приходит в голову - это иконки.
Иконки можно создавать любых размеров и рисуются они поверх друг друга с учётом прозрачных мест.

Иконка состоит из двух HBITMAP
1. Это сама картинка.
2. Маска вывода на экран.
Поэтому нужно создать HBITMAP для картинки, загрузить её через SelectObject в HDC нарисовать в неё, создать HBITMAP для маски, определить, какие точки будут прозрачными и "отметить" их в маске.
Потом на основе этих двух HBITMAP создать HICON (не забыть после этого удалить эти две HBITMAP-ы). И после этого созданную иконку можно рисовать в любом месте в любой последовательности.

Пример не совсем пример, но кусок кода из работающей программы, я закомментировал внешние входящие данные, нужно будет заменить их собственными.

Так же в примере используется внешний массив out для получения данных о картинке. Можно сделать проще и использовать уже готовую картинку HBITMAP, полученную другими способами, например из файла или через BitBlt.
Ещё важное замечение - массив out содержит данные по три байта на цвет. В примере при разборе эти данные складываются тройками со сдвигом.

Приложение:

Консультировал: Сандров Алекс
Дата отправки: 09.06.2008, 07:24
Рейтинг ответа:

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


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

Здравствуйте, Xeladen!

Еще вариант - использование TransparentBlt вместо BitBlt - а все слои хранить в памяти и отрабатывать WM_PAINT.

Если же надо дать пользователю рисовать, то хорошо подходят прозрачные окна (стиль WS_EX_LAYERED и SetLayeredWindowAttributes(Handle, , 0, LWA_COLORKEY)), наложенные поверх. А параллельно отрисовывать в память, чтобы использовать TransparentBlt для интеграции по завершению работы или переходе к следущему слою.

Консультировал: PavelGM
Дата отправки: 09.06.2008, 10:33
Рейтинг ответа:

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

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

Здравствуйте, меня интересуют два вопроса:
1. Какое сообщение надо послать, чтобы отключить компьютер(не просто выйти из ОС, а чтобы и компьютер выключился);
2.1 Как запустить в Windows приложение с параметрами? Мне надо, чтобы мое приложение знало, какие параметры ему передаются и соответственным образом работало.
2.2 Как запустить командную строку в Винде, впечатать туда команду и заставить выполнить напечатанную команду?
Большой респект,
Сафаргалиев Тимур.

Дата отправки: 07.05.2006, 06:44
Вопрос задал: NotLame
Всего ответов: 5
Страница онлайн-консультации »


Консультирует Ерёмин Андрей:

Здравствуйте, NotLame!
1. Как правило, это делается с помощью функции ExitWindows() с передачей ей параметра EWX_POWEROFF.
2.1. С помощью ShellExecute(). Синтаксис такой (немного упрощён): ShellExecute(0,\'open\',\'путь_к_файлу\',\'параметры\',\'рабочий_каталог\',1);

Консультировал: Ерёмин Андрей
Дата отправки: 07.05.2006, 08:08
Рейтинг ответа:

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


Консультирует Николай Б.:

Здравствуйте, NotLame!
Мой ответ не поместился в сообщение.
Посмотрите вот здесь: http://new-pro.narod.ru/42338.htm

Консультировал: Николай Б.
Дата отправки: 07.05.2006, 08:14
Рейтинг ответа:

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


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

Здравствуйте, NotLame!
1. ExitWindowsEx (EWX_SHUTDOWN, EWX_FORCEIFHUNG, 0);

2.1. ShellExecute (NULL, "open", "cmd", "cmd /k cd c:\\", NULL, SW_SHOWNORMAL);

2.2.
STARTUPINFO si = {NULL};
si.cb = sizeof (STARTUPINFO);
PROCESS_INFORMATION pi = {NULL};
CreateProcess (NULL, "cmd /k cd c:\\", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
CloseHandle (pi.hThread);
CloseHandle (pi.hProcess);

3.
cmd с параметром /k или /c - запустить с выполнением команды. Например
cmd /k cd c:\ - запустить ком. строку и перейти на диск C:
cmd /c cd c:\ - запустить ком. строку, перейти на диск C: и завершить работу ком. строки

Консультировал: estiGi
Дата отправки: 07.05.2006, 16:01
Рейтинг ответа:

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


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

Здравствуйте, NotLame!
Большинство ответивших забыло, что под NT-системы нужно получать привелегию SE_SHUTDOWN. Ну, а на последок рекомендую функцию NtShutdownSystem из ntdll.dll (учите NativeAPI), вместо ExitWindowsEx. Тогда компьютер выключается немножко побыстрей (где-нибудь за 0.2 сек, без лишних вопросов), правда все RING3 приложения летят в голубую даль, но все RING0 корректно завершаются (драйвера, ядро системы)

Приложение:

Консультировал: mix_mix
Дата отправки: 07.05.2006, 17:38
Рейтинг ответа:

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


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

Здравствуйте, NotLame!
1. Поддерживаю mix_mix - сначала необходимо получить соответствующую привилегию...
Хочу предложить свой вариант завершения Винды (на С)
Параметром передается EWX_POWEROFF - для выключения,
либо EWX_REBOOT -для перегрузки

Приложение:

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

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

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

ПРивет ВСЕМ!!!!
Уважаемые!!!! где взять самый большой и огромный справочник по WinAPI32 на русском... у меня есть два но там не все функции каких то там 790 функций -Этож мало...
Очень надо...
Спасибо заранее....!!!!!!!!

Дата отправки: 24.10.2005, 08:57
Вопрос задал: PRiSon
Всего ответов: 4
Страница онлайн-консультации »


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

Здравствуйте, PRiSon!
Самым полным справочником является MSDN. Полнее не бывает.

Консультировал: Jadd
Дата отправки: 24.10.2005, 09:05
Рейтинг ответа:

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


Консультирует korsar (Специалист):

Здравствуйте, PRiSon!
Тебе нужен msdn, конкретно PlatformSDK.
Можешь глянуть тут msdn.microsoft.com

Консультировал: korsar (Специалист)
Дата отправки: 24.10.2005, 11:56
Рейтинг ответа:

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


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

Здравствуйте, PRiSon!
Берешь МСДН, берешь словарь - и вперед :)
А если серьезно, слышал, что где то есть переводы, но они все равно неполные и не поспевают за временем. Кому вообще модет прийти в голову переводить его??? :)

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

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


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

Здравствуйте, PRiSon!
Милейший, Вы случайно не ОС пишете? К чему столько функций. Ставьте MSDN и все...

Консультировал: *SKE*
Дата отправки: 26.10.2005, 08:17
Рейтинг ответа:

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


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

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

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


В избранное