Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Ez a témakör bemutatja, hogyan hozhat létre listanézet-vezérlőt. Listanézet-vezérlő létrehozásához használja a CreateWindow vagy CreateWindowEx függvényt, és adja meg a WC_LISTVIEW ablakosztályt.
Párbeszédpanelsablon részeként listanézet-vezérlő is létrehozható. Osztálynévként WC_LISTVIEW kell megadnia. Ha listanézet-vezérlőt szeretne használni egy párbeszédpanelsablon részeként, a párbeszédpanel egy példányának létrehozása előtt meg kell hívnia InitCommonControls vagy InitCommonControlsEx.
Amit tudnia kell
Technológiák
Előfeltételek
- C/C++
- Windows felhasználói felület programozása
Előírás
Először regisztrálja az ablakosztályt az InitCommonControlsEx függvény meghívásával, és adja meg a ICC_LISTVIEW_CLASSES bitet a hozzá tartozó INITCOMMONCONTROLSEX struktúrában. Ez biztosítja, hogy a közös vezérlők DLL-je be legyen töltve. Ezután használja a CreateWindow vagy CreateWindowEx függvényt, és adja meg a WC_LISTVIEW ablakosztályt.
Jegyzet
A listanézet vezérlőelem alapértelmezés szerint az ikoncím betűtípusát használja. Egy WM_SETFONT üzenet használatával azonban megadhatja a szöveghez használandó betűtípust. Az elemek beszúrása előtt el kell küldenie ezt az üzenetet. A vezérlő a WM_SETFONT üzenetben megadott betűtípus dimenzióit használja a térköz és az elrendezés meghatározásához. Az egyes elemek betűtípusát testre is szabhatja. További információ: Egyéni rajz.
A következő C++-kód példa egy listanézet-vezérlőt hoz létre jelentés nézetben.
// CreateListView: Creates a list-view control in report view.
// Returns the handle to the new control
// TO DO: The calling procedure should determine whether the handle is NULL, in case
// of an error in creation.
//
// HINST hInst: The global handle to the application instance.
// HWND hWndParent: The handle to the control's parent window.
//
HWND CreateListView (HWND hwndParent)
{
INITCOMMONCONTROLSEX icex; // Structure for control initialization.
icex.dwICC = ICC_LISTVIEW_CLASSES;
InitCommonControlsEx(&icex);
RECT rcClient; // The parent window's client area.
GetClientRect (hwndParent, &rcClient);
// Create the list-view window in report view with label editing enabled.
HWND hWndListView = CreateWindow(WC_LISTVIEW,
L"",
WS_CHILD | LVS_REPORT | LVS_EDITLABELS,
0, 0,
rcClient.right - rcClient.left,
rcClient.bottom - rcClient.top,
hwndParent,
(HMENU)IDM_CODE_SAMPLES,
g_hInst,
NULL);
return (hWndListView);
}
A listanézetes alkalmazások általában lehetővé teszik a felhasználó számára, hogy egyik nézetről a másikra váltson.
A következő C++ kód példája megváltoztatja a listanézet ablakstílusát, ami viszont megváltoztatja a nézetet.
// SetView: Sets a list-view's window style to change the view.
// hWndListView: A handle to the list-view control.
// dwView: A value specifying the new view style.
//
VOID SetView(HWND hWndListView, DWORD dwView)
{
// Retrieve the current window style.
DWORD dwStyle = GetWindowLong(hWndListView, GWL_STYLE);
// Set the window style only if the view bits changed.
if ((dwStyle & LVS_TYPEMASK) != dwView)
{
SetWindowLong(hWndListView,
GWL_STYLE,
(dwStyle & ~LVS_TYPEMASK) | dwView);
} // Logical OR'ing of dwView with the result of
} // a bitwise AND between dwStyle and
// the Unary complement of LVS_TYPEMASK.
Kapcsolódó témakörök