## Tcl9.0.3/Tk9.0.3 Documentation > Tcl C API > DoOneEvent

### Tcl/Tk Applications | Tcl Commands | Tk Commands | [incr Tcl] Package Commands | SQLite3 Package Commands | TDBC Package Commands | tdbc::mysql Package Commands | tdbc::odbc Package Commands | tdbc::postgres Package Commands | tdbc::sqlite3 Package Commands | Thread Package Commands | Tcl C API | Tk C API | [incr Tcl] Package C API | TDBC Package C API

  NAME
    Tcl_DoOneEvent — 行事を待ち､行事処理機能を起動する　 wait for events and invoke event handlers
  SYNOPSIS
    #include <tcl.h>
    int
    Tcl_DoOneEvent(flags)
  引数 ARGUMENTS
    int flags (入力in)
  DESCRIPTION
    TCL_WINDOW_EVENTS
    TCL_FILE_EVENTS
    TCL_TIMER_EVENTS
    TCL_IDLE_EVENTS
    TCL_ALL_EVENTS
    TCL_DONT_WAIT
  KEYWORDS

### NAME

Tcl_DoOneEvent — 行事を待ち､行事処理機能を起動する　 wait for events and invoke event handlers

### SYNOPSIS

#include <tcl.h>
int
Tcl_DoOneEvent(flags)

### 引数 ARGUMENTS

int flags (入力in)
  これらの假引数は通常は零｡次の旗印ビットどれかの組合わせの論理和でも好い:　　　　　 This parameter is normally zero. It may be an OR-ed combination of any of the following flag bits: TCL_WINDOW_EVENTS, TCL_FILE_EVENTS, TCL_TIMER_EVENTS, TCL_IDLE_EVENTS, TCL_ALL_EVENTS, or TCL_DONT_WAIT.

### DESCRIPTION

この手続函数は Tcl の行事繰返しへの入力位置である; それは行事を待受け､Tk_CreateEventHandler や Tcl_CreateFileHandler や Tcl_CreateTimerHandler や Tcl_DoWhenIdle の様な手続函数によって作られた行事処理機能を派遣する責務がある｡Tcl_DoOneEvent は Tcl の行事待ち行列上に既に行事があるかを検査する; もし､そうなら､最初の(最古の)行事の為に処理機能を呼び､待ち行列から取除いて戻る｡処理される様に準備できた行事がない場合､ Tcl_DoOneEvent は､可能な全ての原資から新しい行事を検査する｡もし何か見付ると､その全部を Tcl の行事待ち行列上に置き､待ち行列の最初の行事のために処理機能を呼び､戻る｡行事が見付らない場合､ Tcl_DoOneEvent は Tcl_DoWhenIdle の呼戻しを検査する; もし何か見付るとそれを全て起動し戻る｡最後に､行事も､待機中の呼戻しも見付らないと､ Tcl_DoOneEvent は行事が起るまで休眠する; 次に何か新しい行事を Tcl 待ち行列に加え､最初の行事の為に処理機能を起動する､そして戻る｡通常の返り値は何かの行事が処理されていることを意味する 1 である(その他の場合は下を参照のこと)｡ This procedure is the entry point to Tcl's event loop; it is responsible for waiting for events and dispatching event handlers created with procedures such as Tk_CreateEventHandler, Tcl_CreateFileHandler, Tcl_CreateTimerHandler, and Tcl_DoWhenIdle. Tcl_DoOneEvent checks to see if events are already present on the Tcl event queue; if so, it calls the handler(s) for the first (oldest) event, removes it from the queue, and returns. If there are no events ready to be handled, then Tcl_DoOneEvent checks for new events from all possible sources. If any are found, it puts all of them on Tcl's event queue, calls handlers for the first event on the queue, and returns. If no events are found, Tcl_DoOneEvent checks for Tcl_DoWhenIdle callbacks; if any are found, it invokes all of them and returns. Finally, if no events or idle callbacks have been found, then Tcl_DoOneEvent sleeps until an event occurs; then it adds any new events to the Tcl event queue, calls handlers for the first event, and returns. The normal return value is 1 to signify that some event was processed (see below for other alternatives).

