I need to create a form (using CreateWindow
functions) without any help from the VCL
(or any visual control) only using the Windows API.
This form will have an InputBox
, a Button
and a BitMap
(like TImage
does).
I was not able to find any sample on internet. Does anyone know a good place where I can download a sample besides MSDN?
VLC is a juggernaut among media players. Since February 2005, it's been downloaded 3 billion times, according to VideoLAN.
VLC software does not use any user account, and does not collect any user data, when working. VideoLAN does not collect any data, nor any telemetry, when VLC is being run.
Open the editing controlsTo use the VLC media player to trim video, you need to switch from the playback controls over to the editing controls. Opening the controls is easy. Click the View menu at the top of the media player and then click Advanced Controls from the dropdown menu.
As VLC is open-source software, it has a business model that is mostly financed through donations. Of course, not all people donate to such open-source software but, not only individuals donate to such projects but also large corporations.
This is a sample App which uses only the WinApi to create Windows with an static, edit and button, I let you the display of the BitMap display as exercise for you.
uses
Windows,
Messages,
SysUtils;
var
Msg : TMSG;
LWndClass : TWndClass;
hMainHandle: HWND;
hButton : HWND;
hStatic : HWND;
hEdit : HWND;
hFontText : HWND;
hFontButton: HWND;
procedure ReleaseResources;
begin
DestroyWindow(hButton);
DestroyWindow(hStatic);
DestroyWindow(hEdit);
DeleteObject(hFontText);
DeleteObject(hFontButton);
PostQuitMessage(0);
end;
function WindowProc(hWnd,Msg:Longint; wParam : WPARAM; lParam: LPARAM):Longint; stdcall;
begin
case Msg of
WM_COMMAND: if lParam = hButton then
MessageBox(hMainHandle,'You pressed the button Hello', 'Hello',MB_OK or MB_ICONINFORMATION);
WM_DESTROY: ReleaseResources;
end;
Result:=DefWindowProc(hWnd,Msg,wParam,lParam);
end;
begin
//create the window
LWndClass.hInstance := hInstance;
with LWndClass do
begin
lpszClassName := 'MyWinApiWnd';
Style := CS_PARENTDC or CS_BYTEALIGNCLIENT;
hIcon := LoadIcon(hInstance,'MAINICON');
lpfnWndProc := @WindowProc;
hbrBackground := COLOR_BTNFACE+1;
hCursor := LoadCursor(0,IDC_ARROW);
end;
RegisterClass(LWndClass);
hMainHandle := CreateWindow(LWndClass.lpszClassName,'Window Title', WS_CAPTION or WS_MINIMIZEBOX or WS_SYSMENU or WS_VISIBLE, (GetSystemMetrics(SM_CXSCREEN) div 2)-190,
(GetSystemMetrics(SM_CYSCREEN) div 2)-170, 386,200,0,0,hInstance,nil);
//Create the fonts to use
hFontText := CreateFont(-14,0,0,0,0,0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,VARIABLE_PITCH or FF_SWISS,'Tahoma');
hFontButton := CreateFont(-14,0,0,0,0,0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,VARIABLE_PITCH or FF_SWISS,'Tahoma');
//create the static
hStatic:=CreateWindow('Static','This is static text, like a TLabel',WS_VISIBLE or WS_CHILD or SS_LEFT, 10,10,360,44,hMainHandle,0,hInstance,nil);
SendMessage(hStatic,WM_SETFONT,hFontText,0);
//create the edit
hEdit:=CreateWindowEx(WS_EX_CLIENTEDGE,'Edit','This a Edit like and TEdit', WS_VISIBLE or WS_CHILD or ES_LEFT or ES_AUTOHSCROLL,10,35,360,23,hMainHandle,0,hInstance,nil);
SendMessage(hEdit,WM_SETFONT,hFontText,0);
//create the button
hButton:=CreateWindow('Button','Hello', WS_VISIBLE or WS_CHILD or BS_PUSHBUTTON or BS_TEXT, 10,130,100,28,hMainHandle,0,hInstance,nil);
SendMessage(hButton,WM_SETFONT,hFontButton,0);
//message loop
while GetMessage(Msg,0,0,0) do
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With