IInputPanelInvocationConfiguration::RequireTouchInEditControl 方法 (inputpanelconfiguration.h)
在觸控式鍵盤叫用之前,需要在編輯欄位中點選明確的使用者。
Syntax
HRESULT RequireTouchInEditControl();
傳回值
RequireTouchInEditControl方法一律會傳回S_OK。
備註
呼叫 RequireTouchInEditControl 方法時,所有未來的焦點變更都需要在觸控式鍵盤叫用之前,先在編輯欄位中點選明確的使用者。 您可以多次呼叫 RequireTouchInEditControl 方法,但無法復原設定。
此設定適用于在呼叫它之進程中執行的視窗的任何焦點事件。 RequireTouchInEditControl方法不會影響另一個具有擁有權鏈結至目前呼叫RequireTouchInEditControl之進程的擁有視窗。
RequireTouchInEditControl方法一律會傳回S_OK。 如果使用這個 API, IsUIBusy 屬性就不會有任何作用。 這兩個互動模型基本上互斥。
下列程式碼示範如何呼叫 RequireTouchInEditControl 方法。
#include <inputpanelconfiguration.h>
#include <inputpanelconfiguration_i.c>
IInputPanelInvocationConfiguration *pInputPanelInvocationConfiguration;
CoCreateInstance(CLSID_InputPanelConfiguration, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pInputPanelInvocationConfiguration));
pInputPanelInvocationConfiguration->RequireTouchInEditControl();
注意 在應用程式完成繪圖 UI 之前呼叫 Release 可能會導致未定義的行為。 如果觸控式鍵盤尚未執行,呼叫 Release 可能會導致卸載 tiptsf.dll,因為沒有 dll 的參考。 如果發生這種情況, RequireTouchInEditControl 方法所設定的狀態會遺失。
當您將 IsUIBusy 設定為 True時,觸控式鍵盤不會根據應用程式內的焦點變更來變更視覺狀態。 它仍然可以根據覆寫使用者動作來變更視覺狀態,例如使用實體鍵盤或手動關閉。
當您將 IsUIBusy 設定為 False 時,觸控式鍵盤會繼續其預設行為,並同步查詢具有焦點的控制項。
下列程式碼示範如何註冊 IsUIBusy 自訂 UI 自動化屬性。
/* 03391bea-6681-474b-955c-60f664397ac6 */
DEFINE_GUID(
GUID_UIBusy,
0x03391bea, 0x6681, 0x474b, 0x95, 0x5c, 0x60, 0xf6, 0x64, 0x39, 0x7a, 0xc6);
UIAutomationPropertyInfo customPropertyInfo =
{
GUID_UIBusy,
L"IsUIBusy",
UIAutomationType_Bool
};
CComPtr<IUIAutomationRegistrar> spRegistrar;
hr = spRegistrar.CoCreateInstance(
CLSID_CUIAutomationRegistrar,
nullptr,
CLSCTX_INPROC_SERVER);
if (SUCCEEDED(hr))
{
PATTERNID customPropertyId;
hr = spRegistrar->RegisterProperty(&customPropertyInfo, &customPropertyId);
}
需求
最低支援的用戶端 | Windows 8 |
最低支援的伺服器 | Windows Server 2012 |
目標平台 | Windows |
標頭 | inputpanelconfiguration.h |