もし､ Tcl_DoOneEvent への flags 引数が非零の場合､ Tcl_DoOneEvent により処理されることになる行事の種類を制限する｡ flags は次のどれかのビットの､論理和の組合せである: If the flags argument to Tcl_DoOneEvent is non-zero, it restricts the kinds of events that will be processed by Tcl_DoOneEvent. Flags may be an OR-ed combination of any of the following bits:

TCL_WINDOW_EVENTS
  窓系行事の処理｡ 　　　 Process window system events.

TCL_FILE_EVENTS
  ファイル行事の処理｡ 　　　 Process file events.

TCL_TIMER_EVENTS
  時刻期限処理｡ 　　　 Process timer events.

TCL_IDLE_EVENTS
  待機呼戻しの処理｡ 　　　 Process idle callbacks.

TCL_ALL_EVENTS
  全ての種類の行事の処理: 上の旗印全てを論理和で結合すること､若しくは､どれも指定しないことと､等価｡ Process all kinds of events: equivalent to OR-ing together all of the above flags or specifying none of them.

TCL_DONT_WAIT
  休眠しない: 呼ばれた時に準備が完了している行事のみ処理する｡ 　　　 Do not sleep: process only events that are ready at the time of the call.

もし TCL_WINDOW_EVENTS か TCL_FILE_EVENTS か TCL_TIMER_EVENTS か TCL_IDLE_EVENTS か､のどれかの旗印が設定されている場合､その為の旗印が設定されている行事のみが考慮される｡これ等旗印のどれも設定しないのは 値 TCL_ALL_EVENTS に等価であり､それは全ての型が処理されることを惹き起こす｡もし応用譜が Tcl_CreateEventSource によって更なる行事原資を定義していると､その様な行事原資に依存して更なる flag 値が有効になる｡ 　　　 If any of the flags TCL_WINDOW_EVENTS, TCL_FILE_EVENTS, TCL_TIMER_EVENTS, or TCL_IDLE_EVENTS is set, then the only events that will be considered are those for which flags are set. Setting none of these flags is equivalent to the value TCL_ALL_EVENTS, which causes all event types to be processed. If an application has defined additional event sources with Tcl_CreateEventSource, then additional flag values may also be valid, depending on those event sources.

TCL_DONT_WAIT 旗印は Tcl_DoOneEvent を惹き起こし､処理を休眠させない: それは行事を検査するが､もし何もない場合､何もしなかったことを意味する返り値 0 を伴ってすぐさま戻る｡Tcl_DoOneEvent も代替手段が永久に遮断している場合にのみ(之は起りうる､譬えばもし flags が TCL_IDLE_EVENTS で､且つ､待機中の呼戻し Tcl_DoWhenIdle がない､又は行事処理機能がないか時刻期限初期機能が実在する　)､何もせずに 0 を返す｡ 　　　 The TCL_DONT_WAIT flag causes Tcl_DoOneEvent not to put the process to sleep: it will check for events but if none are found then it returns immediately with a return value of 0 to indicate that no work was done. Tcl_DoOneEvent will also return 0 without doing anything if the only alternative is to block forever (this can happen, for example, if flags is TCL_IDLE_EVENTS and there are no Tcl_DoWhenIdle callbacks pending, or if no event handlers or timer handlers exist).

Tcl_DoOneEvent は再帰的に起動され得る｡譬えば､Tcl_DoOneEvent によって呼ばれた初期機能から再帰的に Tcl_DoOneEvent を起動することが可能である｡この操作の種類は､譬えば､通知用対話箱が出現し､且つ応用譜は使用者が何か他の事をする前に対話箱内の釦を軽叩することを望む場合の様に､ある種の排他的状況で便利である｡ Tcl_DoOneEvent may be invoked recursively. For example, it is possible to invoke Tcl_DoOneEvent recursively from a handler called by Tcl_DoOneEvent. This sort of operation is useful in some modal situations, such as when a notification dialog has been popped up and an application wishes to wait for the user to click a button in the dialog before doing anything else.

### KEYWORDS

callback, event, handler, idle, timer
Copyright © 1990-1992 The Regents of the University of California.
Copyright © 1994-1996 Sun Microsystems, Inc.