需要以下步驟,才能發出邏輯單元應用程式命令(LUA)。 在此範例中,發出的動詞 是RUI_INIT。
發出 LUA 動詞命令
建立動詞控件區塊 (VCB) 結構的變數。 例如:
#include <winlua.h> . . struct LUA_VERB_RECORD rui_init;LUA_VERB_RECORD 結構會在 WINLUA.H 頭檔中宣告。
清除 (設定為零) VCB 內的變數:
memset( &rui_init, 0, sizeof( rui_init) );LUA 要求所有保留參數,以及發出動詞時不需要的參數,必須設定為零。 若要這樣做,最簡單的方式是先將整個 VCB 設定為零,再設定這個特定動詞所需的參數。
將值指派給 VCB 參數,以提供資訊給 LUA:
rui_init.common.lua_verb = LUA_VERB_RUI; rui_init.common.lua_verb_length = sizeof(struct LUA_COMMON); rui_init.common.lua_opcode = LUA_OPCODE_RUI_INIT; memcpy (rui_init.common.lua_luname, "THISLU ", 8);LUA_VERB_RUI和LUA_OPCODE_RUI_INIT的值都是符號常數。 這些常數定義於 Host Integration Server SDK 中的 WINLUA.H 頭檔。 若要確保不同系統之間的可移植性,請使用符號常數,而不是整數值。
調用 LUA。 唯一的參數是一個指向包含所需動詞之 VCB 的結構體位址的指標。
RUI( &rui_init );檢查異步旗標 (rui_init.common.lua_flag2.async),以判斷動詞是否以異步方式完成。 如果使用事件,且動詞命令已以異步方式完成,請等候事件完成。
if (rui_init.common.lua_flag2.async) { /* verb will complete asynchronously so continue with other processing */ /* then wait */ WaitForSingleObject (...) }請勿檢查傳回碼。 當您檢查它時,它可能已從LUA_IN_PROGRESS變更為LUA_OK。
檢查 LUA 傳回的變數。
if( rui_init.common.lua_prim_rc == LUA_OK ) { /* Init OK */ . . } else { /* Do error routine */ . . }