码农的笔记

Delphi虽好,但已不流行; 博客真好,可以做笔记

博客园 首页 新随笔 联系 订阅 管理

-------------

直接复制过来的,做个笔记

------------------

 

 1.创建窗口并响应事件(不使用VCL)

 1 program WindowDemo;
 2 
 3 //{$APPTYPE CONSOLE}
 4 
 5 uses Windows, Messages;
 6 
 7 // 窗口函数,窗口接到消息时被Windows所调用
 8 function WindowProc(hwnd : HWND; uMsg : Cardinal; wParam : WPARAM;
 9   lParam : LPARAM) : LResult; stdcall;
10 begin
11   Result := 0;
12   case uMsg of
13   // 关闭窗口消息,当用户关闭窗口后,通知主消息循环结束程序
14     WM_CLOSE : PostMessage(hwnd, WM_QUIT, 0, 0);
15   // 鼠标左键按下消息
16     WM_LBUTTONDOWN : MessageBox(hwnd, 'Hello!', '和您打个招呼',
17     MB_ICONINFORMATION);
18   else
19   // 其他消息做默认处理
20     Result := DefWindowProc(hWnd, uMsg, wParam, lParam);
21   end;
22 end;
23   var
24   wndcls : WNDCLASS; // 窗口类的记录(结构)类型
25   hWnd : THandle;
26   Msg : tagMSG; // 消息类型
27 begin
28   wndcls.style := CS_DBLCLKS; // 允许窗口接受鼠标双击
29   wndcls.lpfnWndProc := @WindowProc; // 为窗口类指定窗口函数
30   wndcls.cbClsExtra := 0;
31   wndcls.cbWndExtra := 0;
32   wndcls.hInstance := hInstance;
33   wndcls.hIcon := 0;
34   wndcls.hCursor := LoadCursor(hInstance, 'IDC_ARROW');
35   wndcls.hbrBackground := COLOR_WINDOWFRAME;
36   wndcls.lpszMenuName := nil;
37   wndcls.lpszClassName := 'WindowClassDemo'; // 窗口类名称
38   // 注册窗口类
39   if RegisterClass(wndcls) = 0 then
40     Exit;
41   // 创建窗口
42   hWnd := CreateWindow(
43     'WindowClassDemo', // 窗口类名称
44     'WindowDemo', // 窗口名称
45     WS_BORDER or WS_CAPTION or WS_SYSMENU, // 窗口类型
46     Integer(CW_USEDEFAULT),
47     Integer(CW_USEDEFAULT),
48     Integer(CW_USEDEFAULT),
49     Integer(CW_USEDEFAULT),
50     0,
51     0,
52     hInstance,
53     nil
54     );
55   if hWnd = 0 then
56     Exit;
57   // 显示窗口
58   ShowWindow(hWnd, SW_SHOWNORMAL);
59   UpdateWindow(hWnd);
60   // 创建主消息循环,处理消息队列中的消息并分发
61   // 直至收到WM_QUIT消息,退出主消息循环,并结束程序
62   // WM_QUIT消息由PostMessage()函数发送
63   while GetMessage(Msg, hWnd, 0, 0) do
64   begin
65     TranslateMessage(Msg);
66     DispatchMessage(Msg);
67   end;
68 end.

 

 

 

2.  99乘法表

 1 program NineNine;
 2 
 3 {$APPTYPE CONSOLE}
 4 
 5 uses
 6   SysUtils;
 7 
 8 procedure jiujiuTable();
 9 var
10   i,j:Integer;
11 begin
12  for i:=1 to 9 do
13   begin
14     for j:=1 to i do
15       write(j:3,'*',i,'=',i*j:2);
16     Writeln;
17   end;
18 end;
19 
20 begin
21   Writeln('9x9乘法表:');
22   jiujiuTable();
23   Readln;//防止一闪而过
24 end.

 

posted on 2022-03-07 18:00  码农的笔记  阅读(191)  评论(0编辑  收藏  举报