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

Программирование. Форум !!!

За 2003-11-08

Re: Новости дискуссионного листа "Программирование. Форум !!!"

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

> Спасибо Vic.
> Как то не сработала мысль,что и тут могут надуть.
> Всетаки проясни мне пожалуста ситуацию с MSDN. На моем ПВЭМе она н
> е стоит.На
> сколько я понял необходимо приобрести компакт диски для ее установки?
> Владимир

Ну да. Собственно, MSDN входит в комплект поставки пакета Microsoft Visual
Studio.
Там компактов много. Обычно 6 - я студия была на 6-и компактах.
Сам MSDN - на 3-х, еще на одном - Visual C++, Visual Basic, Visual FoxPro,
Source Safe, а также средства моделирования (Visual Modeler), реинжиринга
(Visual Analyzer),
утилиты всякие, и.т.д. В принципе, для того, чтобы поставить MSDN достаточно
2-х
компактов. На первом копакте основные файлы справки, индекс и каталог с
примерами, на
втором - все остальные справочные файлы. Но третий компакт тоже иногда
требуется - там лежат
статьи, подборка публикаций переодических изданий. Так что если нужен именно
MSDN, то будет
достаточно 3-х компактов. Основные средства разработки Visual Studio лежат
еще на одном.
На остальных 2 - дополнительные утилиты и еще что то (я их не ставил
никогда).

Сейчас все большее распространение получает Visual Studio NET - в этом
пакете свой MSDN.
Суть одна и та же, но MSDN из NET запускается в своей оболочке (MSDN из
Visual Studio 6.0
открывался виндовой программой справки (hh.exe)). Так что, в принципе можно
и NET - овский
MSDN юзать. Можно даже параллельно поставить две студии (6 - ю и NET).

