RE: FW: WM_NEXTDLGCTL changes the default button ID and does not rest ore default control identifier
No, it is required. The DEFDLG_SetDefButton() is also called from message DM_SETDEFID. In this case idResult should set to the default button ID passed. And the current logic of DEFDLG_SetDefButton() does what is required for DM_SETDEFID. But when called from the WM_NEXTDLGCTL, it should not change idResult. It should only change the look of the button by drawing the default button rectangle if it is a push button. Otherwise we need to enhance the DEFDLG_SetDefButton() to accept one more parameter which indicates who invoked the method. Krishna -----Original Message----- From: Alexandre Julliard [mailto:julliard(a)winehq.org] Sent: Thursday, June 17, 2004 8:36 PM To: Krishna Murthy Cc: wine-devel(a)winehq.org Subject: Re: FW: WM_NEXTDLGCTL changes the default button ID and does not rest ore default control identifier Krishna Murthy <Krishna.Murthy(a)guptaworldwide.com> writes:
+ /** + * if the next control is push button, then draw default push button + * rectangle. + * + * if the next control is not a push button, then draw the push button + * rectangle for the default control. + * + * Call SetDefButton to draw the default rectangle, but do not change the + * default push button ID (idResult) - As Per MSDN + */ + if ( !(SendMessageW(hwndDest, WM_GETDLGCODE, 0, 0 ) & + (DLGC_UNDEFPUSHBUTTON | DLGC_BUTTON)) ) + hwndDest = GetDlgItem(hwnd, idSaveResult); + DEFDLG_SetDefButton( hwnd, dlgInfo, GetDlgCtrlID(hwndDest) ); + dlgInfo->idResult = idSaveResult;
It seems you are doing redundant work here, since DEFDLG_SetDefButton will also send the same WM_GETDLGCODE. Wouldn't a simpler fix be to have DEFDLG_SetDefButton not set idResult unless it really changed the default button? -- Alexandre Julliard julliard(a)winehq.org
Krishna Murthy <Krishna.Murthy(a)guptaworldwide.com> writes:
No, it is required. The DEFDLG_SetDefButton() is also called from message DM_SETDEFID. In this case idResult should set to the default button ID passed. And the current logic of DEFDLG_SetDefButton() does what is required for DM_SETDEFID.
Well, of course you'd need to adapt the DM_SETDEFID handling to the change. I think that's better than sending duplicate messages. -- Alexandre Julliard julliard(a)winehq.org
Guys, Sorry for this post. I have been trying to get off this list, to no avail. I get a reply stating that the "user is unknown". Wish it was easy to fix. I tried via the web site, can we get the list admin to check for any mail addresses from the ihug.com.au domain, it may be a variant (eg ghicks(a)backend.ihug.com.au) instead of the regular one. THanks in advance On Thu, 17 Jun 2004 21:16:25 -0700, Krishna Murthy wrote:
No, it is required. The DEFDLG_SetDefButton() is also called from message DM_SETDEFID. In this case idResult should set to the default button ID passed. And the current logic of DEFDLG_SetDefButton() does what is required for DM_SETDEFID.
But when called from the WM_NEXTDLGCTL, it should not change idResult. It should only change the look of the button by drawing the default button rectangle if it is a push button.
Otherwise we need to enhance the DEFDLG_SetDefButton() to accept one more parameter which indicates who invoked the method. Krishna
-----Original Message----- From: Alexandre Julliard [mailto:julliard(a)winehq.org] Sent: Thursday, June 17, 2004 8:36 PM To: Krishna Murthy Cc: wine-devel(a)winehq.org Subject: Re: FW: WM_NEXTDLGCTL changes the default button ID and does not rest ore default control identifier
Krishna Murthy <Krishna.Murthy(a)guptaworldwide.com> writes:
+ /** + * if the next control is push button, then draw default push button + * rectangle. + * + * if the next control is not a push button, then draw the push button + * rectangle for the default control. + * + * Call SetDefButton to draw the default rectangle, but do not change the + * default push button ID (idResult) - As Per MSDN + */ + if ( !(SendMessageW(hwndDest, WM_GETDLGCODE, 0, 0 ) & + (DLGC_UNDEFPUSHBUTTON | DLGC_BUTTON)) ) + hwndDest = GetDlgItem(hwnd, idSaveResult); + DEFDLG_SetDefButton( hwnd, dlgInfo, GetDlgCtrlID(hwndDest) ); + dlgInfo->idResult = idSaveResult;
It seems you are doing redundant work here, since DEFDLG_SetDefButton will also send the same WM_GETDLGCODE. Wouldn't a simpler fix be to have DEFDLG_SetDefButton not set idResult unless it really changed the default button?
-- Alexandre Julliard julliard(a)winehq.org
Gregory Hicks wrote:
Guys,
Sorry for this post. I have been trying to get off this list, to no avail.
I get a reply stating that the "user is unknown". Wish it was easy to fix. I tried via the web site, can we get the list admin to check for any mail addresses from the ihug.com.au domain, it may be a variant (eg ghicks(a)backend.ihug.com.au) instead of the regular one.
You are off the list now.
participants (4)
-
Alexandre Julliard -
Duane Clark -
Gregory Hicks -
Krishna Murthy