InputPointerSource Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mewakili objek yang terdaftar untuk melaporkan input pointer dan menyediakan kursor penunjuk dan penanganan peristiwa input.
public ref class InputPointerSource sealed : InputObject
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.Foundation.WindowsAppSDKContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class InputPointerSource final : InputObject
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.Foundation.WindowsAppSDKContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class InputPointerSource : InputObject
Public NotInheritable Class InputPointerSource
Inherits InputObject
- Warisan
- Atribut
Contoh
Contoh berikut menunjukkan cara mengonfigurasi SwapChainPanel dengan CreateCoreIndependentInputSource dan menerima pena latensi rendah dan menyentuh input pada utas latar belakang melalui DispatcherQueueController.
void SetupBackgroundPenInput(SwapChainPanel swapChainPanel)
{
m_dispatcherQueueController = DispatcherQueueController::CreateOnDedicatedThread();
m_dispatcherQueueController.DispatcherQueue().TryEnqueue([this] {
InputPointerSourceDeviceKinds deviceKind = (InputPointerSourceDeviceKinds)(
Microsoft::UI::Input::InputPointerSourceDeviceKinds::Touch |
Microsoft::UI::Input::InputPointerSourceDeviceKinds::Pen);
m_coreInput = swapChainPanel().CreateCoreIndependentInputSource(deviceKind);
m_coreInput.PointerMoved({ this, &DirectXPage::SwapChainPanel_OnPointerMoved });
});
}
void DirectXPage::SwapChainPanel_OnPointerPressed(InputPointerSource const& sender, Microsoft::UI::Input::PointerEventArgs const& e)
{
// When the pointer is pressed begin tracking the pointer movement.
m_main->StartTracking();
}
Contoh ini menunjukkan cara mengonfigurasi gambar kursor tangan sistem untuk ditampilkan saat kursor mengarahkan kursor ke SwapChainPanel:
InputPointerSourceDeviceKinds deviceKind = (InputPointerSourceDeviceKinds)(
Microsoft::UI::Input::InputPointerSourceDeviceKinds::Touch |
Microsoft::UI::Input::InputPointerSourceDeviceKinds::Mouse |
Microsoft::UI::Input::InputPointerSourceDeviceKinds::Pen);
m_coreInput = swapChainPanel().CreateCoreIndependentInputSource(deviceKind);
m_coreInput.InputCursor = InputSystemCursor.Create(InputSystemCursorShape.Hand);
Keterangan
Ruang koordinat untuk peristiwa penunjuk berada di ruang koordinat yang sama dengan objek SwapChainPanel .
Urutan peristiwa
Kasus Normal
Peristiwa pointer InputPointerSource mengikuti urutan yang dijamin dalam keadaan normal:
- PointerEntered
- PointerPressed
- PointerMoved
- PointerReleased
- PointerExited
Di mana PointerMoved hanya akan dinaikkan jika penunjuk bergerak atau status tombol pada perubahan mouse. Semua peristiwa memiliki id pointer yang sama.
Penangkapan pointer hilang
PointerCaptureLost dinaikkan ketika penunjuk dalam kontak dirutekan ke target input yang berbeda oleh sistem input. Ketika PointerCaptureLost dinaikkan, yang hanya akan terjadi setelah PointerPressed diterima, tidak ada peristiwa tambahan yang akan dinaikkan untuk pointer tersebut. Secara khusus, PointerReleased dan PointerExited tidak akan dinaikkan, jadi Anda harus menangani PointerCaptureLost sebagai status akhir yang valid untuk pointer tertentu. Berikut adalah contoh urutan peristiwa yang valid yang mencakup kehilangan pengambilan pointer:
- PointerEntered
- PointerPressed
- PointerMoved
- PointerCaptureLost
Peristiwa yang dirutekan
Peristiwa yang dirutekan pointer dinaikkan ketika penunjuk dalam kontak dirutekan ke target input yang berbeda oleh sistem input. Tidak seperti PointerCaptureLost, peristiwa yang dirutekan memberikan kemungkinan penunjuk dalam kontak dirutekan kembali sebelum pointer dirilis.
Berikut ini memperlihatkan urutan peristiwa yang valid di mana penunjuk dalam kontak dirutekan ke target yang berbeda, dirutekan kembali ke InputPointerSource asli, lalu dirilis:
- PointerEntered
- PointerPressed
- PointerMoved
- PointerRoutedAway
- PointerRoutedTo
- PointerReleased
- PointerExited
Berikut adalah contoh urutan peristiwa yang valid di mana penunjuk dalam kontak dirutekan ke target yang berbeda lalu dirilis pada target lain:
- PointerEntered
- PointerPressed
- PointerMoved
- PointerRoutedAway
- PointerRoutedReleased
Catatan
Ketika PointerRoutedReleased dinaikkan, tidak ada peristiwa tambahan yang akan dinaikkan untuk pointer tersebut. Secara khusus, PointerReleased dan PointerExited tidak akan dinaikkan, jadi Anda harus menangani PointerRoutedReleased sebagai status akhir yang valid untuk pointer tertentu.
Dimungkinkan juga untuk menerima pointer kontak baru yang dirutekan dari target yang berbeda. Dalam hal ini, peristiwa PointerEntered dan PointerPressed dijamin akan mendahului PointerRoutedTo jika pointer belum dilihat oleh InputPointerSource saat ini. Berikut ini adalah contoh urutan peristiwa ini:
- PointerEntered
- PointerPressed
- PointerRoutedTo
- PointerMoved
- PointerReleased
- PointerExited
Properti
Cursor |
Mendapatkan atau mengatur kursor yang ditampilkan saat penunjuk mouse atau pena melebihi target input, Visual atau WindowId (HWND), dari InputPointerSource ini. |
DeviceKinds |
Mendapatkan jenis perangkat yang didukung oleh InputPointerSource ini. |
DispatcherQueue |
Mendapatkan DispatcherQueue untuk InputObject. (Diperoleh dari InputObject) |
Metode
GetForIsland(ContentIsland) |
InputPointerSource Mengambil objek untuk ContentIsland yang ditentukan. |
Acara
PointerCaptureLost |
Terjadi ketika pointer yang bersentuhan dengan InputPointerSource ini berpindah ke target input lain. |
PointerEntered |
Terjadi ketika penunjuk bergerak ke batas InputPointerSource ini. |
PointerExited |
Terjadi ketika penunjuk bergerak keluar dari batas InputPointerSource ini. |
PointerMoved |
Terjadi ketika penunjuk bergerak saat berada di dalam batas InputPointerSource ini. |
PointerPressed |
Terjadi ketika tombol mouse ditekan, atau jari atau pena memulai kontak dengan permukaan digitizer, sementara di dalam batas InputPointerSource ini. |
PointerReleased |
Terjadi ketika perangkat penunjuk yang sebelumnya memulai tindakan Tekan dilepaskan (tombol mouse dilepaskan, atau kontak sentuh atau pena diangkat dari permukaan digitizer), sementara di dalam batas InputPointerSource ini. |
PointerRoutedAway |
Terjadi ketika pointer dialihkan ke InputPointerSource lain (mungkin dalam proses terpisah). |
PointerRoutedReleased |
Terjadi ketika s pointer yang dirutekan ke InputPointerSource yang berbeda dirilis pada target input lainnya. |
PointerRoutedTo |
Terjadi ketika pointer dirutekan ke InputPointerSource ini dari target input yang berbeda. |
PointerWheelChanged |
Terjadi ketika roda mouse diputar (nilai delta roda berubah). |
Berlaku untuk
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk