Hooking up a GUI to a console application

B

Bobrick

Hi.

I'm trying to create a GUI for a console application I have (written by
someone else, but with permission to use it). The console application
gathers MIDI data from a port, and returns the data in the form of an
std::vector<unsigned char>.

What I need to do is get this console application to trigger different
buttons to light up on a GUI depending on the contents of the
std::vector<unsigned char> (which is called "message"), but the console
application depends on being called forever, or until the user hits a
key to cancel.

My problem is, I'm not sure how to have the function loop forever
without crashing the application, or alternatively I need to know how I
can have a key press stop the function doing what its doing and go back
to being idle.

Can anyone point me in the right direction?
 
J

John Carson

Bobrick said:
Hi.

I'm trying to create a GUI for a console application I have (written
by someone else, but with permission to use it). The console
application gathers MIDI data from a port, and returns the data in
the form of an std::vector<unsigned char>.

What I need to do is get this console application to trigger different
buttons to light up on a GUI depending on the contents of the
std::vector<unsigned char> (which is called "message"), but the
console application depends on being called forever, or until the
user hits a key to cancel.

My problem is, I'm not sure how to have the function loop forever
without crashing the application, or alternatively I need to know how
I can have a key press stop the function doing what its doing and go
back to being idle.

Can anyone point me in the right direction?


This is not covered by standard C++ and you should ask in a newsgroup
concerned with the platform you are targeting.

The simplest approach is probably to create two threads; one would run the
console code largely unchanged and the other would run the GUI. Then you
just have to choose one of several approaches for communicating between the
two threads.
 
M

Michael DOUBEZ

Bobrick a écrit :
Hi.

I'm trying to create a GUI for a console application I have (written by
someone else, but with permission to use it). The console application
gathers MIDI data from a port, and returns the data in the form of an
std::vector<unsigned char>.

What I need to do is get this console application to trigger different
buttons to light up on a GUI depending on the contents of the
std::vector<unsigned char> (which is called "message"), but the console
application depends on being called forever, or until the user hits a
key to cancel.

My problem is, I'm not sure how to have the function loop forever
without crashing the application, or alternatively I need to know how I
can have a key press stop the function doing what its doing and go back
to being idle.

Can anyone point me in the right direction?

Sure, the door is just here:
http://www.parashift.com/c++-faq-lite/how-to-post.html#faq-5.9

Now concerning your problem that depends on the design of the program,
on which OS it runs and how should the final product be working.

The usual solution when using such an external program is to start it in
a thread and parsing I/O for command if needed. If you have POSIX
implmentation of popen, the pstream library is a good stating point.
http://pstreams.sourceforge.net/


Michael
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top