|
In that case you need to capture the mouse button down event and then figure out whether the mouse is over your icon, from the mouse co-ordinates. If it is then call your file opening code.
It's time for a new signature.
|
|
|
|
|
This is the best approach.
Since you're using MFC, you will get the mouse coordinates from the point parameter of the CWnd::OnLButtonDown handler.
By you I mean rajapp.
«_Superman_»
I love work. It gives me something to do between weekends.
Microsoft MVP (Visual C++)
modified on Thursday, April 29, 2010 11:46 AM
|
|
|
|
|
Thank you for the help ,on using LbuttonDown() i can now click on the icon position. Now i am working on finding how many pixels i scrolled as when the image is scrolled, the pixel position changes and the LbuttonDown() click position also changes as it calculates the top corner as always (zero,zero) regardless of the image scrolled.
|
|
|
|
|
Welcome to Windows programming!
It's time for a new signature.
|
|
|
|
|
rajapp wrote: in my view class i added an icon and it shows.
An icon in the toolbar?
rajapp wrote: now i want to click on it and a file opens.
What file?
rajapp wrote: so how to add mouse click control to that icon?
That's how Windows normally operates.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Man who follows car will be exhausted." - Confucius
|
|
|
|
|
any file... i mean a location i have to give.
|
|
|
|
|
If you are talking about an icon in the toolbar, just assign the icon an ID and then provide a message handler for that ID.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Man who follows car will be exhausted." - Confucius
|
|
|
|
|
no this icon is in resource file.
|
|
|
|
|
I have created a threaded function that downloads files!
However on some files the download finishes, but the thread dies after the recv loop without intervention by me.
do
{
WriteFile(File, Data, (DWORD)BytesReceived, NULL, NULL);
BytesReceived = recv(IPv4, Data, DEFAULT_BUFLEN, 0);
}
while (Download->BytesDownloaded < Download->BytesToDownload
&& Download->DownloadState == Download->ACTIVE);
Tu(L"Hello!");
CloseHandle(File);
http://i.microsoft.com/global/en/publishingimages/sitebrand/microsoft.gif
http://www.codeproject.com/App_Themes/Std/Img/logo225x90.gif
http://www.google.com.eg/images/nav_logo8.png
These are some of the files the loop finishes, but the thread doesn't continue after the while line.
Tu is just a function for MessageBox, it never emerges.
Any clues appreciated!
|
|
|
|
|
Fareed Rizkalla wrote: These are some of the files the loop finishes, but the thread doesn't continue after the while line.
Tu is just a function for MessageBox, it never emerges.
Hi again. I don't know what this means, either the loop finished or not. What exactly is the problem?
Fareed Rizkalla wrote: Any clues appreciated!
Looks like you are working on your HTTP client again. There is important code missing in your last post, the variables for your exit condition BytesDownloaded and DownloadState are never initialised or updated: It's an endless while loop and there is no error handling.
/Moak
|
|
|
|
|
It's a Linked List!
User enters the URL gets parsed put in CDownload structure.
BytesDownloaded, DownloadState are variables belonging to that structure.
CDownload Object is passed to the Download thread.
Where it processes values obtained earlier puts together an HTTP request and ships it out to the server.
Then it receives an HTTP response processing it and adding missing information to the CDownload Object.
Since it's a download manager, such data can be used later on if the user chooses to pause his download and resume it later.
|
|
|
|
|
Sorry, without knowing your code and the exact problem I don't know how to help. There are so many places where something can go wrong, is it the application logic, network handling or thread synchronisation....
|
|
|
|
|
I really understand Moak, but you keep blaming me everytime! I'm glad we had that talk.
|
|
|
|
|
Swearing is also a programming language
|
|
|
|
|
Call GetExitCodeThread from the main thread to get the current status of the thread.
This way you will know whether the thread is still active or has exited.
|
|
|
|
|
So I created a timer that executes GetExitCodeThread(GetCurrentThread(),&TEC).
How can I retrieve the error code stored in TEC.
Am I calling the GetExitCodeThread in an appropriate position or have I misplaced the function.
|
|
|
|
|
Call the function from the main thread and not from within the thread.
Pass the handle of the thread that CreateThread returned as the first parameter.
The exit code returned is just a number that you can either print to the screen, show in a message box or compare using an if statement.
|
|
|
|
|
What are the differences between _beginthread and CreateThread?
|
|
|
|
|
They are implemented by different libraries.
CreateThread is the Windows user mode API for creating threads.
_beginthread is a C-runtime implementation.
_beginthread internally calls CreateThread .
Both functions return the handle to the newly created thread.
So you can use either one.
|
|
|
|
|
Since this is a Win32 app their is no easy way to check like in a Console app.
But I did a nice little workaround, launching a timer that checks for the thread error.
The thread doesn't close, but it seems to freeze.
Returning ERROR_NO_MORE_ITEMS (0x103) during that period.
Then it completes successfully returning 0x0 for ERROR_SUCCESS.
|
|
|
|
|
Do you know a way to lookup up what the cause of ERROR_NO_MORE_ITEMS is?
|
|
|
|
|
Is this returned by GetExitCodeThread ?
|
|
|
|
|
No! Like I said before, because it's GUI app.
Created a timer event that monitors how the process is doing.
Those URLs I posted are currently causing the thread to freeze after the receiving loop finishes.
During that the timer checks the thread error state, receiving ERROR_NO_MORE_ITEMS.
After 3-4 minutes have elapsed the thread finishes, the timer event returns thread has exited successfully.
Do you think increasing thread priority would do the trick. Or would it hurt my application?
I tried looking up ERROR_NO_MORE_ITEMS for details, but was unsuccessful however the only thing I managed to dig up was the Windows Error Codes.
|
|
|
|
|
i got a C code for FIR from the nuhertz filter software, am not sure if am using it correctly. i implemented it as shown below and also did a manual calculation using coeffiecients and the answers do not match at all.instead of reducing the amplitude, its the other way round. am not sure if anyone has used this before
int setic ;
float initvar;
for (int i = 0;i<=146; i++)
{
for(int z = 0;z<=8;z++)
{
if (z == 0)
{
setic = 1;
initvar = raw_data[i][1];
}
else
{
setic = 2;
}
results2[i][1] = DigFil_fir(raw_data[i][1],initvar,setic) ;
}
}
float DigFil_fir(float invar,float initval, int setic)
{
float sumnum; int i;
static float delay[9] = {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0};
static float znum[9] = {
6.205e-02,9.553e-02,.1241,.1433,.1501,.1433,.1241,9.553e-02,6.205e-02
};
if (setic==1){
for (i=0;i<=8;i++) delay[i] = 1.0*initval;
return initval;
}
else{
sumnum=0.0;
for (i=0;i<=7;i++){
delay[i] = delay[i+1];
sumnum += delay[i]*znum[i];
}
delay[8] = invar;
sumnum += delay[8]*znum[8];
return sumnum;
}
}
modified on Thursday, April 29, 2010 11:11 AM
|
|
|
|
|
Hi,
The variable 'initvar' is declared within the 'if' code, therefore it would not be available to pass to the function 'DigFil_fir'. This code should not compile, unless you have another 'initvar' declared, if so this is your problem.
Hope this helps,
Ali
|
|
|
|