Megosztás a következőn keresztül:


Üzenetek vezérlése

Ez a szakasz információkat tartalmaz arról, hogyan használják a Windows-üzenetek a vezérlőkkel való kommunikációt.

Az alábbi témaköröket tárgyaljuk.

Üzenetek a közös vezérlőkhöz

Mivel a gyakori vezérlők windowsosak, az alkalmazások gyakran használt Microsoft Win32-üzenetekkel kommunikálhatnak velük, például WM_GETFONT vagy WM_SETTEXT. Emellett az egyes gyakori vezérlők ablakosztálya vezérlőspecifikus üzeneteket is támogat. Az alkalmazások általában SendMessage vagy SendDlgItemMessage használatával továbbítják az üzeneteket a vezérlőnek (gyakran a visszatérési értékben kapnak információt).

Egyes gyakori vezérlők olyan makrókészlettel is rendelkeznek, amelyeket az alkalmazások használhatnak SendMessagehelyett. A makrók általában könnyebben használhatók, mint a függvények. Az alábbi példakód lekéri a kijelölt fanézetelem szövegét, először a nyers üzeneteket, a másodikat pedig a megfelelő makrók használatával. Tegyük fel, hogy hwnd a vezérlőablak fogópontja.

BOOL fSuccess;
WCHAR itemText[99];
TVITEM tvItem = { 0 };
tvItem.mask = TVIF_TEXT;
tvItem.cchTextMax = ARRAYSIZE(itemText);
tvItem.pszText = itemText;

// This...
tvItem.hItem = (HTREEITEM)SendMessage(hwnd, TVM_GETNEXTITEM, TVGN_CARET, NULL);
fSuccess = SendMessage(hwnd, TVM_GETITEM, 0, (LPARAM)&tvItem);

// ... is equivalent to this.
tvItem.hItem = TreeView_GetSelection(hwnd);
fSuccess = TreeView_GetItem(hwnd, &tvItem);

A rendszer színbeállításainak módosításakor a Windows egy WM_SYSCOLORCHANGE üzenetet küld az összes felső szintű ablaknak. A felső szintű ablaknak továbbítania kell a WM_SYSCOLORCHANGE üzenetet a közös vezérlőinek; ellenkező esetben a vezérlők nem kapnak értesítést a színváltozásról. Az üzenet továbbítása biztosítja, hogy a közös vezérlők által használt színek összhangban legyenek a többi felhasználói felületi objektum által használt színekkel. Egy eszköztár vezérlőelem például a "térhatású objektumok" színnel rajzolja meg a gombjait. Ha a felhasználó módosítja a térhatású objektum színét, de a WM_SYSCOLORCHANGE üzenet nem kerül az eszköztárra, az eszköztár gombjai eredeti színükben maradnak (vagy akár a régi és az új színek kombinációjára is változnak), míg a rendszer többi gombjának színe megváltozik.

Értesítések a vezérlőkről

A vezérlők olyan gyermekablakok, amelyek értesítési üzeneteket küldenek a szülőablakba, amikor a vezérlőben olyan események történnek, amelyeket általában a felhasználó bemenete vált ki. Az alkalmazás ezekre az értesítési üzenetekre támaszkodva határozza meg, hogy a felhasználó milyen műveletet hajt végre. A WM_HSCROLL és WM_VSCROLL üzeneteket használó sávok kivételével a gyakori vezérlők WM_COMMAND vagy WM_NOTIFY üzenetekként küldenek értesítéseket az értesítés referenciatémakörének megfelelően. A régebbi értesítések (amelyek már régóta vannak az API-ban) általában WM_COMMANDhasználnak.

A WM_NOTIFYlParam paramétere vagy egy NMHDR szerkezet címe, vagy egy nagyobb struktúra címe, amely első tagként NMHDR tartalmaz. A struktúra tartalmazza az értesítési kódot, és azonosítja az értesítési üzenetet küldő közös vezérlőt. A fennmaradó struktúratagok jelentése – ha vannak ilyenek – az értesítési kódtól függően változik.

A közös vezérlők minden típusa rendelkezik megfelelő értesítési kódokkal. A közös vezérlőtár olyan értesítési kódokat is tartalmaz, amelyeket több közös vezérlőtípus is elküldhet. Tekintse meg az érdeklődésre számot tartó dokumentációt annak meghatározásához, hogy melyik értesítési kódokat és milyen formátumban küldi el.

A WM_NOTIFY üzenetek kezelését bemutató kód például az üzenet referenciatémakörében található.

általános vezérlési referencia