Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Дескриптор окна Hwnd...

6.0K
31 октября 2004 года
SnaD
18 / / 20.10.2004
Как получить дескриптор главного окна
собственного приложения?
270
31 октября 2004 года
Drew
265 / / 20.07.2000
Цитата:
Originally posted by SnaD
Как получить дескриптор главного окна
собственного приложения?



не понятен вопрос? явно какой-то подвох...
чем не устраивает

Имя_главного_окна->Handle;

или если ты уже в нём, то

this->Handle;

:???:

310
31 октября 2004 года
fellow
853 / / 17.03.2003
Например, так:
Application->MainForm->Handle

кстати, this необязательно :)
270
31 октября 2004 года
Drew
265 / / 20.07.2000
Цитата:
Originally posted by fellow
Например, так:
Application->MainForm->Handle

кстати, this необязательно :)



а вот-таки и рекомендуется... для читабельности кода :!!!:

310
31 октября 2004 года
fellow
853 / / 17.03.2003
Цитата:
Originally posted by Drew
а вот-таки и рекомендуется... для читабельности кода :!!!:



Полно, какая уж тут читабельность, когда по всему тексту this рассыпаны.

"John take his newspaper in his hand." - "Джон взял свою газету в свою руку."
Ежу ясно, что в свою! Ни к чему такая тупая "читабельность".
:)

270
31 октября 2004 года
Drew
265 / / 20.07.2000
Цитата:
Originally posted by fellow


Полно, какая уж тут читабельность, когда по всему тексту this рассыпаны.

"John take his newspaper in his hand." - "Джон взял свою газету в свою руку."
Ежу ясно, что в свою! Ни к чему такая тупая "читабельность".
:)



я предлагаю не засир.. не засОрять человеку тему :D :D :D

310
31 октября 2004 года
fellow
853 / / 17.03.2003
Цитата:
Originally posted by Drew
я предлагаю не засир.. не засОрять человеку тему :D :D :D


Как?!?! А пофлудеть?!?!? :D

6.0K
31 октября 2004 года
SnaD
18 / / 20.10.2004
Цитата:
Originally posted by Drew


я предлагаю не засир.. не засОрять человеку тему :D :D :D


Ответ на свой вопрос я получил.
Пэтому можете делать с темой что хотите.

270
31 октября 2004 года
Drew
265 / / 20.07.2000
Цитата:
Originally posted by SnaD

Ответ на свой вопрос я получил.
Пэтому можете делать с темой что хотите.



ну, если так, то неинтересно :D :D :D

6.0K
31 октября 2004 года
SnaD
18 / / 20.10.2004
Цитата:
Originally posted by Drew


ну, если так, то неинтересно :D :D :D



Стоп. Еще вопросик...
Как на форму вывести bmp'шку?

243
01 ноября 2004 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by SnaD


Стоп. Еще вопросик...
Как на форму вывести bmp'шку?


Поместить в компонент Image

6.0K
01 ноября 2004 года
SnaD
18 / / 20.10.2004
Цитата:
Originally posted by pacific_7

Поместить в компонент Image



Вот именно, что без Image и других компонентов.
Только через API функции.

310
01 ноября 2004 года
fellow
853 / / 17.03.2003
Цитата:
Originally posted by SnaD
Вот именно, что без Image и других компонентов.
Только через API функции.


Ну, это совсем просто!
Смотрите MSDN:
a) HOWTO: How To Use LoadImage() to Read a BMP File
b) LoadImage
c) BitBlt и StretchBlt
d) Bitmap Reference

6.0K
01 ноября 2004 года
SnaD
18 / / 20.10.2004
Цитата:
Originally posted by fellow

Ну, это совсем просто!
Смотрите 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" ?
- И как его в билдере получить ?

310
01 ноября 2004 года
fellow
853 / / 17.03.2003
Цитата:
Originally posted by SnaD
- Так вот что такое "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

310
01 ноября 2004 года
fellow
853 / / 17.03.2003
Предполагая определённую леность или сложность с доступом к MSDN у почтенного SnaD :) , позволю себе привести оттуда пространную цитату:
Цитата:
The following code uses the LoadImage API to load the bitmap as a DIBSection, and then creates a palette from the DIBSection's color table. If no color table is present, a halftone palette is used:


Код:
BOOL LoadBitmapFromBMPFile( LPTSTR szFileName, HBITMAP *phBitmap,
   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;

   }

Цитата:
The following code demonstrates how to use the LoadBitmapFromBMPFile function:


Код:
case WM_PAINT:
   {
     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, &amp;ps );

   }
   break;
246
01 ноября 2004 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by fellow
Предполагая определённую леность или сложность с доступом к MSDN у почтенного SnaD :) , позволю себе привести оттуда пространную цитату
...
//цитата
...



Здесь нет того, что спрашивает почтенный SnaD:

Цитата:
Originally posted by SnaD

И как его в билдере получить ?


Глобальная переменная HInstance

310
01 ноября 2004 года
fellow
853 / / 17.03.2003
Цитата:
Originally posted by GIZMO
Здесь нет того, что спрашивает почтенный SnaD



Просто это для того, чтобы почтенный SnaD не изобретал велосипед, а юзал уже изобретённый :D

246
02 ноября 2004 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by SnaD


Вот именно, что без Image и других компонентов.
Только через API функции.


А зачем через API? Вот пример из bcb5vcl.hlp. Он явно полегче будет чем из MSDN.

Код:
void __fastcall TForm1::Button1Click(TObject *Sender)

{
  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;
}
310
02 ноября 2004 года
fellow
853 / / 17.03.2003
Цитата:
Originally posted by GIZMO

А зачем через API? Вот пример из bcb5vcl.hlp. Он явно полегче будет чем из MSDN.



Полегче, верно. Но человек просил "только через API". :)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог