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

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


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

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

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

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

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

Номер выпуска:594
Дата выхода:30.07.2011, 16:30
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:222 / 86
Вопросов / ответов:3 / 5

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


Консультация # 101686: здраствуйте уважаемые эксперты. Как мне использовать Listview для вода и редактирование данных? Желательно на ассемблере можно на С++. Зарание спасибо. Farit ...
Консультация # 16413: Подскажите плиз, как работает функция agGetAddressForObect. Описание этой функции в ине-те не нашел. С уважением, Михаил. ..

Консультация # 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 одобряю!

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

здраствуйте уважаемые эксперты. Как мне использовать Listview для вода и редактирование данных? Желательно на ассемблере можно на С++.

Зарание спасибо. Farit

Дата отправки: 11.09.2007, 18:21
Вопрос задал: Farit
Всего ответов: 2
Страница онлайн-консультации »


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

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

HANDLE hListView = CreateWindow(
WC_LISTVIEWW,
NULL,
WS_REPORT|WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|LVS_AUTOARRANGE,
5,
40,
230,
200,
hWnd,
(HMENU) ID_LISTVIEW,
hInst,
NULL);

LV_COLUMN lvColumn;
memset(&lvColumn,0,sizeof(LV_COLUMN));

DWORD dwstyle="GetWindowLong(hWnd,GWL_STYLE);"
SetWindowLong(hWnd,GWL_STYLE,dwStyle|LVS_REPORT);

ListView_SetExtendedListViewStyleEx(hWnd,
LVS_EX_GRIDLINES,LVS_EX_GRIDLINES);
ListView_SetExtendedListViewStyleEx(hWnd,
LVS_EX_FULLROWSELECT,LVS_EX_FULLROWSELECT);

lvColumn.fmt=LVCFMT_LEFT;
lvColumn.mask=LVCF_FMT | LVCF_WIDTH | LVCF_TEXT;
lvColumn.cx = 75;

lvColumn.pszText =_T("One");
ListView_InsertColumn(hWnd,0, &lvColumn);

lvColumn.pszText = _T("Two");
ListView_InsertColumn(hWnd, 1, &lvColumn);

lvColumn.pszText = _T("Three");
ListView_InsertColumn(hWnd, 2, &lvColumn);

lvColumn.pszText = _T("Four");
ListView_InsertColumn(hWnd,4, &lvColumn);

lvColumn.pszText = _T("Five");
ListView_InsertColumn(hWnd, 5, &lvColumn);

Консультировал: Ross (Практикант)
Дата отправки: 11.09.2007, 19:13
Рейтинг ответа:

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


Консультирует Geograph (2-й класс):

Здравствуйте, Farit!
Для работы с listview используют функцию SendMessage, с такими параметрами, как LVM_INSERTITEM, LVM_SETITEM и др. Снизу приведен пример на ассемблере, если Вам нужен полный пример с ресурсами скачайте здесь http://webfile.ru/download.php?id=1524063

Приложение:

Консультировал: Geograph (2-й класс)
Дата отправки: 11.09.2007, 19:30
Рейтинг ответа:

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

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

Подскажите плиз, как работает функция agGetAddressForObect. Описание этой функции в ине-те не нашел.
С уважением, Михаил.

Дата отправки: 29.01.2005, 17:42
Вопрос задал: Ляпин Михаил Юрьевич
Всего ответов: 1
Страница онлайн-консультации »


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

Здравствуйте, Ляпин Михаил Юрьевич!
Чтобы найти описание функции, тебе надо правильно вбить в поисковик ее название. Из какой области API эта функция вообще?

* EMan 2 beta: back in Black :)

Консультировал: _vt
Дата отправки: 30.01.2005, 21:38
Рейтинг ответа:

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


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

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

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



В избранное