Bagikan melalui


Popup Konteks

Popup Konteks adalah kontrol utama dalam Tampilan ContextPopup dari kerangka kerja Pita Windows. Ini adalah sistem menu konteks kaya yang hanya diekspos oleh kerangka kerja sebagai ekstensi untuk implementasi Pita—kerangka kerja tidak mengekspos Popup Konteks sebagai kontrol independen.

Komponen Popup Konteks

Popup Konteks adalah kontainer logis untuk Menu Konteks dan sub-kontrol Mini-Toolbar yang diekspos melalui elemen markup ContextMenu dan MiniToolbar , masing-masing:

Setiap sub-kontrol dapat muncul paling banyak sekali dalam Popup Konteks.

Cuplikan layar berikut mengilustrasikan Popup Konteks dan subkontrol konstituennya.

cuplikan layar dengan callout memperlihatkan komponen ui kontekstual pita.

Popup Konteks murni konseptual dan tidak mengekspos fungsionalitas UI itu sendiri, seperti posisi atau ukuran.

Catatan

Popup Konteks biasanya ditampilkan dengan mengklik kanan mouse (atau melalui pintasan keyboard SHIFT+F10) pada objek yang menarik. Namun, langkah-langkah yang diperlukan untuk menampilkan Popup Konteks ditentukan oleh aplikasi.

 

Menerapkan Popup Konteks

Dengan cara yang sama dengan kontrol kerangka kerja Windows Ribbon lainnya, Popup Konteks diimplementasikan melalui komponen markup yang menentukan detail presentasinya dan komponen kode yang mengatur fungsionalitasnya.

Tabel berikut mencantumkan kontrol yang didukung oleh setiap sub-kontrol Popup Konteks.

Kontrol Mini-Toolbar Menu Konteks
Tombol x x
Kotak Centang x x
Kotak Kombo x
Tombol Drop-Down x x
Pemilih Warna Turun Bawah x x
Galeri Drop-Down x x
Kontrol Font x
Tombol Bantuan
Galeri Dalam Pita
Spinner
Tombol Pisahkan x x
Galeri Tombol Terpisah x x
Tombol Alih x x

 

Markup

Setiap sub-kontrol Popup Konteks harus dideklarasikan satu per satu dalam markup.

Mini-Toolbar

Saat menambahkan kontrol ke Toolbar Mini Popup Konteks, dua rekomendasi berikut harus dipertimbangkan:

  • Kontrol harus sangat dikenali dan menyediakan fungsionalitas yang jelas. Keakraban adalah kuncinya, karena label dan tipsalat tidak diekspos untuk kontrol Mini-Toolbar.
  • Setiap Perintah yang diekspos oleh kontrol harus disajikan di tempat lain di UI pita. Mini-Toolbar tidak mendukung navigasi keyboard.

Contoh berikut menunjukkan markup dasar untuk elemen MiniToolbar yang berisi tiga kontrol Tombol .

Catatan

Satu elemen MenuGroup ditentukan untuk setiap baris kontrol di Toolbar Mini.

 

<MiniToolbar Name="MiniToolbar">
  <MenuGroup>
    <Button CommandName="cmdButton1" />
    <Button CommandName="cmdButton2" />
    <Button CommandName="cmdButton3" />
  </MenuGroup>
</MiniToolbar>

Menu Konteks

Contoh berikut menunjukkan markup dasar untuk elemen ContextMenu yang berisi tiga kontrol Tombol .

Catatan

Setiap set kontrol dalam elemen MenuGroup dipisahkan oleh bilah horizontal di Menu Konteks.

 

<ContextMenu Name="ContextMenu">
  <MenuGroup>
    <Button CommandName="cmdCut" />
    <Button CommandName="cmdCopy" />
    <Button CommandName="cmdPaste" />
  </MenuGroup>
</ContextMenu>

