"Joseph M. Newcomer" wrote:
Well, you told us a lot of stuff that makes no difference at all, but the most critical
thing, the context of the SetWindowPos call itself, is missing.
The most common failure mode here is putting it in the OnSize handler, which means that
the window object is uninitialized, that is you have something like
void CMyClass::OnSize(...)
{
....
somecontrol.SetWindowPos(...)
which will always exhibit the problem you are seeing. The correct code is
void CMyClass::OnSize(...)
{
if(somecontrol.GetSafeHwnd() != NULL)
{
...
somecontrol.SetWindowPos(...)
I expect that you are NOT using GetDlgItem, because that is not only poor practice nearly
all the time, but is GUARANTEED to take an access fault; that is
GetDlgItem(IDC_CONTROL)->SetWindowPos
is not only *exceptionally* poor programming, but it fails for the same reason, because
the GetDlgItem() returns NULL.
joe
On Thu, 11 Oct 2007 09:16:01 -0700, RobKinney1
<mydigitalportal.net@gmail.com.NOSPAMPLEASE> wrote:
Hello again experts! Thank you for reading this post.
Anyone ever heard of SetWindowPos causing an application to crash? Even
more so causing a severe error that a try catch(...) was unable to catch?
More details:
--- In ParentWindow.h ---
CTestWindow * dlg;
--- In ParentWindow.cpp ---
dlg = new CTestWindow();
...
dlg->Create(CTestWindow::IDD); // crashes here sometimes (see below for
init for this window)
try
{
dlg->ShowWindow(SW_SHOW); // also sometimes errors out here
}
catch(...)
{
// logs error
}
--- In TestWindow.cpp in OnInitDialog() ---
...
try
{
SetWindowPos(NULL, windowPositionX, windowPositionY, 50, 50, SWP_NOSIZE |
SWP_NOZORDER); // crashes whole program here (windowPositionX and Y are
always positive legal values as I log them before this executes)
}
catch(...)
{
// logs error.. well, it is supposed to but the try-catch will never log it
since the program crashes
}
Who knows... maybe this is not where the problem is, but I am logging lines
before and after each and every line in the parent and child window and this
is where is consistently stops. Spent over a day now looking at this.
Another note: This error usually happens after about 40 successful cycles
of the code.
Any thoughts?
Thanks,
Rob
Joseph M. Newcomer [MVP]
email: newcomer@flounder.com
Web: http://www.flounder.com
MVP Tips: http://www.flounder.com/mvp_tips.htm
Thank you again for looking into this with me. I have replied at the bottom
of this thread that I no longer think that this is the SetWindowPos function.
I am running this SetWindowPos in the OnInitDialog().
I am not sure what to think anymore. Now it seems to be that this window
will completely crash after it leaves the OnInitDialog() function. In the
(characters or otherwise) in this init function.
library initialization in, then vice versa.
Will let you know what the problem was if we figure this out soon.