|
VS2005 (NOT with SP1)/MFC
When I add the OnSysCommand message handler to my app (without adding anything to it), the system menu starts acting weird. The left mouse button no longer displays the menu, and the right mouse button positions it incorrectly. On top of that, I can't resize the main window by click/dragging the border, and I can't move the window.
If I remove the OnSysCommand handler, the app behaves normally.
Has anyone ever seen that? Remember, I'm using the un-patched VS2005 with MFC.
I don't recall that happening in VC6.
"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: When I add the OnSysCommand message handler to my app (without adding anything to it),...
Are you calling the base class OnSysCommand()?
Mark
|
|
|
|
|
Yes. It's a naked function, exactly the way the IDE gave it to me when I added the handler.
"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
|
|
|
|
|
any chance to see a piece of code John ?
|
|
|
|
|
If you have an app handy, add a handler for OnSysCommand, and that's what I have.
"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
|
|
|
|
|
Sounds like your handler is eating SC_MOVE and other SC_* commands that are generated when you use the window-management commands.
|
|
|
|
|
All SC_* commands are being passed on to the base handler.
"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
|
|
|
|
|
Check this out - I posted it today:
http://www.codeproject.com/menu/System_Menu.asp[^]
"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'm trying to create a program that will, in a 30-team league, assign each team to play 6 times each against 17 teams, and 5 times each against 12 teams.
Before you read my code, you should be warned that I'm a bad coder, so if you could tell me how to organize my code better, thanks.
But my problem is that when I change this line: while(teamOpponents[a][randomMonth][randomDay] != 100 || teamOpponents[b][randomMonth][randomDay] != 100); to this line: while(teamOpponents[a][randomMonth][randomDay] != 100 || teamOpponents[b][randomMonth][randomDay] != 100 || (randomMonth == 3 && randomDay == 9)); , the compiled program will halt (compile it yourself, and you'll see) (possibly in some kind of infinite loop(?)
My bad code:
http://www.codeguru.com/forum/showthread.php?p=1522813#post1522813
|
|
|
|
|
Looks like an infinite loop to me.
Mark
|
|
|
|
|
Where? (after I put in the extra code)
|
|
|
|
|
What changes to cause this loop to stop?
while(randomMonth == 200 || randomDay == 200 ||
teamOpponents[a][randomMonth][randomDay] != 100 ||
teamOpponents[b][randomMonth][randomDay] != 100)
{
randomMonth = rand()%6;
randomDay = rand()%31;
}
|
|
|
|
|
Look at all the code...also, try compiling my WHOLE script (from the link I provided).
I have an array teamOpponents[30][6][31]...meaning 30 teams, 6 months, and 31 days in each month (I'm trying to make the program not write to the 31st days of April, June, and September.)
All the values of teamOpponents[][][] have been set to 100. 100 means that the value has not been changed yet.
If the slot in the array has been changed (so the slot != 100), generate a new random month and day...
|
|
|
|
|
From what link?
I assumed the array elements were initially assigned to 100 based on the while statement's
expression.
Did I miss where you perhaps moved that closing curley bracket down (past where something in
the arrays actually gets changed?
Mark
|
|
|
|
|
|
Here's what I got from the link. This code will get stuck in the while loop.
What have you changed to make this work?
for(int c = 0; c < amountofGames[a][b]; c++)
{
randomMonth = 200;
randomDay = 200;
while(randomMonth == 200 || randomDay == 200 ||
teamOpponents[a][randomMonth][randomDay] != 100 ||
teamOpponents[b][randomMonth][randomDay] != 100)
{
randomMonth = rand()%6;
randomDay = rand()%31;
}
teamOpponents[a][randomMonth][randomDay] = b;
teamOpponents[b][randomMonth][randomDay] = a;
random = rand()%2;
if (random == 0)
{
home[a][randomMonth][randomDay] = 1;
home[b][randomMonth][randomDay] = 0;
}else
{
home[a][randomMonth][randomDay] = 0;
home[b][randomMonth][randomDay] = 1;
}
}
|
|
|
|
|
No, this code doesn't get stuck at all...it won't get stuck until I change
while(randomMonth == 200 || randomDay == 200 ||
teamOpponents[a][randomMonth][randomDay] != 100 ||
teamOpponents[b][randomMonth][randomDay] != 100)
to
while(randomMonth == 200 || randomDay == 200 ||
teamOpponents[a][randomMonth][randomDay] != 100 ||
teamOpponents[b][randomMonth][randomDay] != 100 ||
(randomMonth == 3 && randomMonth == 9))
I assigned the value 100 to all the parts of the array.
So, if the array value isn't 100 (which means that it HAS been altered), keep generating a randomMonth and randomDay until the value of a DIFFERENT teamOpponents[a][randomMonth][randomDay] is 100 (meaning it hasn't been altered.)
Sorry if this is confusing, but if you have time to read the entire script, you might understand.
Thanks for your help though, any other ideas about why adding one conditional will cause it to halt?
|
|
|
|
|
Ok let me get my head out of my... disregard the previous infinite loop stuff.
This is what I got from the link, right?
for(int c = 0; c < amountofGames[a][b]; c++)
{
randomMonth = 200;
randomDay = 200;
if(randomMonth == 3 && randomDay == 9)
randomMonth = rand()%6;
randomDay = rand()%31;
while(randomMonth == 200 || randomDay == 200 ||
teamOpponents[a][randomMonth][randomDay] != 100 ||
teamOpponents[b][randomMonth][randomDay] != 100)
{
randomMonth = rand()%6;
randomDay = rand()%31;
}
if(randomMonth == 3 && randomDay == 9)
randomMonth = rand()%6;
randomDay = rand()%31;
teamOpponents[a][randomMonth][randomDay] = b;
teamOpponents[b][randomMonth][randomDay] = a;
random = rand()%2;
if (random == 0)
{
home[a][randomMonth][randomDay] = 1;
home[b][randomMonth][randomDay] = 0;
}else
{
home[a][randomMonth][randomDay] = 0;
home[b][randomMonth][randomDay] = 1;
}
}
|
|
|
|
|
Yes, but the code between the two // works (doesn't halt) and the two // fails (halts) don't check again to see if the value in the teamOpponents array is 100...
I want the script to be this, but this doesn't work unless I take out the ||(randomMonth == 3 & randomDay == 9) part:
for(int c = 0; c < amountofGames[a][b]; c++)<br />
{<br />
do<br />
{<br />
randomMonth = rand()%6;<br />
randomDay = rand()%31;<br />
}<br />
while(teamOpponents[a][randomMonth][randomDay] != 100 ||<br />
teamOpponents[b][randomMonth][randomDay] != 100 ||<br />
(randomMonth == 3 & randomDay == 9))<br />
<br />
<br />
teamOpponents[a][randomMonth][randomDay] = b;<br />
teamOpponents[b][randomMonth][randomDay] = a;<br />
<br />
random = rand()%2;<br />
<br />
if (random == 0)<br />
{<br />
home[a][randomMonth][randomDay] = 1;<br />
home[b][randomMonth][randomDay] = 0;<br />
}else<br />
{<br />
home[a][randomMonth][randomDay] = 0;<br />
home[b][randomMonth][randomDay] = 1; <br />
}<br />
<br />
}
-- modified at 17:48 Thursday 25th January, 2007
|
|
|
|
|
Try changing
while(teamOpponents[a][randomMonth][randomDay] != 100 ||
teamOpponents[b][randomMonth][randomDay] != 100 ||
(randomMonth == 3 & randomDay == 9))
to
while(teamOpponents[a][randomMonth][randomDay] != 100 ||
teamOpponents[b][randomMonth][randomDay] != 100 ||
(randomMonth == 3 && randomDay == 9))
|
|
|
|
|
Sorry, I meant &&, but neither & nor && works...
...could you try compiling it yourself to see how it works? Maybe that way you could help me better...
...thanks for all your effort though
|
|
|
|
|
I don't have the initialization code.
It will take longer and longer to find uninitialized spots in the arrays.
Are you sure it's not just grinding away waiting to hit the right random numbers?
Mark
|
|
|
|
|
What do you mean by initialization?
And I posted all the code that I'm using in the link.
Yes, the program keeps running until it hits the right random number, but since the computer can select 162 days out of 183 games (it works fine), I doubt that the computer can't select 162 days out of 182 days...
If you have time, could you look over the entire code?
|
|
|
|
|
I ran your code and it doesn't halt anywhere.
Mark
|
|
|
|
|
Ok I made the change. It's indeed stuck in the while loop. I have one of my 4 processors
grinding away on it (CPU pegged at 25% LOL) while I try to figure out why it never exits
Mark
|
|
|
|