|
The most useful piece of information will be where your assert is and what it says. Click 'Debug' when it happens and post the ASSERT that is failing and where it is.
Christian
|
|
|
|
|
christian ... wtf ... where is ur logon and all??
---
"every year we invent better idiot proof systems and every year they invent better idiots"
|
|
|
|
|
Ironically, considering how voiciferous I am in suggesting we ban anonymous posts, I often post anonymously when I get to the end of a lengthy reply and realise I have not been automatically logged on. Today, my PC was offline, as was everyone's except for the network admin, who was fixing my PC while I read Code Project on his. So I deliberately didn't give him my cookie.
Christian
The content of this post is not necessarily the opinion of my yadda yadda yadda.
To understand recursion, we must first understand recursion.
|
|
|
|
|
I'm writing a program that requires to check the message queue (or event..i don't know...)frequently. These messages or events are not from VC library. I need to wait for these messages or events from a DRIVER. Once the user make any changes on the device, the DRIVER will notify the program to do something. So, the changes can happen anytime.......
In DOS version, I used a infinite loop to do this:
e.g.
int main()
{
*
*
*
for ( ;; )
{
check message();
*
*
}
}
But in MFC programming, there is no main function, so how can I check the message queue very frequently? And what function can I use?
|
|
|
|
|
sounds odd to do it by polling the device message queue in effect
does the driver generate a driver-defined windows message? if so you could handle that notification with a wm_message or wm_command handler in the message map for the app
---
"every year we invent better idiot proof systems and every year they invent better idiots"
|
|
|
|
|
yes....the driver can generate message. But I don't know how to make the program get the notification of these messages.....can you give me an example??? Or what function I should use?? WindowProc()??? or what.....
thanks alot...
|
|
|
|
|
yes....the driver can generate message. But I don't know how to make the program get the notification of these messages.....can you give me an example??? Or what function I should use?? WindowProc()??? or what.....I just don't know how to do and where to start.
thanks alot...
|
|
|
|
|
ok ... first what messages does the driver produce?
---
"every year we invent better idiot proof systems and every year they invent better idiots"
|
|
|
|
|
Actually it is a touch screen driver. Once the user touch the screen, it generates a message and the program shows its coordinate. It can happen anytime.
The message is something liked (WM_USER + 0x0A) or 0x0B....etc
|
|
|
|
|
groovy
so now follow manfred's instructions below and voila
(i was gonna post all that stuff next)
---
"every year we invent better idiot proof systems and every year they invent better idiots"
|
|
|
|
|
All these messages will wait in the message queue.......right....then I need to get them from the queue...
|
|
|
|
|
not really
your message handler function will be called when the message arrives
just process the message in as quick a way as possible (you dont want to be taking ages in a (pseudo-)interrupt handler
---
"every year we invent better idiot proof systems and every year they invent better idiots"
|
|
|
|
|
e.g.
In my MIDI-Callback function (like your Device-Driver-Message) I post a Message to the
Message-Queue of the window that should receive the message with:
PostMessage(WM_MYMESSAGE);
You have to:
#define WM_USER + 100 WM_MYMESSAGE
(in your Resource.h)
afx_msg void OnMyMessage();
(in the destination window's MessageMap MyClass.h)
ON_MESSAGE(WM_MYMESSAGE, OnMyMessage)
(in the destination window's MessageMap MyClass.cpp)
before posting the Message.
You have to do it manually (VC++5) for the Class-Wizard does not support User-Messages
to be created...
In OnMyMessage() which is directly called by your driver-message you can write your Code now.
Hope that helps
Manfred
|
|
|
|
|
Sorry.....i cannot make it work....
I put the #define WM_MYMESSAGE WM_USER+0x0D in resource.h
then i put afx_msg void OnMyMessage(); in the MyProgramView.h
then ON_MESSAGE(WM_MYMESSAGE, OnMyMessage) in the MyProgramView.cpp
then i put
void MyProgramView::OnMyMessage()
{
AfxMessageBox("yes");
}
but no message box pop up when i touch the screen.....did I make anything wrong? How about the PostMessage or GetMessage stuff....
Also, should I put some parameters in the OnMyMessage()? For example, lparam or wparam.
Thanks
|
|
|
|
|
Hello,
I'm trying to read the MP3-Tag out of a MP3-File.
this is the code that doesn't seem to work:
char id3[128];
.
. open file and set file-position to the beginning of the mp3-tag (works fine)
.
fread(id3,sizeof(char),128,mp3_file);
In a hex-editor the end of this mp3-file looks like this (the mp3-tag is at the last 128byte of the file)
TAGBullion.......................Millencolin...................UnknownAB.....................1999comment.......................+
After the tag is read, i'd like to split it and get the information out of it.
Actually the "fread"-call should read in the 128 bytes, but does only the first
ten ("TAGBullion").
Can anyone help me?
thanks in advance
|
|
|
|
|
maybe your fread reads ok but the byte after the 1st text block is a zero maybe and so the string appears to end there even though it doesn't actually ... remember that strings in c/c++ are zero-terminated
---
"every year we invent better idiot proof systems and every year they invent better idiots"
|
|
|
|
|
Thanks for your reply.
The fread-function reads the tag correct (all 128byte are read),
but I can access only the the first ten("TAGBullion").
I thnk you're right, the 11th character seems to be a zero.
But how can I display and use the complete string then?
|
|
|
|
|
You might want to create a struct like this:
typedef struct MP3TAG {
LPSTR Title[x];
LPSTR Album[y];
....
}
and use that to read from the file.
"das leid schlaft in der maschine" -Einstürzende Neubauten
|
|
|
|
|
I'm trying to construct a SQL select query in the Open method of my CDaoRecordset derived class. What I'd like to do is this:
CMyRecordset* pMyRecordset = new CMyRecordset();
try
{
CString sqlStr = _T("SELECT DISTINCT Column FROM MyTable");
pMyRecordset->Open(dbOpenDynaset, sqlStr);
...
When I execute this, it complains that Column is not a member of the recordset. It is the name of the column in MyTable, however. So, I tried replacing Column with m_Column (the name of the member in the recordset). This results in a run-time exception stating: "Too few parameters. Expected 1".
Any suggestions for getting this to work?
Thanks.
Paul Ebert
|
|
|
|
|
ummm
all i can see is that column is a reserved word
maybe change the name of the column to mycolumn in the db and try
"SELECT DISTINCT mycolumn FROM mytable"
---
"every year we invent better idiot proof systems and every year they invent better idiots"
|
|
|
|
|
actually, "column" is not what I used, but rather "SessionId" (the name of the column). So, that's not it. Any other ideas? Or, any suggestions for where to look for help (in the way of documentation)?
Thanks.
Paul
|
|
|
|
|
Can anyone tell me what is the function of the following things:
_EXPORT
_PRIVATE
for example, _PRIVATE void initial(....) or _EXPORT xxxx ABC(...)
Also....
Do you know anything about the following data types:
LPARAM
LRESULT
WPARAM
The description in the HELP file cannot help me to understand.
Thanks.....
|
|
|
|
|
_export and _private are obsolte keywords as far as i know from the win16 days when doing dll bits
lparam, lresult, wparam are just macros (in effect) that map to underlying data types to allow transparent changes to the underlying types used, for example, wparam used to be a 16-bit parameter passed to a windows function in win3.x days ... in win32+ it became a 32-bit parameter ... if you used a native int type you would have to change your code when you moved platforms ... using the wparam type means you dont (unless you do wierd things with packed bit fields or something)
---
"every year we invent better idiot proof systems and every year they invent better idiots"
|
|
|
|
|
This is the real problem: detect the status of a call (determining the HCALL handle and using lineGetCallStatus) of a child process (created using CreateProcess) from the parent process.
At least I'd like to intercept TAPI messages (can't use PeekMessage?).
That's because the child process is a special program I can't avoid to launch to connect to internet, and when it finds a "fast busy", I need to re-launch it (since this situation isn't managed by this child process).
Since this situation can show more than 120 times (!!!), I need to automatize this task.
THANKS.
|
|
|
|
|
This is the real problem: detect the status of a call (determining the HCALL handle and using lineGetCallStatus) of a child process (created using CreateProcess) from the parent process.
At least I'd like to intercept TAPI messages (can't use PeekMessage?).
That's because the child process is a special program I can't avoid to launch to connect to internet, and when it finds a "fast busy", I need to re-launch it (since this situation isn't managed by this child process).
Since this situation can show more than 120 times (!!!), I need to automatize this task.
THANKS.
|
|
|
|