Meskipun Popup Konteks dapat berisi paling banyak satu dari setiap sub-kontrol, beberapa deklarasi elemen ContextMenu dan MiniToolbar dalam markup Pita valid. Ini memungkinkan aplikasi untuk mendukung berbagai kombinasi Menu Konteks dan kontrol Mini-Toolbar, berdasarkan kriteria yang ditentukan oleh aplikasi, seperti konteks ruang kerja.

Untuk informasi selengkapnya, lihat elemen ContextMap .

Contoh berikut menunjukkan markup dasar untuk elemen ContextPopup .

<ContextPopup>
  <ContextPopup.MiniToolbars>
    <MiniToolbar Name="MiniToolbar">
      <MenuGroup>
        <Button CommandName="cmdButton1" />
        <Button CommandName="cmdButton2" />
        <Button CommandName="cmdButton3" />
      </MenuGroup>
    </MiniToolbar>
  </ContextPopup.MiniToolbars>
  <ContextPopup.ContextMenus>
    <ContextMenu Name="ContextMenu">
      <MenuGroup>
        <Button CommandName="cmdCut" />
        <Button CommandName="cmdCopy" />
        <Button CommandName="cmdPaste" />
      </MenuGroup>
    </ContextMenu>
  </ContextPopup.ContextMenus>
  <ContextPopup.ContextMaps>
    <ContextMap CommandName="cmdContextMap" ContextMenu="ContextMenu" MiniToolbar="MiniToolbar"/>
  </ContextPopup.ContextMaps>
</ContextPopup>

Kode

Untuk memanggil Popup Konteks, metode IUIContextualUI::ShowAtLocation dipanggil saat jendela tingkat atas aplikasi Pita menerima pemberitahuan WM_CONTEXTMENU.

Contoh ini menunjukkan cara menangani pemberitahuan WM_CONTEXTMENU dalam metode WndProc() dari aplikasi Pita.

case WM_CONTEXTMENU:
  POINT pt;
  POINTSTOPOINT(pt, lParam);

  // ShowContextualUI method defined by the application.
  ShowContextualUI (pt, hWnd);
  break;

Contoh berikut menunjukkan bagaimana aplikasi Pita bisa memperlihatkan Popup Konteks di lokasi layar tertentu menggunakan metode IUIContextualUI::ShowAtLocation .

GetCurrentContext() memiliki nilai cmdContextMap seperti yang didefinisikan dalam contoh markup sebelumnya.

g_pApplication adalah referensi ke antarmuka IUIFramework .

HRESULT ShowContextualUI(POINT& ptLocation, HWND hWnd)
{
  GetDisplayLocation(ptLocation, hWnd);

  HRESULT hr = E_FAIL;

  IUIContextualUI* pContextualUI = NULL;
 
  if (SUCCEEDED(g_pFramework->GetView(
                                g_pApplication->GetCurrentContext(), 
                                IID_PPV_ARGS(&pContextualUI))))
  {
    hr = pContextualUI->ShowAtLocation(ptLocation.x, ptLocation.y);
    pContextualUI->Release();
  }

  return hr;
}

Referensi ke IUIContextualUI dapat dirilis sebelum Popup Konteks ditutup, seperti yang ditunjukkan pada contoh sebelumnya. Namun, referensi harus dirilis pada titik tertentu untuk menghindari kebocoran memori.

Perhatian

Mini-Toolbar memiliki efek pudar bawaan yang didasarkan pada kedekatan penunjuk mouse. Untuk alasan ini, disarankan agar Mini-Toolbar ditampilkan sedekat mungkin dengan penunjuk mouse. Jika tidak, karena mekanisme tampilan yang bertentangan, Mini-Toolbar mungkin tidak merender seperti yang diharapkan.

 

Properti Popup Konteks

Tidak ada kunci properti yang terkait dengan kontrol Popup Konteks.

Pustaka Kontrol Windows Ribbon Framework

Sampel ContextPopup