程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 最小的程序

最小的程序

編輯:Delphi

  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.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved