点击或拖拽改变大小

App 类

X#
创建一个表示整个应用程序的实体。
请注意,您必须在代码中创建 App 的子类并向该类添加 Start() 方法。您不能像在 VO 中那样在 GUI 类中向 App() 类添加 Start() 方法。
继承层次
Object
  VObject
    App
      VOWinFormApp

命名空间:  VO
程序集:  VOGUIClasses (在 VOGUIClasses.dll 中) 版本:2.22 GA
语法
 CLASS App INHERIT VObject
查看代码

App 类型公开以下成员。

构造函数
  名称说明
公共方法App
构造一个应用程序。
Top
方法
  名称说明
公共方法Destroy
Free memory resources allocated for a VObject object and its derived objects.
(继承自 VObject。)
公共方法Exec
启动应用程序的事件处理循环。
公共方法GetAccel
此方法返回当前活动加速键的句柄。
公共方法GetAccelWindow
此方法获取必须翻译加速键的窗口句柄。
公共方法GetDialogWindow
该方法获取必须处理对话框按键的活动对话框窗口句柄
公共方法GetMdiClientWindow
此方法获取活动 ShellWindow 上 MDI 客户端窗口的句柄。
公共方法Handle
返回应用程序的句柄。
公共方法Quit
通过指示应用程序关闭自身来终止应用程序。
公共方法Run
调用并执行指定的命令。
公共方法SetAccel
此方法设置当前活动加速键(属于活动菜单)的句柄。
公共方法SetAccelWindow
此方法设置必须翻译加速键的窗口。
公共方法SetDialogWindow
此方法设置必须处理对话框键的活动对话框窗口的句柄
公共方法SetMdiClientWindow
此方法设置活动 ShellWindow 上 MDI 客户端窗口的句柄。
Top
字段
  名称说明
公共字段oCargo
Cargo slot.
(继承自 VObject。)
Top
备注
App 类启动、运行和停止应用程序。然而,几乎所有应用程序中的代码都在事件处理程序中执行。一旦调用 App:Exec() 方法,系统就会开始向您发送事件。
虽然术语应用程序在窗口和非窗口世界中是一致的,但窗口应用程序的事件驱动性质旨在处理用户驱动的事件(例如鼠标点击或窗口调整大小)。 因此,窗口应用程序的功能被分配到事件调度循环中。
在此类中,Start() 方法类似于 CA-Clipper 中的入口点 START() 函数。它是构建应用程序主要元素的地方。 在 App:Start() 中声明的对象应该是具有“应用程序范围”范围的对象。
在 App:Start() 方法中,您必须调用 App:Exec()。这样做会调用底层窗口系统的消息处理循环,并通过激活系统调度程序开始系统事件处理机制。
App:Exec() 方法可以被认为是一个分层服务,具有典型的“获取-翻译-调度-消息”机制,由您的底层窗口系统驱动,以及“过滤-翻译-调度-事件”机制, 通过系统框架由系统调度程序指挥。
App:Quit() 方法提供了一种方法,可以通过调用 App:Quit() 方法来终止应用程序的 Exec() 循环,从而终止应用程序。 它类似于 CA-Clipper 中的 QUIT() 函数。
示例
以下示例演示了一个完整的应用程序,使用 App 类的各种方法:
X#
 1DEFINE IDM_MYMENU := "MyMenu"
 2DEFINE IDM_MYMENU_CLOCK_ID := 1000
 3DEFINE IDM_MYMENU_GETHANDLE_ID := 1001
 4DEFINE IDM_MYMENU_QUIT_ID := 1002
 5FUNCTION Start as VOID
 6    LOCAL oApp as XApp
 7    oApp := XApp{}
 8    oApp:Start()
 9    RETURN
10
11CLASS XApp INHERIT APP
12    METHOD Start()
13        LOCAL oWin AS Window
14        oWin := MyTopAppWin{SELF}
15        oWin:Show()
16
17        SELF:Exec()
18
19        RETURN NIL
20END CLASS
21
22CLASS MyTopAppWin INHERIT TopAppWindow
23    CONSTRUCTOR(oOwnerApp)
24        LOCAL lRetVal AS LONG
25
26        SUPER(oOwnerApp)
27
28        SELF:Menu := MyMenu{SELF}
29
30        lRetVal := oOwnerApp:Run("Clock")
31
32        SELF:Caption := "My Top App Window Application"
33        SELF:WarningMessage("The return value of running CLOCK is :" +AsString(lRetVal))
34        RETURN
35
36    METHOD GetClock()
37        SELF:Owner:Run("Clock")
38        RETURN NIL
39
40    METHOD GetHandle()
41        SELF:WarningMessage("The handle of this app is :"+AsString(SELF:Handle()))
42        RETURN NIL
43
44    METHOD GoQuit()
45        SELF:Owner:Quit()
46        RETURN NIL
47END CLASS
48
49CLASS MyMenu INHERIT Menu
50    CONSTRUCTOR(oOwner)
51        SUPER(ResourceID{IDM_MYMENU})
52
53        SELF:RegisterItem(IDM_MYMENU_CLOCK_ID, HyperLabel{#GetClock,,,})
54        SELF:RegisterItem(IDM_MYMENU_GETHANDLE_ID, HyperLabel{#GetHandle,,,})
55        SELF:RegisterItem(IDM_MYMENU_QUIT_ID, HyperLabel{#GoQuit,,,})
56END CLASS
57
58RESOURCE IDM_MYMENU MENU
59    BEGIN
60        POPUP "&Menu1"
61
62        BEGIN
63            MENUITEM "&Clock", IDM_MYMENU_CLOCK_ID
64            MENUITEM "&Get App Handle", IDM_MYMENU_GETHANDLE_ID
65            MENUITEM SEPARATOR
66            MENUITEM "&QUIT", IDM_MYMENU_QUIT_ID
67        END
68    END
参见