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);