最小的程序

原创 2001年07月24日 10:51:00

program testwindow;

uses
  Windows,
  Messages;

var
  WinClass: TWndClassA;
  Inst, Handle, Button1, Label1, Edit1: Integer;
  Msg: TMsg;
  hFont: Integer;

{ Checks if typed password is 'Amigreen' and shows Message }
procedure CheckPassword;
var
  Textlength: Integer;
  Text: PChar;
begin
  TextLength := GetWindowTextLength(Edit1);
  if TextLength = 8 then
  begin
    GetMem(Text, TextLength + 1);
    GetWindowText(Edit1, Text, TextLength + 1);
    if Text = 'Amigreen' then
    begin
      MessageBoxA(Handle, 'Password is correct.', 'Password check', MB_OK);
      FreeMem(Text, TextLength + 1);
      Exit;
    end;
  end;
  MessageBoxA(Handle, 'Password is incorrect.', 'Password check', MB_OK);
end;

{ Custom WindowProc function }
function WindowProc(hWnd, uMsg, wParam, lParam: Integer): Integer; stdcall;
begin
  Result := DefWindowProc(hWnd, uMsg, wParam, lParam);
  { Checks for messages }
  if (lParam = Button1) and (uMsg = WM_COMMAND) then
    CheckPassword;
  if uMsg = WM_DESTROY then
    Halt;
end;

begin
  { ** Register Custom WndClass ** }
  Inst := hInstance;
  with WinClass do
  begin
    style              := CS_CLASSDC or CS_PARENTDC;
    lpfnWndProc        := @WindowProc;
    hInstance          := Inst;
    hbrBackground      := color_btnface + 1;
    lpszClassname      := 'AG_TESTWINDOW';
    hCursor            := LoadCursor(0, IDC_ARROW);
  end; { with }
  RegisterClass(WinClass);

  { ** Create Main Window ** }
  Handle := CreateWindowEx(WS_EX_WINDOWEDGE, 'AG_TESTWINDOW', 'Amigreen TestWindow 1.00',
                           WS_VISIBLE or WS_SIZEBOX or WS_CAPTION or WS_SYSMENU,
                           363, 278, 305, 65, 0, 0, Inst, nil);
  { ** Create a button ** }
  Button1 := CreateWindow('Button', 'OK', WS_VISIBLE or WS_CHILD or BS_PUSHLIKE or BS_TEXT,
                           216, 8, 75, 25, handle, 0, Inst, nil);
  { ** Create a label (static) ** }
  Label1 := Createwindow('Static', '', WS_VISIBLE or WS_CHILD or SS_LEFT,
               8, 12, 76, 13, Handle, 0, Inst, nil);

  { ** Create an edit field ** }
  Edit1 := CreateWindowEx(WS_EX_CLIENTEDGE, 'Edit', '', WS_CHILD or WS_VISIBLE or
                          WS_BORDER or ES_PASSWORD, 88, 8, 121, 21, Handle, 0, Inst, nil);

  { ** Create Font Handle ** }
  hFont := CreateFont(-11, 0, 0, 0, 400, 0, 0, 0, DEFAULT_CHARSET,
                      OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
                      DEFAULT_PITCH or FF_DONTCARE, 'MS Sans Serif');

  { Change fonts }
  if hFont <> 0 then
  begin
    SendMessage(Button1, WM_SETFONT, hFont, 0);
    SendMessage(Label1, WM_SETFONT, hFont, 0);
    SendMessage(Edit1, WM_SETFONT, hFont, 0);
  end;
  { Change label (static) text }
  SetWindowText(Label1, 'Enter password:');
  { Set the focus to the edit control }
  SetFocus(Edit1);

  UpdateWindow(Handle);

  { ** Message Loop ** }
  while(GetMessage(Msg, Handle, 0, 0)) do
  begin
    TranslateMessage(msg);
    DispatchMessage(msg);
  end; { with }
end.

什么是小程序?

小程序越来越热,唱衰小程序的声音也逐渐消退,每隔一百米至少有一个小程序的趋势已是无可阻拦。以肯德基、星巴克、农业银行、摩拜单车等为首的大企业纷纷选择开发属于自己的小程序,也是因为看准了小程序的诸多优点...
  • qq_37040054
  • qq_37040054
  • 2018年01月12日 15:55
  • 4

什么是小程序

什么是小程序,小程序能为医疗带来什么?  从1月9日小程序上线以来,短短2天时间,关于小程序的文章就被各种刷屏。热度消退后,很多人对于小程序也会产生很多疑问。 小程序是...
  • N____N
  • N____N
  • 2017年03月11日 15:32
  • 132

程序如何执行和程序入口

[摘要] 我们的程序进入到入口函数之前,是发生了很多事情的。操作系统的安排,启动运行时库,运行时库再初始化好环境,然后启动你的入口函数,你的程序才正常的运行起来。等你的程序运行结束后,就退回到运行时库...
  • so__sunshine
  • so__sunshine
  • 2016年03月22日 16:17
  • 1524

小程序一:小程序的框架

小程序一:小程序的框架
  • Zhao1234567890123456
  • Zhao1234567890123456
  • 2016年11月02日 18:11
  • 824

在程序内启动其他进程(程序)

使用代码来启动另外一个程序,有很多方法,归结起来主要有以下几个函数,他们的说明及使用特点分别归纳在下表中。 ① ShellExecute函数        下面的大部分信息来自于MSDN。   ...
  • henan_lujun
  • henan_lujun
  • 2013年05月23日 14:02
  • 785

程序中的this

介绍java和js中的this用法
  • weixin_31150137
  • weixin_31150137
  • 2017年07月20日 16:20
  • 40

【android程序之聊天程序】

networkcomm.net 网络通信框架来自于英国剑桥,其开源版本2.3.1 中自带了一个编写android的例子,可以很好的帮助我们入门。 此示例的功能,是在2个安卓手机上,输入对方的...
  • jsnb001
  • jsnb001
  • 2015年02月09日 20:25
  • 307

如何在程序中随时的退出程序

在BaseActivity的onCreate()方法中调用了ActivityCollector的addActivity()方法,表明将当前正在创建的活动添加到活动管理器中,然后在BaseActivit...
  • Evan_Jhon
  • Evan_Jhon
  • 2016年05月31日 11:20
  • 352

在程序中如何调用可执行程序。

在程序中如何调用可执行程序。   第一个程序:调用WinExec()函数,但是打开应用程序后,得手动关闭,没有自行结束的方法。 #include #include ...
  • BoArmy
  • BoArmy
  • 2013年03月09日 08:40
  • 442

MAX7219程序显示程序

#include        #define  HIGH     1       #define  LOW      0       #define  TRUE      1       #...
  • czhaii
  • czhaii
  • 2014年01月05日 12:08
  • 1271
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:最小的程序
举报原因:
原因补充:

(最多只允许输入30个字)