共用方式為


在清單控制項中實作工作區域

根據預設,清單控制項排列所有項目標準格線模式。 不過,另一個方法支援,工作區域,將清單項目置於矩形群組。 如需實作工作區域清單控制項的影像,請參閱 < 使用清單檢視控制項在 Windows SDK。

注意事項注意事項

只有在清單控制項在圖示或小圖示模式時,工作區域為可見的。不過,所有目前工作區中維持這個值表示這個轉換成報表或 List 模式。

工作區域可用來顯示空白框線 (左邊,上方和 (或) 正確的項目),或是造成水平捲軸,會顯示通常並不是一個。 另一種常見的使用方式是建立項目可以移動或置放的多個工作區。 這個方法,您可以建立具有不同的意義在單一檢視的區域。 使用者可以將它們然後分類項目在不同的區域。 這個範例是具有讀取/寫入檔案的本機和唯讀檔案的另一個本機檔案系統的檢視。 如果檔案項目將唯讀欄位,它會自動變成唯讀。 將檔案從唯讀區域讀寫區域會讓檔案讀取/寫入。

CListCtrl 為清單控制項的建立和管理工作區域提供數個成員函式。 GetWorkAreasSetWorkAreas 擷取和設定 CRect 物件的陣列 (或 RECT 結構),儲存您的清單控制項的目前實作的工作區域。 此外, GetNumberOfWorkAreas 擷取工作區域目前數目您的清單控制項的 (根據預設,零)。

項目和工作區域

當工作區域建立時,在工作區域之間的項目相容的成員上。 同樣地,如果項目,將工作區域,它符合其移動作業範圍的成員。 如果項目不在任何工作區域之間,它會自動符合第一個 (索引 0) 工作區域的成員。 如果您要建立項目並將它放置在特定工作區域內,您將需要建立項目並將它與呼叫所需的工作區域移至 SetItemPosition。 下列第二個範例示範這項技術。

下列範例會在每個工作區域周圍實作四個工作區域 (rcWorkAreas),具有 10 個像素邊界的相等的大小,在清單控制項 (m_WorkAreaListCtrl)。

CSize size;
size = m_WorkAreaListCtrl.ApproximateViewRect(); 
size.cx += 100;
size.cy += 100;

CRect rcWorkAreas[4];
rcWorkAreas[0].SetRect(0, 0, (size.cx/2) - 5, (size.cy/2) - 5);
rcWorkAreas[1].SetRect((size.cx/2) + 5, 0, size.cx, (size.cy/2) - 5);
rcWorkAreas[2].SetRect(0, (size.cy/2) + 5, (size.cx/2) - 5, size.cy);
rcWorkAreas[3].SetRect((size.cx/2) + 5, (size.cy/2) + 5, size.cx, size.cy);

//set work areas
m_WorkAreaListCtrl.SetWorkAreas(4, rcWorkAreas);    

ApproximateViewRect 的呼叫是在本機進行取得要求的整個頁面區域的專案中的所有項目。 此估計值再分成四個區域並用一個 5 像素邊界。

下面的範例會將現有的清單項目指派給每個群組 (rcWorkAreas) 和重新整理控制項檢視中 (m_WorkAreaListCtrl) 完成這個動作。

// set insertion points for each work area
CPoint rgptWork[4];
for (int i = 0; i < 4; i++)
{
    rgptWork[i].x = rcWorkAreas[i].left + 10;
    rgptWork[i].y = rcWorkAreas[i].top + 10;
}
// now move all the items to the different quadrants 
for (int i = 0; i < 20; i++)
{
    m_WorkAreaListCtrl.SetItemPosition(i, rgptWork[i % 4]);
}

// force the control to rearrange the shuffled items
m_WorkAreaListCtrl.Arrange(LVA_DEFAULT);

請參閱

參考

使用 CListCtrl

概念

控制項 (MFC)