|
|
|
ACtually,the other parts are all ready.The right Operation just wait the buffer filled with the welcome voice...I just want the way to do it.But thank you at all,I will check TAPI later.Thank you.
|
|
|
|
|
hi,
how do i get the information of the files present inside a folder,that is the list of the files.
Regards
FarPointer
|
|
|
|
|
See FindFirstFile , FindNextFile , and FindClose .
Dozens of code examples in articles and comments in this forum already answer this question
|
|
|
|
|
In continuation with Blake V Miller
u can use
CFileFind, CFileFind::FindFile ,CFileFind::FindNextFile <br />
|
|
|
|
|
well thanx i did it using those functins .
|
|
|
|
|
Try Tom Serface CFileFindEx[^]
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
|
|
|
|
|
Hi,
I'm asked to write an application which should
1-listen on a phone line ,
2-in response to a call gives user some options and services corresponding to some digits (like: Please press 1, if you want a car! )and
3-ask him/her to press a digit if he/she wants a service
4-act on his/her option selection.
Any clue for a start , please. Where or what technology shoul I look for? TAPI? anything links?
Thank you very much.
|
|
|
|
|
TAPI would be good, and you also need to determine if you are supporting multiple lines, in which case you need to go higher end with a voice card like one from Dialogic http://www.intel.com/design/network/products/telecom/index.htm[^] because a modem is less reliable and only handles one call at a time.
Try to stick with TAPI, it will probably make your application more portable to different hardware and easier to write in the first place.
If you want to see a data/fax/voice application I helped write over 1o years ago, then go here and download the sample, although it works only with modems, as I recall... http://www.v3inc.com/[^]
Spend the money and time and read this book, too...
Windows Telephony Programming: A Developer's Guide to TAPI
http://www.amazon.ca/exec/obidos/ASIN/0201634503/702-8429569-7691232[^]
|
|
|
|
|
Use the TAPI protocol and that will do all for u ,
additionaly u need a card that lets u decode the
DTMF key tones during the conversation .
One of my coulige did if before 2 years using the TAPI.
Vikas Amin
Embin Technology
Bombay
vikas.amin@embin.com
|
|
|
|
|
Hey, thanks in advance for the help.
I am taking over a project that someone else originally designed some time ago and I haven't worked in C++ for a long time. It's a tabbed dialog application.
On one dialog there are several bitmaps (basically status lights). These each have member variables which are used to show/hide them.
I've added a new bitmap control (from the toolbar) and tied it in to one of the existing light bitmaps.
If I compile and run everything works fine. Now when I add a member variable to it through the Class Wizard, it will compile but on run it gives a debug assertion failure and crashes out.
It looks like the only additions being made to the code by Class Wizard are the member variable declaration (CStatic) and the DDX statement. Each of these are in the same places as the other declarations and DDX statements.
Yet, the debug assertion failure occurs.
Any ideas? Thanks. Jim
|
|
|
|
|
SublimeRide wrote: ...on run it gives a debug assertion failure and crashes out.
Which doesn't mean a whole lot until you indicate what line of what file asserted.
"Take only what you need and leave the land as you found it." - Native American Proverb
|
|
|
|
|
David thanks a lot for the quick response! I'm not at work anymore so I'll have to check tomorrow and update the thread. I thought it might be something obvious someone has come across when adding member variables. It's obviously not. I'll update tomorrow.
thanks,
Jim
|
|
|
|
|
Generally, if you actually go the line of code in MFC where the assert occurs, you'll see what the problem is.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Are you using threads? Are you doing any operations on the controls before the window for them was created?
John
|
|
|
|
|
John,
The project is multithreaded. And no operations are being done prior to them being created (that I can tell right now). The error is occuring before oninitdialog finishes.
Thanks, Jim
|
|
|
|
|
Are you creating the dialog in a thread that is not the main application thead? If so you will have a lot of problems with MFC. The doc view arcitecture stores its tracking information for windows and views using thread local storage as a result things views and windows must be created only in thet main application thread if they are to have any interaction with each other (even a parent window counts). As a result of all these problems I write my multithreased apps so that the gui is completly handled in the main application thread and I create a thread pool to run my background operations. I use the thread pool class from this site that uses functors operator() as the jobs.
John
|
|
|
|
|
John,
I really should clarify something here. The only reason I'm saying this project is multithreaded is because the project settings are set to multithreaded. I haven't been in this program long enough to know for sure. I'll be working on this program a lot more over the next few weeks, so I'll be able to provide more detailed information.
Jim
Also, just a side note, I created this static bitmap control while viewing the dialog it goes in. I also tried another method, copying an existing bitmap control on the same dialog. The dialog runs fine as long as I don't add a member variable to the bitmap control. As soon as I do this, even if I don't do anything with the member variable, the program asserts.
|
|
|
|
|
Have you changed the order of things in your OnInitDialog as the base class must be called before any UpdateData() calls?
John
|
|
|
|
|
John, here's a look at the call stack. There is an updatedata() call. It looks like it's firing before OnInitDialog. If this is the problem then why wouldn't it affect other controls?
CWnd::SubclassWindow(HWND__ * 0x00c605c2) line 3866
DDX_Control(CDataExchange * 0x0012e654, int 1131, CWnd & {CWnd hWnd=0x00c605c2}) line 628 + 12 bytes
RunningDlg::DoDataExchange(CDataExchange * 0x0012e654) line 42
CWnd::UpdateData(int 0) line 3109
CDialog::OnInitDialog() line 677 + 10 bytes
RunningDlg::OnInitDialog() line 284
AfxDlgProc(HWND__ * 0x003705e8, unsigned int 272, unsigned int 12846602, unsigned int 12846602) line 35 + 14 bytes
USER32! 77d67b5b()
USER32! 77d6cf23()
USER32! 77d571b9()
USER32! 77d5b7e5()
USER32! 77d6ce12()
USER32! 77d45cc9()
USER32! 77d45ce8()
CWnd::DefWindowProcA(unsigned int 272, unsigned int 12846602, long 0) line 1000 + 32 bytes
CWnd::Default() line 249
CDialog::HandleInitDialog(unsigned int 12846602, unsigned int 12846602) line 621 + 8 bytes
CWnd::OnWndMsg(unsigned int 272, unsigned int 12846602, long 0, long * 0x0012ea60) line 1815 + 17 bytes
CWnd::WindowProc(unsigned int 272, unsigned int 12846602, long 0) line 1585 + 30 bytes
AfxCallWndProc(CWnd * 0x0012f7c4 {RunningDlg hWnd=0x003705e8}, HWND__ * 0x003705e8, unsigned int 272, unsigned int 12846602, long 0) line 215 + 26 bytes
AfxWndProc(HWND__ * 0x003705e8, unsigned int 272, unsigned int 12846602, long 0) line 368
USER32! 77d67b5b()
USER32! 77d6ce12()
USER32! 77d45696()
USER32! 77d58273()
5000000e()
|
|
|
|
|
Ok guys, thanks for all the suggestions. Interestingly, the error is occuring after several levels of code on the DDX for another variable completely. The DDX statements are:
void RunningDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(RunningDlg)
DDX_Control(pDX, IDC_QT_STATUS_OFF, m_testit); *** my addition **
DDX_Control(pDX, IDC_MUTE, m_Mute);
DDX_Control(pDX, IDC_VIEW_LOG, m_ViewLogButton);
DDX_Control(pDX, IDC_LOG_STATUS, m_LogStatusIndicator);
DDX_Control(pDX, IDC_STATUS, m_Status);
DDX_Control(pDX, IDC_LAST_SYNC, m_LastSync);
DDX_Control(pDX, IDC_SCHED_EVENTS, m_EventList); ** problem **
//}}AFX_DATA_MAP
}
The line in wincore.cpp where the failure is occuring is ASSERT(FALSE);
Is this a debug setting designed to prevent additions? Maybe I need to take this project off debug mode to further develop it?
Here's the whole function in wincore.cpp:
/////////////////////////////////////////////////////////////////////////////
// Extra CWnd support for dynamic subclassing of controls
BOOL CWnd::SubclassWindow(HWND hWnd)
{
if (!Attach(hWnd))
return FALSE;
// allow any other subclassing to occur
PreSubclassWindow();
// now hook into the AFX WndProc
WNDPROC* lplpfn = GetSuperWndProcAddr();
WNDPROC oldWndProc = (WNDPROC)::SetWindowLong(hWnd, GWL_WNDPROC,
(DWORD)AfxGetAfxWndProc());
ASSERT(oldWndProc != (WNDPROC)AfxGetAfxWndProc());
if (*lplpfn == NULL)
*lplpfn = oldWndProc; // the first control of that type created
#ifdef _DEBUG
else if (*lplpfn != oldWndProc)
{
TRACE0("Error: Trying to use SubclassWindow with incorrect CWnd\n");
TRACE0("\tderived class.\n");
TRACE3("\thWnd = $%04X (nIDC=$%04X) is not a %hs.\n", (UINT)hWnd,
_AfxGetDlgCtrlID(hWnd), GetRuntimeClass()->m_lpszClassName);
ASSERT(FALSE); ******* this is where it's failing ******
// undo the subclassing if continuing after assert
::SetWindowLong(hWnd, GWL_WNDPROC, (DWORD)oldWndProc);
}
#endif
return TRUE;
}
Any ideas?? Thanks a lot guys. Jim
|
|
|
|
|
SublimeRide wrote: DDX_Control(pDX, IDC_SCHED_EVENTS, m_EventList); ** problem **
In the .rc file, what type of control is IDC_SCHED_EVENTS assigned to? What type of variable is m_EventList ?
SublimeRide wrote: Is this a debug setting designed to prevent additions?
No, it's letting you know that something unexpected was encountered (the code asserted that something should be true but ended up being false).
SublimeRide wrote: Maybe I need to take this project off debug mode to further develop it?
Don't do this until all errors have been removed. The assertions will only fire in debug mode. They compile to nothing in release mode, but that does not mean the cause of the problem has also gone away.
"Take only what you need and leave the land as you found it." - Native American Proverb
|
|
|
|
|
Thanks again.
Some answers:
IDC_SCHED_EVENTS is a list control. It basically has a text list of upcoming events in order.
The member variable m_Eventlist is a control for the list. It is used to add/delete/reorder the lists items.
This functions fine with no assert failures as long as I don't add any member variables to anything on the page.
The variable I added m_test is also a control variable for a static bitmap. I'm only intending to use it to show/hide the bitmap based on a condition (that is not associated with the list control in any way).
I guess what I'm struggling with is the line ASSERT(FALSE); This is a guaranteed failure.
The code above it is:
if (*lplpfn == NULL)
*lplpfn = oldWndProc; // the first control of that type created
#ifdef _DEBUG
else if (*lplpfn != oldWndProc)
{
This code seems to me to be indicating that if I'm in debug mode, and more than one (or a subclassed) control of a particular type is created then this will fail. There is more than one list control (they're on separate dialogs) but why would this fail by adding a member variable to a bitmap control? Just thinking out loud.
Jim
|
|
|
|
|
SublimeRide wrote: IDC_SCHED_EVENTS is a list control.
Looking in the project's resource.h file, does it have a value the same as any other control on that dialog?
If you comment out the DDX_Control(pDX, IDC_SCHED_EVENTS, m_EventList) statement, does the assertion fire?
"Take only what you need and leave the land as you found it." - Native American Proverb
|
|
|
|
|