I'm having the following problem with Quicken 2000 Deluxe under wine (CVS as of Thursday morning [and all prior versions]):
When I open an investment account, then click on the security name in an existing transaction, and that security name is fairly long (say, 20+ characters), the name gets replaced by the trandaction date! This does not happen with MS Windows.
(Before I go any farther, I must say that I know virtually NOTHING about windows programming, and only a small bit more about Wine coding and debugging...)
After spending two days drudging through --debugmsg +all logs, I think I have a pretty good idea what's happening. It appears that Quicken uses a single Edit Control for all of it's input fields. When the account is opened, the initial editable field is the date of a new transaction. Quicken sets the maximum input length (with EM_LIMITTEXT) to 10. (Makes sense for a date...) This sets buffer_limit in it's EDITSTATE to 10.
Now, when you then go and click on the security name in that existing transaction, Quicken uses WM_SETTEXT to set it's value. Under Wine, this fails, because the size of the string is greater than es->buffer_limit (checked near the top of EDIT_MakeFit() in controls/edit.c). Now, EDIT_MakeFit() does notify Quicken with EN_MAXTEXT, but Quicken doesn't seem to respond in any sensible manner (like getting a bigger control and trying again). (I have not followed this path past this point, but I know that the security name gets wiped out...) Quicken will, AFTER issuing the SETTEXT, try to re-size the field with EM_LIMITTEXT to 30, a security name length.
I quote from MSDN (EM_LIMITTEXT Message Remarks section): "The EM_LIMITTEXT message limits only the text the user can enter. It does not affect any text already in the edit control when the message is sent, nor does it affect the length of the text copied to the edit control by the WM_SETTEXT message. If an application uses the WM_SETTEXT message to place more text into an edit control than is specified in the EM_LIMITTEXT message, the user can edit the entire contents of the edit control. "
So, according to MSDN, the WM_SETTEXT should successfully set the text to the full length, regardless of the value of buffer_limit.
I am in the process of making this change and testing it. I guess my main concern at this point is, "Are there any other ramifications to making this change that I should be concerned about?" If anyone wants to point me in a direction here, I'll follow through...
Carl