|
I want to set a timer to execute in every two minutes in visual C++. Please help
|
|
|
|
|
If you are using MFC, you can use CWnd::SetTimer[^]
BTW, don't forget your friend google...
|
|
|
|
|
::SetTimer(1, 120000, MyTest);
void CALLBACK MyTest(HWND hW, UINT msg, UINT ev, DWORD time) {
}
Maxwell Chen
modified on Tuesday, January 29, 2008 10:35:27 AM
|
|
|
|
|
Maxwell Chen wrote: ::SetTimer(1, 120, MyTest);
Perhaps you meant to use 120000 instead.
"Normal is getting dressed in clothes that you buy for work and driving through traffic in a car that you are still paying for, in order to get to the job you need to pay for the clothes and the car and the house you leave vacant all day so you can afford to live in it." - Ellen Goodman
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
DavidCrow wrote: Perhaps you meant to use 120000 instead.
Yes.
Maxwell Chen
|
|
|
|
|
Have a look at SetTimer function documentation [^].
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
Hi Friends....
i have some doubts regarding with my project ..i am trouble and i dont know how to finish up this one..
Tis is my queries:
1.i have one file that file contains list of data.first i wanna convert
that data Cfile into CStringArray how its possible.i used these function
CFile Lfile;
CStringArray data;
data=Lfile.GetLenght();
is it right conversion to data converting CFile to CStringArray..its shows one error :
error C2679: binary '=' : no operator found which takes a right-hand operand of type 'ULONGLONG' (or there is no acceptable conversion)
how to cure it ? r wat method is suitable for converting CFile to CString Array.?
Thanks
raju.k
|
|
|
|
|
CFile file("data.txt", CFile::modeReadWrite | CFile::modeCreate);
CStringArray ar;
CString s;
s.format("%d", file.GetLength());
ar.Add(s);
Maxwell Chen
|
|
|
|
|
I think the OP wanted to read all the strings from the file and convert them into a CStringArray, not adding the file size to the string array.
Am I wrong ?
|
|
|
|
|
Maxwell Chen
|
|
|
|
|
You already asked this question yesterday and people told you that it is not the way to go. The GetLenght function only returns the size of the file. How could the compiler convert it to a string array ?
No, you really need to read your file yourself and extract each string, create a CString object and push it into the CStringArray.
|
|
|
|
|
Thanks guys its working ...i am really happy ..
Thank u very much
raju.k
|
|
|
|
|
You really took my solution?!
Maxwell Chen
|
|
|
|
|
May be you need to use CStdioFile instead of CFile ?
CStdioFile csf;
CFileException cfe;
CString str;
CStringArray csa;
csf.Open(_T("E:\\myfile.txt"), CFile::modeRead, &cfe);
while(csf.ReadString(str))
{
csa.Add(str);
}
AfxMessageBox(csa.GetAt(0));
Nobody can give you wiser advice than yourself. - Cicero
.·´¯`·->Rajesh<-·´¯`·.
Codeproject.com: Visual C++ MVP
|
|
|
|
|
I need to call the function AfxBeginThread in one of my function (say, myFunc). myFunc should receive a function name which should become a thread.
My code is as follows:
void myFunc(void* fthread)
{
HANDLE cmd_thread;
CWinThread* pCmdThread = AfxBeginThread(fthread, NULL);
cmd_thread = pCmdThread->m_hThread;
..........
}
But i get an error that: cannot convert parameter one of AfxBeginThread from void* to unsigned int(_cdecl*)(void *).....
What should the parameter type be?
|
|
|
|
|
gReaen wrote: myFunc should receive a function name which should become a thread
In your example, you don't provide a function name but a void pointer. What do really need to do ? To provide the name of the function (so, a string containing the function name, like "MyThreadFunc") or a function pointer ?
The first option is much more complicated because there is no way for the compiler to get a function pointer just with its name (its like trying to get a variable with a string containing its name).
For the second option, that's much more easier: you just pass the function pointer that can be passed to the AfxBeginThread.
So, can you be more clear on that point ?
|
|
|
|
|
To expand on what Cedric has said...
Why is MyFunc taking a void? Would it not be a good idea to make the parameter of the same pointer type as AfxBeginThread is wanting? That was you can avoid errors in other places in your code.
This is from VC++6 - The prototype may have changed in later versions, but I doubt it. Just be sure to check.
oid myFunc(AFX_THREADPROC pfnThreadProc, LPVOID pParam)
{
HANDLE cmd_thread;
CWinThread* pCmdThread = AfxBeginThread(pfnThreadProc, pParam);
cmd_thread = pCmdThread->m_hThread;
..........
}
It's rare for me to not pass a parameter to a thread - after all, it needs to know why it exists... Or at least a window handle to post an "I'm done" message.
To answer your next question, functions you pass must have the following prototype to be valid for AfxBeginThread:
typedef UINT (AFX_CDECL *AFX_THREADPROC)(LPVOID);
eg:
UINT AFX_CDECL MyThread (void *)
{
Sleep (10000);
return 97;
}
I hope that helped.
Iain.
|
|
|
|
|
I had to send a function pointer. Thanks for pointing that out.
|
|
|
|
|
Can anyone teach me how to plot a graph using MFC? I have a simple program which plot graph using CPoint. However CPoint can only store integer. The graph size is 150 x 550 but I have over a million points to plot. Any idea?
Thanks
Kennis
|
|
|
|
|
Check my sig, I developed a chart control. I don't know what the performances will be with such number of points but it would be a good test.
Anyway over one million points seems extremly large. Why do you need so much data ? So many points is useless because your screen won't be able to display them all.
|
|
|
|
|
Kennis wrote: I have a simple program which plot graph using CPoint. However CPoint can only store integer.
To implement your own struct (or class) to replace CPoint , such as:
struct FPoint {
float x;
float y;
};<pre>
<blockquote class="FQ"><div class="FQA">Kennis wrote:</div>The graph size is 150 x 550 but I have over a million points to plot. Any idea?</blockquote>
To store all the <code>FPoint</code> objects in a container (such as <code>std::list</code>), and sort it to find out the maximal and minimal values to get the range, in order to normalize it or to shrink it with a multiplier to fit your scale (150 x 550).
<div class="ForumSig"> Maxwell Chen</div>
|
|
|
|
|
Unable to modify / delete my previous reply.
Maxwell Chen
|
|
|
|
|
How do you collapse millions of points into 150 x 550 = 82500 ones?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
CPallini wrote: How do you collapse millions of points into 150 x 550 = 82500 ones?
Maybe he's pushing them reeeeeeeeeeally hard.
Iain.
|
|
|
|
|
There are some overlaps ...
Maxwell Chen
|
|
|
|