Vic.

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: http://subscribe.ru/member/unsub?grp=comp.soft.prog.prog&email=
http://subscribe.ru/ mailto:ask@subscribe.ru

   2003-11-08 22:46:47 (#18198)

Re: Новости дискуссионного листа "Программирование. Форум !!!"

Спасибо Vic.
Как то не сработала мысль,что и тут могут надуть.
Всетаки проясни мне пожалуста ситуацию с MSDN. На моем ПВЭМе она не стоит.На
сколько я понял необходимо приобрести компакт диски для ее установки?
Владимир

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: http://subscribe.ru/member/unsub?grp=comp.soft.prog.prog&email=
http://subscribe.ru/ mailto:ask@subscribe.ru

   "vlad" 2003-11-08 18:15:32 (#18112)

Re: Новости дискуссионного листа "Программирование. Форум !!!"

> Понял
> отправляю полную ссылку
> http://www.sources.ru/cpp/bitmap/window_to_file.shtml
>
> Владимир

Ясненько. Бегло взглянул - сперли они откуда то все это...
Как то странно - есть статейка, но из кода - всего одна функция.

> Здравствуйте !
>
> К сожалению, приаттаченные документы и HTML в письме
> в рассылку не проходят - сервис Subscribe отрезает все
> по самые помидоры. Поэтому лучше пришлите ссылочку
> на страницу на sources.ru, где лежит код.
> Так вернее будет.
>
> Vic.
>
> P.S. Кстати, судя по прототипу функции и ее названию назначение
> весьма очевидно. Можно даже попробовать ее самому набросать.

Не ручаюсь, что все будет работать абсолютно корректно,
но у меня работает. Вот попытался воссоздать недостающее
(когда то писал подобное) :

HANDLE DDBToDIB(CBitmap &bitmap, DWORD dwCompression, CPalette* pPal)
{
HDC hDC;
BITMAP bm;
DWORD dwLen;
HANDLE hDIB;
HANDLE handle;
BITMAPINFOHEADER bi;
LPBITMAPINFOHEADER lpbi;

if(bitmap.GetSafeHandle() == NULL)
return NULL;

if(dwCompression == BI_BITFIELDS)
{
// для BI_BITFIELDS поддержки нет.
// уу, правда, можно легко добавить.

TRACE("BI_BITFIELDS not supported :-(\n");

return NULL;
}

HPALETTE hPalette = (HPALETTE) pPal->GetSafeHandle();

if(hPalette == NULL)
hPalette = (HPALETTE) ::GetStockObject(DEFAULT_PALETTE);

bitmap.GetObject(sizeof(bm), (LPSTR) &bm);

bi.biSize = sizeof(BITMAPINFOHEADER);
bi.biWidth = bm.bmWidth;
bi.biHeight = bm.bmHeight;
bi.biPlanes = 1;
bi.biBitCount = (unsigned short) (bm.bmPlanes * bm.bmBitsPixel) ;
bi.biCompression = dwCompression;
bi.biSizeImage = 0;
bi.biXPelsPerMeter = 0;
bi.biYPelsPerMeter = 0;
bi.biClrUsed = 0;
bi.biClrImportant = 0;

int nColors = 0;

if(bi.biBitCount <= 8)
nColors = (1 << bi.biBitCount);

dwLen = bi.biSize + nColors * sizeof(RGBQUAD);

hDC = ::GetDC(NULL);
hPalette = SelectPalette(hDC, hPalette, FALSE);
RealizePalette(hDC);

hDIB = GlobalAlloc(GMEM_FIXED, dwLen);

if(!hDIB)
{
SelectPalette(hDC, hPalette, FALSE);
::ReleaseDC(NULL, hDC);
return NULL;
}

lpbi = (LPBITMAPINFOHEADER) GlobalLock(hDIB);

*lpbi = bi;

GetDIBits(hDC, (HBITMAP) bitmap.GetSafeHandle(), 0L, (DWORD) bi.biHeight,
(LPBYTE) NULL, (LPBITMAPINFO) lpbi, (DWORD) DIB_RGB_COLORS);

bi = *lpbi;

if (bi.biSizeImage == 0)
{
bi.biSizeImage = ((((bi.biWidth * bi.biBitCount) + 31) & ~31) / 8)
* bi.biHeight;

if (dwCompression != BI_RGB)
bi.biSizeImage = (bi.biSizeImage * 3) / 2;
}

dwLen += bi.biSizeImage;

handle = GlobalReAlloc(hDIB, dwLen, GMEM_MOVEABLE) ;

if (handle != NULL)
hDIB = handle;
else
{
GlobalFree(hDIB);

SelectPalette(hDC, hPalette, FALSE);

::ReleaseDC(NULL,hDC);

return NULL;
}

lpbi = (LPBITMAPINFOHEADER)hDIB;

BOOL bSuccess = GetDIBits(hDC, (HBITMAP) bitmap.GetSafeHandle(),
0L,
(DWORD) bi.biHeight,
(LPBYTE)lpbi + (bi.biSize + nColors * sizeof(RGBQUAD)),
(LPBITMAPINFO) lpbi,
(DWORD) DIB_RGB_COLORS);

if(!bSuccess)
{
GlobalFree(hDIB);

SelectPalette(hDC, hPalette, FALSE);

::ReleaseDC(NULL,hDC);

return NULL;
}

SelectPalette(hDC, hPalette, FALSE);

::ReleaseDC(NULL,hDC);

return hDIB;
}

WriteDIB(LPCTSTR lpszFileName, HANDLE hDib)
{
if(!hDib)
return FALSE ;

CFile file;

if(!file.Open(lpszFileName, CFile::modeWrite | CFile::modeCreate))
return FALSE ;

LPBITMAPINFOHEADER lpBmpheader = (LPBITMAPINFOHEADER)hDib ;

int ncolors = 1 << lpBmpheader->biBitCount ;

BITMAPFILEHEADER fileheader;

fileheader.bfType = ((WORD) ('M' << 8) | 'B');
fileheader.bfSize = GlobalSize (hDib) + sizeof(fileheader);
fileheader.bfReserved1 = 0 ;
fileheader.bfReserved2 = 0 ;
fileheader.bfOffBits = (DWORD) (sizeof(fileheader) + lpBmpheader->biSize +
ncolors * sizeof(RGBQUAD)) ;

file.Write(&fileheader, sizeof(fileheader)) ;

file.Write(lpBmpheader, GlobalSize(hDib)) ;

return TRUE ;
}

Функция DDBToDIB не пропускает dwCompression = BI_BITFIELDS - там надо еще
под 3 RGBQUAD выделять память, кажется и еще что то.

В принципе, полезные весьма функции.

Vic.

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: http://subscribe.ru/member/unsub?grp=comp.soft.prog.prog&email=
http://subscribe.ru/ mailto:ask@subscribe.ru

   2003-11-08 08:12:30 (#18007)