From a538412df2b7c625b0685252ccdd1b1a754c4b23 Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Thu, 9 Apr 2015 18:54:14 -0400 Subject: [PATCH] Changed onWM_COMMAND() to give our controls only the notification code. We don't want to give the control the ID part of wParam because that's (or that'll be) dynamically assigned based on control parenting and prior controls; we don't want to give the control the LPARAM since that contains the window handle and uiControl already has that. --- button_windows.c | 4 ++-- checkbox_windows.c | 4 ++-- entry_windows.c | 2 +- newcontrol_windows.c | 4 ++-- ui_windows.h | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/button_windows.c b/button_windows.c index c331e89b..c57b7789 100644 --- a/button_windows.c +++ b/button_windows.c @@ -6,11 +6,11 @@ struct button { void *onClickedData; }; -static BOOL onWM_COMMAND(uiControl *c, WPARAM wParam, LPARAM lParam, LRESULT *lResult) +static BOOL onWM_COMMAND(uiControl *c, WORD code, LRESULT *lResult) { struct button *b = (struct button *) (c->data); - if (HIWORD(wParam) != BN_CLICKED) + if (code != BN_CLICKED) return FALSE; (*(b->onClicked))(c, b->onClickedData); *lResult = 0; diff --git a/checkbox_windows.c b/checkbox_windows.c index 55699a67..abe128d5 100644 --- a/checkbox_windows.c +++ b/checkbox_windows.c @@ -6,13 +6,13 @@ struct checkbox { void *onToggledData; }; -static BOOL onWM_COMMAND(uiControl *c, WPARAM wParam, LPARAM lParam, LRESULT *lResult) +static BOOL onWM_COMMAND(uiControl *c, WORD code, LRESULT *lResult) { struct checkbox *cc = (struct checkbox *) (c->data); HWND hwnd; WPARAM check; - if (HIWORD(wParam) != BN_CLICKED) + if (code != BN_CLICKED) return FALSE; // we didn't use BS_AUTOCHECKBOX (see controls_windows.go) so we have to manage the check state ourselves diff --git a/entry_windows.c b/entry_windows.c index f8521b45..df4a91d7 100644 --- a/entry_windows.c +++ b/entry_windows.c @@ -4,7 +4,7 @@ struct entry { }; -static BOOL onWM_COMMAND(uiControl *c, WPARAM wParam, LPARAM lParam, LRESULT *lResult) +static BOOL onWM_COMMAND(uiControl *c, WORD code, LRESULT *lResult) { return FALSE; } diff --git a/newcontrol_windows.c b/newcontrol_windows.c index d2f45087..f95f67f9 100644 --- a/newcontrol_windows.c +++ b/newcontrol_windows.c @@ -5,7 +5,7 @@ typedef struct singleHWND singleHWND; struct singleHWND { HWND hwnd; - BOOL (*onWM_COMMAND)(uiControl *, WPARAM, LPARAM, LRESULT *); + BOOL (*onWM_COMMAND)(uiControl *, WORD, LRESULT *); BOOL (*onWM_NOTIFY)(uiControl *, WPARAM, LPARAM, LRESULT *); void (*onWM_DESTROY)(uiControl *); uintptr_t parent; @@ -65,7 +65,7 @@ static LRESULT CALLBACK singleSubclassProc(HWND hwnd, UINT uMsg, WPARAM wParam, switch (uMsg) { case msgCOMMAND: - if ((*(s->onWM_COMMAND))(c, wParam, lParam, &lResult) != FALSE) + if ((*(s->onWM_COMMAND))(c, HIWORD(wParam), &lResult) != FALSE) return lResult; break; case msgNOTIFY: diff --git a/ui_windows.h b/ui_windows.h index 4ade067a..b89af3af 100644 --- a/ui_windows.h +++ b/ui_windows.h @@ -23,7 +23,7 @@ struct uiWindowsNewControlParams { // Store the result in *lResult and return any non-FALSE value (such as TRUE) to return the given result; return FALSE to pass the notification up to your window procedure. // Note that these are only issued if they come from the uiControl itself; notifications from children of the uiControl (such as a header control) will be received normally. // TODO don't give WPARAM/LPARAM raw - BOOL (*onWM_COMMAND)(uiControl *c, WPARAM wParam, LPARAM lParam, LRESULT *lResult); + BOOL (*onWM_COMMAND)(uiControl *c, WORD code, LRESULT *lResult); BOOL (*onWM_NOTIFY)(uiControl *c, WPARAM wParam, LPARAM lParam, LRESULT *lResult); // This is called in WM_DESTROY. void (*onWM_DESTROY)(uiControl *c);