Nachrichten von einem Button? wurde er angeklickt?
-
guten abend,
ich erstelle meinen button:
Explore_Refresh.Create("Refresh",LVS_REPORT,CRect(183, 120, 250, 150),this,10);dann möchte in OnNotify die Message abfangen:
BOOL CBTro_ServerDlg::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) { LPNMLISTVIEW pnmv = (LPNMLISTVIEW) lParam; if(wParam==10) { ..... } }aber ich bekomme keine meldung :-|
was mache ich falsch?
-
Höö? Ein Button hat doch nicht den Style LVS_REPORT... wundert mich das der überhaupt angezeigt wird -.-
-
ja sry das kommt vom kopieren und einfügen

aber woran liegt es das ich keine Nachrichten bekomme?
-
Eintrag in Message Map gemacht?
-
Dumme Frage: Im Titel steht "wurde er angeklickt?", dadurch entnehme ich, dass er eine Nachricht will, ob der Button angeklickt wurde. Geht das nicht normalerweise über WM_COMMAND anstatt WM_NOTIFY?

Grüssli
-
hmm das kann man so oder so verstehen oder nicht?
WM_COMMAND ist doch die unmittelbare Nachricht die nach dem Drücken des Buttons ausgelöst wird.
Würde das nicht gehen wenn WM_COMMAND ausgelöst wird einfach ein Flag zu setzen das der Button angeklickt worden ist?
WM_NOTIFY(notify->melden, anzeigend, bekannt geben) meldet doch irgendwas. Ist dies überhaupt eine Nachricht die ausgelöst wird durch das Drücken eines Buttons?
-
Also mit einem Button und drücken kenne ich nur BN_CLICKED und BN_DOUBLECLICKED. Beide diese Nachrichten gehen über WM_COMMAND. Und man kann die beiden Nachrichten per ON_BN_CLICKED, bzw. ON_BN_DOUBLECLICKED in der Message Map abfangen. Das irgendwas über Notify geht, was mit dem drücken eines Buttons zu tun hat, wäre mir komplett neu. Aber ich lerne gerne neues ^^
Grüssli
-
MSDN Auszug: TN061: ON_NOTIFY and WM_NOTIFY Messages
typedef struct tagLV_KEYDOWN { NMHDR hdr; WORD wVKey; UINT flags; } LV_KEYDOWN; ... Notifications Common to All New Windows Controls Some notifications are common to all of the new Windows controls. These notifications pass a pointer to an NMHDR structure. Notification code Sent because NM_CLICK User clicked left mouse button in the control NM_DBLCLK User double-clicked left mouse button in the control NM_RCLICK User clicked right mouse button in the control NM_RDBLCLK User double-clicked right mouse button in the control NM_RETURN User pressed the ENTER key while control has input focus NM_SETFOCUS Control has been given input focus NM_KILLFOCUS Control has lost input focus NM_OUTOFMEMORY Control could not complete an operation because there was not enough memory available .... ON_NOTIFY( wNotifyCode, id, memberFxn ) where the italicized parameters are replaced with: wNotifyCode The code for the notification message to be handled, such as LVN_KEYDOWN. id The child identifier of the control for which the notification is sent. memberFxn The member function to be called when this notification is sent. Your member function must be declared with the following prototype:Wenn ich das richtig sehe kann man über die ON_NOTIFY/WM_NOTIFY sehr wohl auch die Nachrichten ON_BN_CLICKED und ON_BN_DOUBLECLICKED nachbilden. Ist zwar dann nen mächtiger Umweg, aber wenn man das Control hat, hat man auch deren ID, wenn die ID bekannt ist kann man auch die entsprechende Aktion mittels Notification Code abfangen(NM_CLICK-->klick mit links, NM_RCLICK-->klick mit rechts, NM_DBLCLK-->doppelklick usw.) und wenn das geschehen ist wird die Memberfunktion angeschmissen die dann die entsprechende Aktion ausführt. ^^
Habs zwar noch nicht ausprobiert aber sollte gehen oder verdrehe ich da gerade wieder was?
*wenn ja schieb ichs mal auf die Uhrzeit 02:14 Uhr, wenn das nicht greift es ist dazu noch Montag*

-
ok danke euch

ja klar mit OnCommand(...) gehts... ich hab vorher noch nie
mit in der Laufzeit erstellten Buttons gearbeitet sondern immer
nur mit anderen Elementen und habe dafür OnNotify gebraucht
danke euch!
-
Du liegst teilweise richtig mein ich.
NM_CLICK wird glaube ich wirklich gesendet, aber hat nichts mit dem drücken des Button zu tun. Bzw. du kannst nicht sicher sein, dass der Button bei NM_CLICK gedrückt wird. Die Message wird meiner Meinung nach vor dem BN_CLICK gesendet. Wenn der Button jetzt disabled ist, dann wird zwar ein NM_CLICK gesendet, da man mit der linken Maustaste ins Fenster des Buttons geklickt hat, aber kein BN_CLICK, da der Button ja disabled ist.Zumindest habe ich dies so verstanden. Weiss dazu jemand vielleicht mehr? Z.b. dank eines Artikels als Beleg oder sowas? Oder hat jemand Zeit dies selber zu testen? ^^
Grüssli
-
hät ich zeit würd ichs ja mal durchtesten, muss mich aber nun wieder meinem Motorola µC zuwenden.

@all
da schließ ich mich dem Dravere an , wenn einer weiß wann die Nachricht einschlägt bzw ein Beispiel bringen kann dann immer posten.
