Дополнение к вопросу ?984 "Приведите, пожалуйста, пример, как с помощью сообщения WM_COPYDATA передать другому приложению картинку BMP (именно картинку, а не путь к ней). Среда - VC++." Так вот, если передавать указатель на картинку, то в0 втором приложении она не отображается. Пробовал два варианта: 1. передача hBitmap=(HBITMAP)::LoadImage(NULL,strName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE); cds.lpData=hBitmap; cds.dwData=5; cds.cbData=sizeof(HBITMAP); SendMessage(hWnd,WM_COPYDATA,(WPARAM)GetSafeHwnd(),(LPARAM)&cds); прием HBITMAP nBit=*(HBITMAP)pCopyDataStruct->lpData; CDC* dc=GetDC(); CDC dcMem; dcMem.CreateCompatibleDC(dc); dcMem.SelectObject(hBit); dc->StretchBlt(407,265,245,150,&dcMem,0,0,200,200,SRCCOPY); 2. передача BITMAP Bitmap; hBitmap=(HBITMAP)::LoadImage(NULL,strName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE); ::GetObject(hBitmap,sizeof(BITMAP),&Bitmap); cds.lpData=&Bitmap; cds.dwData=5; cds.cbData=sizeof(BITMAP); SendMessage(hWnd,WM_COPYDATA,(WPARAM)GetSafeHwnd(),(LPARAM)&cds); прием BITMAP
bm=*(BITMAP*)pCopyDataStruct->lpData; long n=bm.bmWidth; HBITMAP hBit=::CreateBitmapIndirect(&bm); CDC* dc=GetDC(); CDC dcMem; dcMem.CreateCompatibleDC(dc); dcMem.SelectObject(hBit); b=dc->StretchBlt(407,265,245,150,&dcMem,0,0,200,200,SRCCOPY); В первом приложении картинка отображается нормально. Числовые данные передаются тоже правильно. Надеюсь на Вашу помощь, Pasha
Доброе время суток, Pasha! Естественно, что не работает. В первом варианте Вы пытаетесь передать другому приложению хэндл HBITMAP, данные по которому оно не сможет прочитать (хэндлы свои для каждого процесса). Во втором варианте - указатель на память процесса (другой процесс не может просто читать данные по указателю). Чтобы передать bitmap, придется получить все его данные в виде массива и передать этот массив. С уважением, Avl2k. Ответ отправлен: 11.08.2003, 18:53 Отправитель: Avl2k
Вопрос № 989
Добрий день! Мне нужен компилятор, который компилирует код, не зависящий от ОС! (под ДОС) Посоветуйте, каким компилятором пользоваться и если можно, то ссылку на етот компилятор! Спасибо
Здравствуйте, Madman! MinGW к примеру, есть и под *никс и под вин. Но вот под особенности каждой ОС тебе прийдется самому писать CRT Ответ отправлен: 09.08.2003, 14:06 Отправитель: [L2]Max
Добрый день, Кирилл! По приведенным данным - никак. Ответ отправлен: 11.08.2003, 11:57 Отправитель: Andrew Vext Отвечает [L2]Max
Доброе время суток, Кирилл! По яндексу ищи Ответ отправлен: 10.08.2003, 22:18 Отправитель: [L2]Max Отвечает Yuri Gordienko
Здравствуйте, Кирилл! Набери в www.google.com строку "Turbo C компилятор" и нажми на кнопку, - получишь результат Успехов Ответ отправлен: 10.08.2003, 14:14 Отправитель: Yuri Gordienko
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.