Zusatzdaten einer Message ermitteln?
-
Jetzt hab ich auch mal wieder Fragen:
-
Von den Window-Messages werden nur wParam und lParam an die WndProc übergeben. Die Messages enthalten aber noch andere Daten wie Timer und Curserposition. Wie kann man an diese Daten gelangen? Möglicherweise über die Adresse der Message-Struktur, aber wie ermittle ich die?
-
Kann man herausfinde, von welchem Fenster eine Botschaft ausgelöst wurde? z. B. wenn mehrere Child-Fenster die gleiche WndProc haben und per SendMessage eine Nachricht an das Hauptfenster schicken, soll das Hauptfenster unterscheiden, welches Child die Nachricht gesendet hat.
-
-
also zu eins hab ich jetzt keine antwort...
zu zwei:
ja kann man, kommt natürlich immer darauf an was du zu dem hauptfenster schicken willst und wie die (wParam) & (lParam) werte der Message genutzt werden.
im falle von ComboBox,ListBox
*N_SELCHANGE
id = (int) LOWORD(wParam);
hwnd = (HWND) lParam;im falle von einer ListView
LVN_ITEMCHANGED
pnmv = (LPNMLISTVIEW) lParam;
pnmv->hdr->hwndFrom
pnmv->hdr->idFromim falle einer TabCtrl
TCN_SELCHANGE
lpnmhdr = (LPNMHDR) lParam;
lpnmhdr->hwndFrom;
lpnmhdr->idFrom;wenn du selbst erstellte Message versenden willst, hast du es ja noch leichter.
kuck dir mal die Makros MAKEWPARAM(l,h) und MAKELPARAM(l,h) anSendMessage(hWndParent,WM_MYMESSAGE,MAKEWPARAM((HWND)hWndChild,(UINT)uiIDFromChild),MAKELPARAM((int)iCursel,0));Hauptnachrichtenschleife Parent:
case WM_MYMESSAGE: switch(HIWORD(wParam)) { case IDC_FROMCHILD: { int iCursel = (int)LOWORD(lParam); } break; } break;bzw. kannst du auch an jede beliebige Windows Nachricht etwas schicken.
SendMessage(hWndParent,WM_COMMAND,MAKEWPARAM((UINT)uiIDFromChild),(HWND)hWndChild),MAKELPARAM((int)iCursel,0));case WM_COMMAND: switch(LOWORD(wParam)) { case IDC_FROMCHILD: { HWND hWndChild = (HWND)HIWORD(wParam) int iCursel = (int)LOWORD(lParam); } break; } break;
-
Beim Abholen einer Message hast Du nur MSG, WPARAM und LPARAM. Was dort nicht drinsteht, bleibt vorborgen. daddeldu.
-
GetMessagePos, GetMessageTime
-
Danke für die vielen Antworten. Jetzt noch ausprobieren, was für meinen Bedarf paßt. Vielen Dank erstmal.
Ich weiß ja, hier bekommt man immer Hilfe. 