![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
Dmitriy2k |
|
||||
![]() шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 6.11.2005 Репутация: нет Всего: нет |
Здравструйте! Помогите решить следущую проблему:
Нужно скопировать BITTMAP c одного компа на другой. С сетью никаких проблем нет, зато проблема в следующем: Не получается полностью скопировать HBITMAP хотя бы локальном компьютере. ведь HBITMAP - лишь unsigned int. c другой стороны, можно скопировать BITMAP:
хотя проблема в следущем: все поля битмапа копируются за исключением LPVOID - явно указатель на массив данных битмапа Какой он длины - не знаю. Начал писать для решения данной проблемы следущую функцию:
Подскажите, как лучше решить данную проблему? |
||||
|
|||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
если формат битмапа непостоянный: bmp, jpg, png, rle и т.п.,
то за отсутствием соответствующих библиотек по работе с ними можно просто представить все передаваемые битмапы в неупакованный вид с помощью GetDIBits, ставь biBitCount в 32, biCompression в BI_RGB и считай число байт:
а уже получившийся "распакованный" битмап копируй куда хочешь -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
nworm |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: нет Всего: 8 |
||||
|
||||
Dmitriy2k |
|
|||
![]() шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 6.11.2005 Репутация: нет Всего: нет |
Я не очень уверен, что иду по правильному пути.
Здесь приведен код серверной части моей программы, который отображает скриншот экрана(с масштабированием).
GremlinProg, Мне нужно послать клиенту изображение экрана, вот поэтому я и решил послать клиенту BITMAP Если я правильно мыслю, то нужно по твоему совету воспользоваться функцией GetDIBits int GetDIBits( HDC hdc, // handle to DC // это поле вполне понятно HBITMAP hbmp, // handle to bitmap // это тоже UINT uStartScan, // first scan line to set ? UINT cScanLines, // number of scan lines to copy ? LPVOID lpvBits, // array for bitmap bits // мне не очень понятно, каким из этих полей нужно воспользоваться? Этим? LPBITMAPINFO lpbi, // bitmap data buffer // или этим? UINT uUsage // RGB or palette index ? ); и еще: я не нашел в этой функции поле biBitCount и biCompression. Конечно, я посмотрел эти поля в MSDN, но мне не понятны дальнейшие действия. |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
Dmitriy2k, примеров довольно много, смотри в поиск: http://forum.vingrad.ru/act-Search/CODE/sh...bits/index.html
тебе подойдет любой, который конвертирует битмап в массив байт, этот массив и передавай а на серверной стороне можно делать обратную операцию, с помощью SetDIBits -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |