Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.07.2010, 16:45   #1
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию Загрузка bmp в TImage на WinApi

Подскажите пожалуйста, как мне окрыть файл *.bmp используя winapi?
Вот то, что нашел по вызову диалога, но как загрузить выбранный файл в TImage я не могу понять:
Код:
Var
ofn:OPENFILENAME;
begin
ZeroMemory(@ofn,sizeof(openfilename));
With ofn do
  begin
  lStructSize:=sizeof(openfilename);
  lpstrInitialDir:='E:\Äîêóìåíòû Ñàøè\TestNumber';
  lpstrTitle:='Îòêðûòü ôàéë';
  nMaxFile:=255;
  lpstrFile:=VirtualAlloc(0,255,MEM_COMMIT,PAGE_READWRITE);
  lpstrFilter:='win32 executables'+#0+'*.exe'+#0+'all file types'#0+'*.*'+#0#0;
  flags:=ofn_filemustexist + ofn_hidereadonly + ofn_pathmustexist;
  end;
if getopenfilename(ofn) then
messagebox(0, ofn.lpstrfile, nil, mb_ok);
virtualfree(ofn.lpstrfile, 0, mem_release);
end;
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Старый 19.07.2010, 17:08   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Смотри внимательно:
Код:
{
  Данный код был спроектирован в среде APIx - Visual WinAPI 2
  Copyright (c) PiddleSoft 2004-2006
  http://piddlesoft.narod.ru
  piddlesoft@mail.ru

  Дата генерации листинга - 19.07.2010 16:05:36
}

program APIx_Project26;

uses
  windows, messages, commctrl; //Используемые модули

// Иконка
{$R 'icon.res'}

var
  WinClass : TWndClass; //переменная класса TWndClass для создания главного окна
  hInst : HWND; //хандлер приложения
  Handle : HWND; //локальный хандлер
  Msg : TMSG; //сообщение
  Bmp : HBITMAP;
  hFont : HWND; //хандлер шрифта
  Image1 : HWND; //TImage

{$R 'D:\_MainDir\APIx 2 - Visual WinAPI\temp\bitmaps.res'}
procedure ShutDown; //процедура завершения программы
begin
  DeleteObject(hFont); //удаление шрифта
  UnRegisterClass('TAPIxForm', hInst); //удаление окна
  ExitProcess(hInst); //закрытие программы
end;

function WindowProc(hwnd, msg, wparam, lparam: longint): longint; stdcall; //обработчик сообщений
begin
  Result := DefWindowProc(hwnd, msg, wparam, lparam);
  case Msg of

  WM_DESTROY: ShutDown;
  end;
end;

begin
hInst := GetModuleHandle(nil);
  with WinClass do
  begin
   Style := CS_PARENTDC; //стиль класса главного окна
   hIcon := LoadIcon(hInst, MAKEINTRESOURCE('APIXICON')); //иконка программы
   lpfnWndProc := @WindowProc; //назначение обработчика сообщений
   hInstance := hInst;
   hbrBackground := COLOR_BTNFACE + 1; //цвет окна
   lpszClassName := 'TAPIxForm'; //класс окна
   hCursor := LoadCursor(0, IDC_ARROW); //активный курсор
  end;
InitCommonControls;
RegisterClass(WinClass); //регистрация класса в системе

// Создание главного окна программы
Handle := CreateWindowEx(0, 'TAPIxForm', 'Форма1',
WS_OVERLAPPEDWINDOW or
WS_VISIBLE or WS_MINIMIZEBOX or WS_MAXIMIZEBOX or WS_SYSMENU,
219, 116, 550, 366,
0, 0,
hInst, nil);

// Создание шрифта
hFont := CreateFont(
-11, 0, 0, 0, 0, 0, 0, 0,
DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH or FF_DONTCARE, 'MS Sans Serif');

Image1 := CreateWindow(
'Static',
'' ,
WS_CHILD or SS_BITMAP or WS_VISIBLE,
104, 88, 225, 145, Handle, 0, hInst, nil);
SendMessage(Image1, WM_SETFONT, hFont, 0);
Bmp := LoadBitmap(hInstance, MAKEINTRESOURCE('Image1'));
SendMessage(Image1, STM_SETIMAGE, IMAGE_BITMAP, Bmp);


  // Цикл сбора сообщений
  while(GetMessage(Msg, 0, 0, 0)) do
  begin
    TranslateMessage(Msg); //прием сообщений
    DispatchMessage(Msg); //удаление сообщений из очереди
  end;
  end.
bmp - это HBitmap
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.07.2010, 17:47   #3
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Цитата:
TImage на WinApi
В API нету никаких TImage...
Вы можете загрузить bmp-картинку функцией LoadImage и рисовать на форме вручную при получении сообщения WM_PAINT...
Ну или "загнать" его в Static...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как узнать цвет пикселя в TImage , если там не bmp а jpg Dima_Dima Общие вопросы Delphi 0 31.05.2010 14:12
timage в bmp varelik Мультимедиа в Delphi 8 21.12.2009 09:55
Загрузка в TImage program123 Общие вопросы Delphi 4 06.12.2009 15:53
Узнать цвет пикселя в Timage, если там не bmp а jpeg? TwiX Общие вопросы Delphi 4 27.09.2009 19:11
Изменение размера - Сжатие BMP в TImage Air Помощь студентам 2 02.03.2008 17:00