![]() |
|
|
|
|
#1
|
|||
|
|||
|
Добрый вечер, подскажите как загрузить картинку на форму (форма API), если картинка расположена в той же папке что и программа ну или в ресурсах.
|
|
#2
|
||||
|
||||
|
Оффтоп: Формы есть только в vcl среды, в виндах (они ведь - окна!) такого понятия нету совсем, отсюда следует что нет и в WinAPI
![]() Можно так из файла Код:
var hBMP: hBitmap; ... hBMP:= LoadImage(hInstance, PChar(Path + 'Some.bmp'), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); SendDlgItemMessage(hWin, 200, STM_SETIMAGE, IMAGE_BITMAP, hBMP); |
|
#3
|
|||
|
|||
|
Спасибо, буду пробывать)
|
|
#4
|
|||
|
|||
|
а кто может дать наглядный пример загрузке картинки на фон winapi приложения?
Есть ресурс {$R resources.res}, со следующим содержимым: fon BITMAP fon.bmp. Заранее благодарю. |
|
#5
|
||||
|
||||
|
Повторюсь, используйте LoadBitmap
Код:
program Fon;
uses Windows, Messages;
function MainWndProc(Window: HWnd; AMessage, WParam, LParam: Longint): Longint; stdcall;
begin
if AMessage = WM_DESTROY then
begin
PostQuitMessage(0);
Result:= 0;
Exit;
end else
Result:= DefWindowProc(Window, AMessage, WParam, LParam);
end;
{$R resources.res}
function InitApplication: Boolean;
var
wcx: TWndClass;
bmp: HBitmap;
begin
bmp:= LoadBitmap(hInstance,MAKEINTRESOURCE('FON'));
wcx.style:= CS_HREDRAW or CS_VREDRAW;
wcx.lpfnWndProc:= @MainWndProc;
wcx.cbClsExtra:= 0;
wcx.cbWndExtra:= 0;
wcx.hInstance:= hInstance;
wcx.hIcon:= LoadIcon(0, IDI_APPLICATION);
wcx.hCursor:= LoadCursor(0, IDC_ARROW);
wcx.hbrBackground:= CreatePatternBrush(bmp);
wcx.lpszClassName:= PChar('MainWClass');
Result:= RegisterClass(wcx) <> 0;
end;
function InitInstance: HWND;
begin
Result:= CreateWindow(PChar('MainWClass'),'Пример', WS_OVERLAPPEDWINDOW,
Integer(CW_USEDEFAULT), Integer(CW_USEDEFAULT), Integer(CW_USEDEFAULT),
Integer(CW_USEDEFAULT), 0, 0, hInstance, nil);
end;
var
hwndMain: HWND;
AMessage: msg;
begin
if (not InitApplication) then
MessageBox(0, 'Ошибка регистрации окна', nil, mb_Ok)
else
begin
hwndMain := InitInstance;
if (hwndMain = 0) then
MessageBox(0, 'Ошибка создания окна', nil, mb_Ok)
else
begin
ShowWindow(hwndMain, CmdShow);
UpdateWindow(hwndMain);
while (GetMessage(AMessage, 0, 0, 0)) do
begin
TranslateMessage(AMessage);
DispatchMessage(AMessage);
end;
end;
end;
end. |