|
Are you setting m_dt directly without setting m_status?
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
Honestly, I haven't gone through all 750,000 lines of the code to see.
At this point, I'm thinking I'm going to have to write a class derived from COleDateTime to fix it, and then do a global search/replace with the new class name.
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
John Simmons / outlaw programmer wrote: At this point, I'm thinking I'm going to have to write a class derived from COleDateTime to fix it, and then do a global search/replace with the new class name.
Ouch How about a global search for m_dt? Of course, if it isn't set directly anywhere then
error checking wasn't done when setting the value through a method/constructor.
I always wonder why the ATL/MFC classes have a rich set of methods and operators yet they make
all the member variables public, just daring us to use them incorrectly
Good luck!
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
Well, this code is about 6 years old, and I'm not the original author. I'm reconsidering the derived class idea and just doing like you said and do a search for m_dt... What a pain in the ass.
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
I just did a search for m_dt in the project - it was found on 1525 lines... I'm in hell. :/
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
John Simmons / outlaw programmer wrote: it was found on 1525 lines
Nice.
Did the older version of COleDateTime have less ASSERTs?
Have fun
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
Before we switched to VS2005/SP1, there were *no* asserts.
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
John Simmons / outlaw programmer wrote: Before we switched to VS2005/SP1, there were *no* asserts.
Ouch - yeah....I just dug up old source code. There's just alot of "if (GetStatus() == valid)"
checks without the ASSERTs
Enjoy!
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
Recently we upgraded from VS6.0 to VS2005. If you do a sizeof of a structure it looks like it pads to 8 byte. Structures that were returning 16 are now 24. Is this right or am I crazy?
Programmer
Glenn Earl Graham
Austin, TX
|
|
|
|
|
1) One (or more) of the members in the struct may be of an intrinsic type that changed size in newer runtime library.
2) Your byte alignment may need to be adjusted in the project's properties.
3) The sizeof function could have been changed by MS, but I doubt it.
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
You should use WM_NEXTDLGCTL in a dialog instead of SetFocus().
::SendMessage(hDlg, WM_NEXTDLGCTL, (WPARAM)hwndControl, 1);
(CDialog::GotoDlgCtrl(CWnd* pWndCtrl) is the MFC wrapper)
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
Mark Salsbery wrote: You should use WM_NEXTDLGCTL in a dialog instead of SetFocus().
But this still does not explain the "Selecting the edit box by clicking on it and then writing does not work." problem. Something is definitely awry here.
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
DavidCrow wrote: Something is definitely awry here
Yep
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
I agree.
Time to come clean...
Vive y deja vivir / Live and let live
Javier.
|
|
|
|
|
garfield185 wrote: Time to come clean...
Yes! Are you withholding important information from us??
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
Oh no!
"Time to come clean" is just my signature.
Well, I love Desperate Housewives...
Time to come clean...
Vive y deja vivir / Live and let live
Javier.
|
|
|
|
|
Oh ok
I just noticed a few posts down - do you have a PreTranslateMessage override in the dialog
in question? If so, are you accidentally eating important messages there?
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
I use the PreTranslateMessage to check if the user presses Enter to prevent the Dialog from closing. The only thing written about that is this:
BOOL CSeLlamDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->wParam == VK_RETURN)
{
pMsg->wParam =NULL;
if (Selected==TRUE)
{
OnBtnadd();
}
}
return CDialog::PreTranslateMessage(pMsg);
}
Well, it should not make nothing right about it right?
Time to come clean...
Vive y deja vivir / Live and let live
Javier.
|
|
|
|
|
I have a few suggestions:
- Throw the PreTranslateMessage thing in the trash can. Read this[^].
- Avoid having your dialog closed on <Enter> and <Esc> by writing appropriate message handlers. Read this[^].
- Create a CEdit member variable in your dialog class and call
CEdit::SetFocus() on that from CDialog::OnInitDialog() . Read this[^]. - If you explicitly set focus to a control you should return
FALSE from OnInitDialog() . The wizard generated comment also clearly states this.
"It's supposed to be hard, otherwise anybody could do it!" - selfquote "High speed never compensates for wrong direction!" - unknown
|
|
|
|
|
Heh - wow, the first and last time I recommended using appropriate message handling instead of
the over-badly-used PreTranslateMessage() I was ridiculed, tarred, and feathered.
Bold move
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
Hi Mark,
Mark Salsbery wrote: Heh - wow, the first and last time I recommended using appropriate message handling instead of the over-badly-used PreTranslateMessage() I was ridiculed, tarred, and feathered.
Did I mistakingly reply to you?
It's hard to see when the forum threads grow this large.
I see the picture you're drawing, but not the reason... I don't think you deserve neither tar nor feathers.
Mark Salsbery wrote: Bold move
Like my former sig: Nobody remembers a coward!
When my lawyer heard that he replied that "Nobody forgets an idiot either!"
"It's supposed to be hard, otherwise anybody could do it!" - selfquote "High speed never compensates for wrong direction!" - unknown
|
|
|
|
|
Hi Roger,
No you didn't reply to me - I was just commenting (ranting?) about the over-misuse of
PreTranslateMessage(). I just remember one of the first qestions I ever responded to here was
about avoiding dialog closing when enter key pressed. My suggestion to handle the appropriate
messages (like in Joe's article), I was informed, was bad. Apparently PreTranslateMessage()
overriding is quite fashionable on this site!
Cheers!
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
Probably not related to the problem, but I think it should be something like this (changes
indicated in red)...
BOOL CSeLlamDlg::PreTranslateMessage(MSG* pMsg)
{
if(<code>pMsg->message == WM_KEYDOWN && </code>pMsg->wParam == VK_RETURN)
{
<code>
if (Selected==TRUE)
{
OnBtnadd();
}
<code>
<code>return TRUE;</code>
}
return CDialog::PreTranslateMessage(pMsg);
}
I wasn't sure if you want to eat the return key press or not - remove the "return TRUE;" line
to have the key press processed as usual.
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
I think that the line
pMsg->wParam =NULL;
should be needed because when the user presses enter If I don´t do it I close that dialog and then the the VK_RETURN still lives in the other dialog, so it makes again. I wrote it to call once the function and to be sure that the message would be dead in the oher dialog.
Anyway it works well.
Time to come clean...
Vive y deja vivir / Live and let live
Javier
|
|
|
|
|
garfield185 wrote: should be needed because when the user presses enter If I don´t do it I close that dialog
That's why I added the "return TRUE;", to eat the return key press.
Whatever works, I guess, but I think it's bad form to alter the message and pass it to the default
handler when there's a facility for indicating the message has been handled
But then again, using PreTranslateMessage for this IMO is bad form (see Roger's reply).
Cheers!
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|