From 7400cda3dad212b58ebef5cabe1d66ebc4b9d69b 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. --- new/button_windows.c | 4 ++-- new/checkbox_windows.c | 4 ++-- new/entry_windows.c | 2 +- new/newcontrol_windows.c | 4 ++-- new/ui_windows.h | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/new/button_windows.c b/new/button_windows.c index c331e89..c57b778 100644 --- a/new/button_windows.c +++ b/new/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/new/checkbox_windows.c b/new/checkbox_windows.c index 55699a6..abe128d 100644 --- a/new/checkbox_windows.c +++ b/new/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/new/entry_windows.c b/new/entry_windows.c index f8521b4..df4a91d 100644 --- a/new/entry_windows.c +++ b/new/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/new/newcontrol_windows.c b/new/newcontrol_windows.c index d2f4508..f95f67f 100644 --- a/new/newcontrol_windows.c +++ b/new/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/new/ui_windows.h b/new/ui_windows.h index 4ade067..b89af3a 100644 --- a/new/ui_windows.h +++ b/new/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);