Дескриптор окна Hwnd...
собственного приложения?
Как получить дескриптор главного окна
собственного приложения?
не понятен вопрос? явно какой-то подвох...
чем не устраивает
Имя_главного_окна->Handle;
или если ты уже в нём, то
this->Handle;
:???:
Application->MainForm->Handle
кстати, this необязательно :)
Например, так:
Application->MainForm->Handle
кстати, this необязательно :)
а вот-таки и рекомендуется... для читабельности кода :!!!:
а вот-таки и рекомендуется... для читабельности кода :!!!:
Полно, какая уж тут читабельность, когда по всему тексту this рассыпаны.
"John take his newspaper in his hand." - "Джон взял свою газету в свою руку."
Ежу ясно, что в свою! Ни к чему такая тупая "читабельность".
:)
Полно, какая уж тут читабельность, когда по всему тексту this рассыпаны.
"John take his newspaper in his hand." - "Джон взял свою газету в свою руку."
Ежу ясно, что в свою! Ни к чему такая тупая "читабельность".
:)
я предлагаю не засир.. не засОрять человеку тему :D :D :D
я предлагаю не засир.. не засОрять человеку тему :D :D :D
Как?!?! А пофлудеть?!?!? :D
я предлагаю не засир.. не засОрять человеку тему :D :D :D
Ответ на свой вопрос я получил.
Пэтому можете делать с темой что хотите.
Ответ на свой вопрос я получил.
Пэтому можете делать с темой что хотите.
ну, если так, то неинтересно :D :D :D
ну, если так, то неинтересно :D :D :D
Стоп. Еще вопросик...
Как на форму вывести bmp'шку?
Стоп. Еще вопросик...
Как на форму вывести bmp'шку?
Поместить в компонент Image
Поместить в компонент Image
Вот именно, что без Image и других компонентов.
Только через API функции.
Вот именно, что без Image и других компонентов.
Только через API функции.
Ну, это совсем просто!
Смотрите MSDN:
a) HOWTO: How To Use LoadImage() to Read a BMP File
b) LoadImage
c) BitBlt и StretchBlt
d) Bitmap Reference
Ну, это совсем просто!
Смотрите MSDN:
a) HOWTO: How To Use LoadImage() to Read a BMP File
b) LoadImage
c) BitBlt и StretchBlt
d) Bitmap Reference
Со всем этим я уже разбирался.
Ф-ция:
LoadImage(HINSTANCE hinst,
LPCTSTR lpszNAME,
UINT uType,
int cxDesired,
int cyDesired,
UINT uLoad);
- Так вот что такое "HINSTANCE hinst" ?
- И как его в билдере получить ?
- Так вот что такое "HINSTANCE hinst" ?
- И как его в билдере получить ?
Открываем MSDN и читаем: "Handle to an instance of the module that contains the image to be loaded. To load an OEM image, set this parameter to zero"
RTFM ещё никому не навредило :D
HPALETTE *phPalette )
{
BITMAP bm;
*phBitmap = NULL;
*phPalette = NULL;
// Use LoadImage() to get the image loaded into a DIBSection
*phBitmap = (HBITMAP)LoadImage( NULL, szFileName, IMAGE_BITMAP, 0, 0,
LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE );
if( *phBitmap == NULL )
return FALSE;
// Get the color depth of the DIBSection
GetObject(*phBitmap, sizeof(BITMAP), &bm );
// If the DIBSection is 256 color or less, it has a color table
if( ( bm.bmBitsPixel * bm.bmPlanes ) <= 8 )
{
HDC hMemDC;
HBITMAP hOldBitmap;
RGBQUAD rgb[256];
LPLOGPALETTE pLogPal;
WORD i;
// Create a memory DC and select the DIBSection into it
hMemDC = CreateCompatibleDC( NULL );
hOldBitmap = (HBITMAP)SelectObject( hMemDC, *phBitmap );
// Get the DIBSection's color table
GetDIBColorTable( hMemDC, 0, 256, rgb );
// Create a palette from the color tabl
pLogPal = (LOGPALETTE *)malloc( sizeof(LOGPALETTE) + (256*sizeof(PALETTEENTRY)) );
pLogPal->palVersion = 0x300;
pLogPal->palNumEntries = 256;
for(i=0;i<256;i++)
{
pLogPal->palPalEntry.peRed = rgb.rgbRed;
pLogPal->palPalEntry.peGreen = rgb.rgbGreen;
pLogPal->palPalEntry.peBlue = rgb.rgbBlue;
pLogPal->palPalEntry.peFlags = 0;
}
*phPalette = CreatePalette( pLogPal );
// Clean up
free( pLogPal );
SelectObject( hMemDC, hOldBitmap );
DeleteDC( hMemDC );
}
else // It has no color table, so use a halftone palette
{
HDC hRefDC;
hRefDC = GetDC( NULL );
*phPalette = CreateHalftonePalette( hRefDC );
ReleaseDC( NULL, hRefDC );
}
return TRUE;
}
{
PAINTSTRUCT ps;
HBITMAP hBitmap, hOldBitmap;
HPALETTE hPalette, hOldPalette;
HDC hDC, hMemDC;
BITMAP bm;
hDC = BeginPaint( hWnd, &ps );
if( LoadBitmapFromBMPFile( szFileName, &hBitmap, &hPalette ) )
{
GetObject( hBitmap, sizeof(BITMAP), &bm );
hMemDC = CreateCompatibleDC( hDC );
hOldBitmap = (HBITMAP)SelectObject( hMemDC, hBitmap );
hOldPalette = SelectPalette( hDC, hPalette, FALSE );
RealizePalette( hDC );
BitBlt( hDC, 0, 0, bm.bmWidth, bm.bmHeight,
hMemDC, 0, 0, SRCCOPY );
SelectObject( hMemDC, hOldBitmap );
DeleteObject( hBitmap );
SelectPalette( hDC, hOldPalette, FALSE );
DeleteObject( hPalette );
}
EndPaint( hWnd, &ps );
}
break;
Предполагая определённую леность или сложность с доступом к MSDN у почтенного SnaD :) , позволю себе привести оттуда пространную цитату
...
//цитата
...
Здесь нет того, что спрашивает почтенный SnaD:
И как его в билдере получить ?
Глобальная переменная HInstance
Здесь нет того, что спрашивает почтенный SnaD
Просто это для того, чтобы почтенный SnaD не изобретал велосипед, а юзал уже изобретённый :D
Вот именно, что без Image и других компонентов.
Только через API функции.
А зачем через API? Вот пример из bcb5vcl.hlp. Он явно полегче будет чем из MSDN.
{
Graphics::TBitmap *pBitmap = new Graphics::TBitmap();
try
{
pBitmap->LoadFromFile("C:\\Program Files\\Common Files\\Borland Shared\\Images\\Splash\\256color\\factory.bmp ");
pBitmap->Transparent = true;
pBitmap->TransparentColor = pBitmap->Canvas->Pixels[50,50];
Form1->Canvas->Draw(0,0,pBitmap);
pBitmap->TransparentMode = tmAuto;
Form1->Canvas->Draw(50,50,pBitmap);
}
catch (...)
{
ShowMessage("Could not load or display bitmap");
}
delete pBitmap;
}
А зачем через API? Вот пример из bcb5vcl.hlp. Он явно полегче будет чем из MSDN.
Полегче, верно. Но человек просил "только через API". :)