Как приятны программы написанные на "чистом" WinAPI... Продолжаем курс самообразования - теперь загрузим на форму картинку, в данном случает это будет растровый рисунок my_caption.bmp. Думаю с разбором кода проблем быть не должно... весь код закоментирован (по возможности... =) ). program API_bitmap; uses windows, messages, commctrl; var WinClass:TWndClass; //класс для главного окна Image1, hInst, Handle, hFont:HWND; Bmp:HBITMAP; Msg:TMSG; //месага procedure Close; //закрытие проги begin DeleteObject(hFont); //удаление шрифта UnRegisterClass('TForm', 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: Close; end; end; begin hInst := GetModuleHandle(nil); with WinClass do begin Style:=CS_PARENTDC; //стиль окна lpfnWndProc:= @WindowProc; hInstance:= hInst; hbrBackground:=COLOR_BTNFACE+2; //фон главного окна lpszClassName := 'TForm'; //окно hCursor:= LoadCursor(0, IDC_ARROW); //загрузка курсора end; InitCommonControls; RegisterClass(WinClass); // Создание главного окна программы Handle:=CreateWindowEx(0, 'TForm', 'Форма на WinAPI', WS_OVERLAPPEDWINDOW or WS_VISIBLE or WS_MINIMIZEBOX or WS_MAXIMIZEBOX or WS_SYSMENU, 86, 26, 192, 116 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, 0, 0, 192, 116, Handle, 0, hInst, nil); //создаем Image186, 26, 192, 116 SendMessage(Image1, WM_SETFONT, hFont, 0); Bmp:=LoadImage(HInstance,'D:\image\my_caption.bmp', IMAGE_BITMAP,0,0,LR_LOADFROMFILE); //создаем... SendMessage(Image1, STM_SETIMAGE, IMAGE_BITMAP, Bmp); //сообщение while(GetMessage(Msg, 0, 0, 0)) do //здесь обработка зообщений begin TranslateMessage(Msg); //смотрим сообщения DispatchMessage(Msg); //удаляем их из очереди end; end.
|