|
Anu_Bala wrote: Initially i declared pos =0;
Initially its working also. Did you checked whether the index go beyond 59 when you get bogus values?
Anu_Bala wrote: One question regarding forum:
In last answer u get one line from my post and asked question for that(grey line ).How u get that??
While writing reply, The previous message will be displayed above in blue color. Select the lines you want to quote and click "Quote Selected Text" button.
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
Jijo raj wrote: Initially its working also. Did you checked whether the index go beyond 59 when you get bogus values?
No the index showing values between 0 and 59 only. Only the array value is getting changed.
Im just confused .How it happens like this.
If i didnot invoke second timer(dialog class),the clock shows the correct needle position.No problem occurs.
But when i invoked this dialog timer ,after 55 seconds invoked of second timer..The needle get distorted.When i debug,i found that array values is getchanged.
In second timer(dialog class) i code like this
void CReplay::OnTimer(UINT nIDEvent)
{
CListCtrl *pCtrl = (CListCtrl*)GetDlgItem(IDC_REPLAYLIST);
char ListBoxStr[50];
CString now;
CTime time;
static int j=1;
int index = 0;
pCtrl->DeleteAllItems();
for(int i=0;i<nosize;i++)
{
sprintf(ListBoxStr,"%d",i+1);
pCtrl->InsertItem(i,(CString)ListBoxStr);
sprintf(ListBoxStr,"%s",rptime[i]);
pCtrl->SetItemText(i,1,(CString)ListBoxStr);
}
pCtrl->SendMessage(WM_VSCROLL,MAKELPARAM(SB_BOTTOM,0),NULL);
CDialog::OnTimer(nIDEvent);
}
Anu
|
|
|
|
|
Anu_Bala wrote: When i debug,i found that array values is getchanged.
Make your array const. Then probably during compilation itself you can find the part which modifies the array.
const STRIG CirTab[] = {
BTW, you're using this array for getting the sin and cos values. right? why can't you get it by calling sin() and cos() . Does that cause a huge performance overhead?
Well, whats the signature of STRIG struct? Is member datatypes are sufficient to hold the values? If they are not enough, you'll get bogus values.
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
Jijo raj wrote: whats the signature of STRIG struct? Is member datatypes are sufficient to hold the values?
typedef struct
{
SHORT sin;
SHORT cos;
} STRIG;
This is my structure definition
Anu
|
|
|
|
|
Short is enough to hold you're values. Did you change that array to const ? So that the values cannot be modified. Just try.
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
Yes I got it...
I put const for array.
its working..
Thank you so much.
Thanks
Anu
|
|
|
|
|
Anu_Bala wrote: its working..
Wow!!! Its party time.
Regards,
Jijo.
_____________________________________________________
http://weseetips.com[ ^] Visual C++ tips and tricks. Updated daily.
|
|
|
|
|
You are welcome. Thnks.
Anu
|
|
|
|
|
While it likely has nothing to do with your problem, your code needs a few changes:
CString ListBoxStr;
for(int i = 0; i < nosize; i++)
{
ListBoxStr.Format("%d", i+1);
int n = pCtrl->InsertItem(i, ListBoxStr);
ListBoxStr.Format("%s", rptime[i]);
pCtrl->SetItemText(n, 1, ListBoxStr);
}
"Love people and use things, not love things and use people." - Unknown
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
I am using vc++ dialog based application.I have two dialogs.in the second dialog i have an editbox to give a camera ip.what i want is when i give the ip in the edit box in second dialog,the vlc control in first dialog should play it..any code..
|
|
|
|
|
EN_SETFOCUSor EN_CHANGE are not helpful?
|
|
|
|
|
Is there any way to achieve the following syntax:
typedef int nothrow;
class my_class {
public:
template<typename T> void *search(int what);
};
template<typename T> void *my_class::search(int what) {throw "error";}
template<> void *my_class::search<nothrow>(int what) {return 0;}
int main() {
my_class c;
c.search<nothrow>(42);
c.search(42);
}
MSVC8 "could not deduce the template argument for 'T'". I tried changing the declaration to template<typename T = void> void *search(int what); but unfortunately "default template arguments are only allowed on class templates."
Thanks for your time.
|
|
|
|
|
|
Hi All,
If you, from a command prompt, enter "NSLOOKUP <enter>", your system's default name server (name and address) are echoed to the output window. Does anybody know how the command determines this? I'm coding in C++.
Thanks in advance.
- Dale
|
|
|
|
|
I am having an exact same code that I use in two applications, but in one application it is using more time to complete than the other. In one application it completes at 413Hz while in another application it completes in 280Hz. I checked to see if they r running at different loads while executing that code, but its not the case. Here is the code -
BYTE *buf1_ptr;
BYTE *buf2_ptr;
buf1_ptr = buf_f;
buf2_ptr = buf_b;
for ( i=0; i < total ; i = i + 1 )
{
if (*(buf1_ptr)>=*(buf2_ptr))
*(buf1_ptr) = *(buf1_ptr)-*(buf2_ptr);
else
*(buf1_ptr) = 0;
buf1_ptr++;
buf2_ptr++;
}
thts all it is doing, but I am not sure why there is difference in execution time . The 'total' is same in both applications.
thanks
PKNT
|
|
|
|
|
how many times did you time them?
|
|
|
|
|
many times, both in debug and release modes.... I still dont understand why its like tht....
PKNT
|
|
|
|
|
There are several possible explanations. For example, if your code is in a small application, it may fit into the cache and be executed without having to read memory. (The cache is in the CPU, but memory is on external chips which take longer to read.) This would run faster.
A larger application wouldn't all fit into the cache, so it would have to read from memory more often, which would be slower.
A similar effect can occur with small/large amounts of data.
If your code is by itself in a function, the compiler may assign register variables to your pointers, which are fast. If the code is embedded in a larger function, the registers may be assigned to other variables, which would slow down your loop.
Another possible explanation: If one of the applications has significantly more TRUE values for the if statement, it will do many more times as much work, which will be slower.
|
|
|
|
|
Is there is a way I can use assembly code (with SSE instructions) in VC6, like we do in Visual Studio.NET?? Since I am doing BYTE subtraction, can I do parallel subtraction using processor cache efficiently and reducing the time taken by the loop?? Or is there any other efficent way to do this loop while reducing the time taken for execution??
thanks
PKNT
|
|
|
|
|
You can use assembly code with SSE instructions in VS6. Since the subtraction is conditional, that may give you a problem doing several of them in parallel.
You can reduce the time taken by doing loop unrolling [^] The basic idea is to do as much computation as you can in a row before branching. This lets the compiler do operand prefetching and out-of-order instruction execution.
|
|
|
|
|
Hi guys,
I am trying to design a chat application using windows sockets.I am using a LAN based internet connection.I can connect to other systems within the LAN.How do i connect to another system in the internet which has connected to the net through LAN or a proxy?
|
|
|
|
|
I've been using Microsoft's MSDN example[^] as a starting point for my menu. This has been a bit frustrating, since some of the code simply doesn't work: SetMenuItemInfo() fails in their example until you set the cbSize of the MENUITEMINFO structure, which is explained in a different MSDN article.
Rather than using the MYITEM structure they do, I have created a class for my menu objects. Since my menu is created dynamically, I don't populate the menu structure when receiving the WM_CREATE message as they do in the example, but I am backpacking a pointer to a class item onto the MENUITEMINFO structure when menu items are created, like so:
MenuItem * myItem = &item;
MENUITEMINFO mii;
mii.fMask = MIIM_FTYPE | MIIM_DATA;
mii.fType = MFT_OWNERDRAW;
mii.dwItemData = (ULONG_PTR) myItem;
mii.cbSize = sizeof(mii);
SetMenuItemInfo(menu, item.itemID, FALSE, &mii);
In my function to handle the WM_MEASUREITEM message, I can access all of the class data from the pointer contained in the itemData member of the LPMEASUREITEMSTRUCT:
MenuItem *myItem = (MenuItem *) lpmis->itemData;
HDC hdc = GetDC(hwnd);
HFONT hfntOld = (HFONT)SelectObject(hdc, myItem->itemFont);
Microsoft use this exact same strategy when handling the WM_DRAWITEM message: they access the application-specific info from the itemData member of LPDRAWITEMSTRUCT. My implementation is the exact same as the example:
MenuItem *myItem = (MenuItem *) lpdis->itemData;
...
ExtTextOut(lpdis->lpdis->hDC,
x,
y,
ETO_OPAQUE,
&lpdis->rcItem,
myItem->itemLabel,
myItem->itemLabelLen,
NULL)
Sadly this strategy doesn't seem to work: any attempt to access the class items results in a crash. Is there some other sort of initialization I need to do that is missing from the example to ensure the pointer is passed along to the LPDRAWITEMSTRUCT? All examples of user-drawn menus that I've found on the site are MFC based. Here's hoping someone out there has some experience doing this in win32.
I'm also curious to find out if this may be an issue with the api that came with the mingw compiler that I'm using to compile and run my code...
Thanks in advance for any help or suggestions.
~g
|
|
|
|
|
How is your MenuItem class allocated? If you are storing pointers to a stack-alloated object, by the time you get to it in your handlers, it will have gone out of scope and you will have pointers to invalid memory.
Peace!
-=- James Please rate this message - let me know if I helped or not!<hr></hr> If you think it costs a lot to do it right, just wait until you find out how much it costs to do it wrong! Remember that Professional Driver on Closed Course does not mean your Dumb Ass on a Public Road! See DeleteFXPFiles
|
|
|
|
|
Thanks James... that must be it! I've made the following modification, but I'm still getting the same result...
MenuItem * myItem = (MenuItem *) LocalAlloc(LMEM_FIXED, sizeof(MenuItem)+256);
myItem = &item;
MENUITEMINFO mii;
ZeroMemory(&mii, sizeof(mii));
mii.cbSize = sizeof(mii);
mii.fMask = MIIM_FTYPE | MIIM_DATA;
mii.fType = MFT_OWNERDRAW;
mii.dwItemData = (ULONG_PTR) myItem;
The function containing this code receives a MenuItem object as a parameter (item). Should I be doing this allocation elsewhere?
Thanks again...
Greg
|
|
|
|
|
Is there a reason you're using LocalAlloc? it's obsolete. HeapAlloc supersedes LocalAlloc. And then operator new is recommended for c++ anyway. Try using new
|
|
|
|