点击或拖拽改变大小

App 类

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

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

App 类型公开以下成员。

构造函数
  名称说明
公共方法App
构造一个应用程序。
Top
方法
  名称说明
公共方法AfterDispatch 已过时。
公共方法代码示例BeforeDispatch
与 App:AfterDispatch() 一起使用的低级处理程序,用于拦截发送到应用程序消息队列的任何消息。
公共方法Destroy
Free memory resources allocated for a VObject object and its derived objects.
(继承自 VObject。)
公共方法Exec
启动应用程序的事件处理循环。
公共方法Exec(Int32)
启动应用程序的事件处理循环。
公共方法Exec(Int32, Object)
启动应用程序的事件处理循环。
公共方法GetAccel 已过时。
公共方法GetAccelWindow 已过时。
公共方法GetDialogWindow
该方法获取必须处理对话框按键的活动对话框窗口句柄
公共方法GetMdiClientWindow 已过时。
公共方法Handle
返回应用程序的句柄。
公共方法Quit
通过指示应用程序关闭自身来终止应用程序。
公共方法Run
调用并执行指定的命令。
公共方法SetAccel 已过时。
公共方法SetAccelWindow 已过时。
公共方法SetDialogWindow
此方法设置必须处理对话框键的活动对话框窗口的句柄
公共方法SetMdiClientWindow 已过时。
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
参见