|
Zanimljivo. Pure Winapi u delphi-u
Za pocetak loadimage deo
procedure Ucitaj_BMP(const hDlg: THandle);
var
H: THandle;
begin
H := LoadImage(0, 'test.bmp', IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
if H <> 0 then
SendMessage(GetDlgItem(hDlg, IDC_KARTA), STM_SETIMAGE, IMAGE_BITMAP, H);
end;
A dialog procedura je
function DlgProc(hWin, uMsg, wParam, lParam: Integer): Integer; stdcall;
begin
Result := 0;
case uMsg of
WM_COMMAND : begin
if wParam = IDC_GEN then Write;
if wParam = IDC_UCITAJ then Ucitaj_BMP(hWin);
if wParam = IDC_ABOUT then
MessageBoxA(hWin, AboutText, AboutCapt, MB_ICONINFORMATION);
if Lo(wParam) = IDC_KARTA then
if Hi(wParam) = STN_CLICKED then
MessageBoxA(hWin, 'Klik na img', 'Info', MB_ICONINFORMATION);
end;
WM_INITDIALOG : begin
hIcon := LoadIcon(Inst, 'MAINICON');
SendMessage(hWin, WM_SETICON, ICON_SMALL, hIcon);
SendMessage(hWin, WM_SETICON, ICON_BIG, hIcon);
SetWindowText(hWin, WindowTitle);
hWnd := hWin;
SetWindowLong(GetDlgItem(hWin, IDC_KARTA), GWL_STYLE,
GetWindowLong(GetDlgItem(hWin, IDC_KARTA), GWL_STYLE) or SS_NOTIFY);
end;
WM_DESTROY,
WM_CLOSE : End_Work;
end;
end;
Prvo, STATIC wnd class je "losa" kontrola za prikaz slika, BUTTON je bolji izbor, mada moze da se koristi i ona.
Dalje, da bi STATIC dispatch-ovao evente mora da ima SS_NOTIFY wndstyle. Ovo sam dodao u kodu gore (Set/Getwindowlong), mada se moze dodati u res.
I na kraju STATIC dispatch-uje sve message kroz cast-ovani WM_COMMAND, znaci LoWord je identifier kontrole, a HiWord je event koji se odigrao.
Eto toliko za ovo ukljucenje
|