Bagikan melalui


Cara Menggunakan Area Kerja Tampilan Daftar

Topik ini menunjukkan cara bekerja dengan area kerja tampilan daftar. Area kerja adalah area virtual persegi panjang yang dapat digunakan untuk mengatur item dalam kontrol tampilan daftar. Area kerja bukan jendela dan tidak dapat memiliki batas yang terlihat. Secara default, kontrol tampilan daftar tidak memiliki area kerja. Dengan membuat area kerja, Anda dapat membuat batas kosong di sebelah kiri, atas, atau kanan item atau menyebabkan bilah gulir horizontal ditampilkan ketika biasanya tidak akan ada.

Apa yang perlu Anda ketahui

Teknologi

Prasyarat

  • C/C++
  • Pemrograman Antarmuka Pengguna Windows

Petunjuk

Membuat Area Kerja

Contoh kode C++ berikut menunjukkan cara membuat area kerja dengan batas kosong 25 piksel di sisi atas, kiri, dan kanannya.

void SetWorkAreas1(HWND hWndListView)
{
    #define  EMPTY_SPACE   25
    
    RECT  rcClient;
    
    GetClientRect(hWndListView, &rcClient);
    
    rcClient.left  +=  EMPTY_SPACE;
    rcClient.top   +=  EMPTY_SPACE;
    rcClient.right -= (EMPTY_SPACE * 2);
    
    SendMessage(hWndListView, LVM_SETWORKAREAS, 1, (LPARAM)&rcClient);

    return;
}

Membuat Beberapa Area Kerja

Contoh kode C++ berikut menunjukkan cara membuat dua area kerja dalam kontrol. Setiap area kerja menggunakan sekitar setengah dari area klien, dan dikelilingi oleh batas kosong 25 piksel.

void SetWorkAreas2(HWND hWndListView)
{
    #define  EMPTY_SPACE   25
    
    RECT  rcClient;
    RECT  rcWork[2];
    
    GetClientRect(hWndListView, &rcClient);
    
    rcWork[0].left   = rcClient.left +      EMPTY_SPACE;
    rcWork[0].top    = rcClient.top +       EMPTY_SPACE;
    rcWork[0].right  = (rcClient.right/2) - EMPTY_SPACE;
    rcWork[0].bottom = rcClient.bottom;
    
    rcWork[1].left   = (rcClient.right/2) + EMPTY_SPACE;
    rcWork[1].top    = rcClient.top +       EMPTY_SPACE;
    rcWork[1].right  = rcClient.right -     EMPTY_SPACE;
    rcWork[1].bottom = rcClient.bottom;
    
    SendMessage(hWndListView, LVM_SETWORKAREAS, 2, (LPARAM)rcWork);

    return;
}

Tentukan Area Kerja tempat Item Berada

Salah satu cara untuk menentukan area kerja mana yang dimiliki item adalah dengan melakukan hal berikut:

  • Ambil daftar koordinat semua area kerja dalam kontrol tampilan daftar.
  • Ambil koordinat item.
  • Tentukan apakah koordinat item berada dalam koordinat salah satu area kerja.

Fungsi yang ditentukan aplikasi dalam contoh kode C++ berikut mengembalikan indeks area kerja tempat item berada. Jika fungsi gagal, fungsi akan mengembalikan –1. Jika fungsi berhasil, tetapi item tidak berada di dalam salah satu area kerja, fungsi mengembalikan 0, karena semua item yang tidak berada di dalam area kerja secara otomatis menjadi anggota area kerja nol.

int GetItemWorkingArea(HWND hWndListView, int iItem)
{
    UINT     uWorkAreas = 0;
    int      nReturn = -1;
    LPRECT   pRects;
    POINT    pt;
    
    if(!ListView_GetItemPosition(hWndListView, iItem, &pt))
        return nReturn;
    
    ListView_GetNumberOfWorkAreas(hWndListView, &uWorkAreas);
    
    if(uWorkAreas)
    {
        pRects = (LPRECT)GlobalAlloc(GPTR, sizeof(RECT) * uWorkAreas);
        
        if(pRects)
        {
            UINT  i;
            nReturn = 0;
    
            ListView_GetWorkAreas(hWndListView, uWorkAreas, pRects);
          
            for(i = 0; i < uWorkAreas; i++)
            {
                if(PtInRect((pRects + i), pt))
                {
                    nReturn = i;
                    break;
                }
            }
            GlobalFree((HGLOBAL)pRects);
        }
    }
    return nReturn;
}

Referensi Kontrol Tampilan Daftar

Tentang Kontrol Tampilan Daftar

Menggunakan Kontrol Tampilan Daftar