|
|
I have an MFC app that ASSERTS in CWnd::WalkPretranslateTree with a message being sent to main window after my main window is destroyed as I exit the application. The ASSERT is becuase the HWND being checked is no longer a valid window. It is a fairly large application that compiles and executes without problem on my old WinXP Home (SP1) machine with MSVC6 - but does this ASSERT in my new WinXP Pro (SP2) machine - no change in code.
The offending message is in the range of message numbers for Registered Window message. It is not one that is registered by my program.
How can I track what this message is and what program sent this? Is there a way to list all Registerd messages? Is there a way to set SPY+ or some such program to watch for this message?
I would appreciate any help.
|
|
|
|
|
Hello friends
I would like to capture datalink frames passing through my network card using sockets. I have found the following code snippet in a Network Programming book
sd = socket ( AF_INET, SOCK_PACKET, htons(ETH_P_ALL);
to capture all the datalink frames, i.e., frames with source and destination MAC address .(UNIX environment)
Is there an equivalent in Windows ?
|
|
|
|
|
There are four guys trying to get home at night and in order to do so, they MUST cross a bridge. It's very dark and there is only one torch available. The bridge can ONLY support "TWO" person at a time. Now, a bomb has been set on the bridge which will explode in 18 mins. Due to the fact that each person's travelling speeds are different, therefore some will obviously take longer to cross than others.
The time that each person takes are as followed:
A = 1 min
B = 2 min
C = 5 min
D = 10 min
Torch = 1 Qty
Here's how it works: If D & A goes first, it'll require 10 mins for them to cross the bridge together. By the time A gets back with the torch to B&C...11 mins will be passed already.
The total time required is : 17 mins
the solution to it is:
A and B first - 2 minutes (max 2 )
A runs back with torch = 3 minutes
C and D Next = 13 minutes ( max 10 )
B comes back with the torch = 15 minutes ( max 5 )
A and B again = 17 minutes
Can anyone tell me the code to this problem in turbo c or vc urgent please please. many many thanks in advance.
Babur Khan
|
|
|
|
|
Have you tried to solve it yet? Lets see your attempt and we'll try to help you along.
Alex Korchemniy
|
|
|
|
|
Hmm, sounds like you get some interesting HOMEWORK problems.
|
|
|
|
|
I am trying to communicate with a Serial Port, but I need to Delay 80ms (milliseconds) before reading from the port. Does anyone know of a way to Delay 80ms in c++ that isnt system specific? Meaning it can work on any machine regardless of cpu speed?
Thanks
P.S. I tried Sleep() but it seemed to block the data from the port and I couldnt read.
|
|
|
|
|
i face similar problem lik you but i solved that in little different way .
I created a Thread for Serial Port Processing and comunicate with main thread with help of events.
-----------------------------
"I Think this Will Help"
-----------------------------
Alok Gupta
visit me at http://www.thisisalok.tk
|
|
|
|
|
any chance you could post an example?
|
|
|
|
|
Can't you use SetTimer , KillTimer and OnTimer ? These work in millisecond units.
The tigress is here
|
|
|
|
|
Aren't windows timers only approximate? The original poster was stating 80ms - if this is a finger in the air value then SetTimer is good, else if it is exactly 80ms they need to wait, then this might cause issues?
From VC++ help :-
"Each time the specified interval (or time-out value) for a timer elapses, the system notifies the window associated with the timer. Because the accuracy of a timer depends on the system clock rate and how often the application retrieves messages from the message queue, the time-out value is only approximate. "
*********************************************
The sooner you fall behind, the longer you have to catch up.
|
|
|
|
|
the problem:
have a SDI application , and need to create a "external" CWnd to the Mainframe (mainframe will recieve messages from the new window)
much like a tool window.
i want the new CWnd to be topmost and remain in the screen on top of all windows even if the application main window (mainframe) is not visible (i.e minimized)
the problem is that the new CWnd gets minimized with the application main window
any ideas?
"There is no sin in making an error - we all do, and that's how we learn. Sin lies in letting stand an error, once we discover it, without correcting it." Roger Wright
|
|
|
|
|
You can use SetWindowPos api with the External Window,you can read it documentation in MSDN
-----------------------------
"I Think this Will Help"
-----------------------------
Alok Gupta
visit me at http://www.thisisalok.tk
|
|
|
|
|
I am doing a program for school, and I am to be tested for all situations. I believe that I have all of the otehr errors accounted for, but I have no idea how to handle the error when the user enters a "letter" into the console while they're playing the game(it's a simple guess the number game)... Any help would be greatly appreciated.
|
|
|
|
|
Hi There!
Simply use
IsDigit() function to check the valid charater is entered.
here a little code snippet
char ch;
ch=getch();
if(!isdigit(ch))
{
cout<<"please enter right character";
return;
}
else
{
........
carry on to program
........
}
-----------------------------
"I Think this Will Help"
-----------------------------
Alok Gupta
visit me at http://www.thisisalok.tk
|
|
|
|
|
Hi,
How can I get the handle of the window of a process if I know the process id.
I need either the first window of a process or the topmost window or if there is a function that enumarates all the windows of a process that would also be good.
PS I don't want to enum all the windows on the desktop, that I know how to do but I am keeping it as a last resort option because that would consume a lot of resources unnecesarrily.
there must be a more efective way to do this like some kind of api that lets you enum only the windows from one process, no?
thank you in advance
please reply.
|
|
|
|
|
just get the window by enumerating them, then call GetWindowThreadProcessId() and compare it with your process ID you have. I hope this helps
gabby
|
|
|
|
|
How do I pass a CArray<struct, &struct> as a reference to a function?
I've tried the obvious &m_caArray
The function is defined as:
fn(CArray * caItem, int index)
....
I've tried defining the parameter as CObArray (and type cast the arguement) instead also but that didn't work either.
I keep getting the error:
"cannot convert parameter 1 from 'class CArray<struct,struct &> *' to 'class CObArray *'
-Steven Hicks
CPACodeProjectAddict
|
|
|
|
|
I just tried these, works fine for me:
Using References
<br />
void TestFunction(CArray<CRect, CRect&>& rectArray)<br />
{<br />
int count = rectArray.GetSize();<br />
CString strCount;<br />
strCount.Format(_T("%d"), count);<br />
AfxMessageBox(strCount);<br />
}<br />
<br />
void CTestDlgDlg::OnFileOpen32773()<br />
{<br />
CArray<CRect, CRect&> rectArray;<br />
rectArray.Add(CRect(0,1,2,3));<br />
rectArray.Add(CRect(4,5,6,7));<br />
TestFunction(rectArray);<br />
}<br />
Using Pointers
<br />
void TestFunction(CArray<CRect, CRect&>* rectArray)<br />
{<br />
int count = rectArray->GetSize();<br />
CString strCount;<br />
strCount.Format(_T("%d"), count);<br />
AfxMessageBox(strCount);<br />
}<br />
<br />
void CTestDlgDlg::OnFileOpen32773()<br />
{<br />
CArray<CRect, CRect&> rectArray;<br />
rectArray.Add(CRect(0,1,2,3));<br />
rectArray.Add(CRect(4,5,6,7));<br />
TestFunction(&rectArray);<br />
}<br />
Pssst. You see that little light on your monitor? That's actually a government installed spy camera. Smile and wave to big brother!
|
|
|
|
|
Hicks,
Assuming that your CArray declaration is like this:
CArray <MyStruct, &MyStruct> arr;
Hope you've tried this:
YourFunction ( CArray <MyStruct, &MyStruct> &arrArg ) { }
If it works for you and you think it looks messy, try typedef-ing the "CArray <mystruct, &mystruct="">" part.
Clinton
|
|
|
|
|
I was trying to have a more generic function, where I could use it for more than just that one CArray. Thanks anyways
-Steven Hicks
CPACodeProjectAddict
|
|
|
|
|
Try using a template...
template<typename T1, typename T2>
fn(CArray<T1, T2> &caItem, int index)
{
...
} This will let you use the function for any CArray type
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
Can someone please explain to me all possible ways of establishing a network connection in user mode... other than using winsocks.
I've found this interesting diagram: http://www.ndis.com/papers/winpktfilter.htm[^]. It appears to me that the only other way of establishing a connection would be to create a Layered Service Provided dll ?? Am I wrong. I've also ran across this : http://www.microsoft.com/msj/0599/LayeredService/LayeredService.aspx[^]. It appears to me that LSP is used for filtering... but is it still possible for an LSP to establish a connection?
|
|
|
|
|
Anonymous wrote:
but is it still possible for an LSP to establish a connection?
No it Not possible to use LSP to establish connection.it do only work of filtering and actual connection is made by WINSOCK.dll alone.
actualy you can consider LSP as Winsock HOOK.
-----------------------------
"I Think this Will Help"
-----------------------------
Alok Gupta
visit me at http://www.thisisalok.tk
|
|
|
|
|
OK. That makes perfect sense.
I've read some more about this stuff and some people mention that its possible to call TDI (Transport Driver Interface) directly. How can this be done?
|
|
|
|