不使用VCL创建表单

前端之家收集整理的这篇文章主要介绍了不使用VCL创建表单前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要创建一个表单(使用CreateWindow函数),而无需使用 Windows API的VCL(或任何可视控件)的任何帮助.

这个表单将有一个InputBox,一个Button和一个BitMap(就像TImage一样).

我无法在互联网上找到任何样本.有没有人知道我可以下载除MSDN之外的样本的好地方?

解决方法

这是一个示例应用程序,它只使用WinApi创建带有静态,编辑和按钮的Windows,我让你显示BitMap显示作为练习.
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,hInstance,nil);

  //Create the fonts to use
  hFontText := CreateFont(-14,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,VARIABLE_PITCH or FF_SWISS,'Tahoma');
  hFontButton := CreateFont(-14,'Tahoma');

  //create the static
  hStatic:=CreateWindow('Static','This is static text,like a TLabel',WS_VISIBLE or WS_CHILD or SS_LEFT,10,360,44,hMainHandle,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,35,23,nil);
  SendMessage(hEdit,0);

  //create the button
  hButton:=CreateWindow('Button',WS_VISIBLE or WS_CHILD or BS_PUSHBUTTON or BS_TEXT,130,100,28,nil);
  SendMessage(hButton,hFontButton,0);

  //message loop
  while GetMessage(Msg,0) do
  begin
    TranslateMessage(Msg);
    DispatchMessage(Msg);
  end;

end.
原文链接:https://www.f2er.com/html/227249.html

猜你在找的HTML相关文章