a simple VC++ scrolling display
-
I want to begin to learn how to do visual gui programs in VC++. I am good with c/c++. To get myself starting I would like to write an app that simply receives messsages over a tcp connection and displays them to a scrolling window. The window should automatically scroll down as new messages are added. But the user should have the ability to scroll back as well. Any suggestions on how to approach this? Also, as a follow on project I'll want to display data in row/column format and be able to update cells as changes are received over a tcp connection. Thanks
-
I want to begin to learn how to do visual gui programs in VC++. I am good with c/c++. To get myself starting I would like to write an app that simply receives messsages over a tcp connection and displays them to a scrolling window. The window should automatically scroll down as new messages are added. But the user should have the ability to scroll back as well. Any suggestions on how to approach this? Also, as a follow on project I'll want to display data in row/column format and be able to update cells as changes are received over a tcp connection. Thanks
Do you know how to do the "receive tcp message" stuff (code and implementation) ? if you know how to do that, then the rest is quite simple. Create a worker thread that will receive the data; when the data is received, send a message to the main UI thread ( Create a simple UI thread (main UI, do not create and manage UI in the worker thread)that contains either a CListBox or a CListCtrl. implement handlers for the messages sent by the worker thread. good luck. M.
Watched code never compiles.
-
Do you know how to do the "receive tcp message" stuff (code and implementation) ? if you know how to do that, then the rest is quite simple. Create a worker thread that will receive the data; when the data is received, send a message to the main UI thread ( Create a simple UI thread (main UI, do not create and manage UI in the worker thread)that contains either a CListBox or a CListCtrl. implement handlers for the messages sent by the worker thread. good luck. M.
Watched code never compiles.
Thanks. Anything I need to be careful to select or not to select when I create the project in VC? When you say implement handlers, do you mean each message gets it own handle and is processed from that perspective?
-
I want to begin to learn how to do visual gui programs in VC++. I am good with c/c++. To get myself starting I would like to write an app that simply receives messsages over a tcp connection and displays them to a scrolling window. The window should automatically scroll down as new messages are added. But the user should have the ability to scroll back as well. Any suggestions on how to approach this? Also, as a follow on project I'll want to display data in row/column format and be able to update cells as changes are received over a tcp connection. Thanks
I would suggest you forget about the TCP stuff until you have mastered the text viewer and scrolling. Whether you use simple Win32 or MFC this can be quite a challenge and TCP would only complicate matters. Start with a view window and add the scroll features then add a mechanism to send some lines of text, say up to 100 and see that your scrolling is working. Then when you have all those features under control you can start to add the more complex pieces of the TCP feed.
It's time for a new signature.
-
I want to begin to learn how to do visual gui programs in VC++. I am good with c/c++. To get myself starting I would like to write an app that simply receives messsages over a tcp connection and displays them to a scrolling window. The window should automatically scroll down as new messages are added. But the user should have the ability to scroll back as well. Any suggestions on how to approach this? Also, as a follow on project I'll want to display data in row/column format and be able to update cells as changes are received over a tcp connection. Thanks
Alan Kurlansky wrote:
To get myself starting I would like to write an app that simply receives messsages over a tcp connection and displays them to a scrolling window.
Hi Alan! I suggest an alternative approach without multi threading to get up and running quickly: 1) create a new MFC project and add a
CListBox
control: Using the CListBox control[^], this comes with a working example dialog project. 2) Add a TCP client socket such asCAsyncSocket
to your dialog: Socket Programming with MFC (Part 1)[^], this will also explain which initialisation is needed in your application. 3) Add a button to your dialog so you can connect/disconnect to a server. The client will tell you in its OnReceive()[^] handler when more data is available, you can add this to the listbox with AddString()[^] and scroll listbox withSendMessage(WM_VSCROLL, SB_BOTTOM, NULL)
. There are many ways to communicate between socket and GUI, for starters you could give the socket object a pointer to your dialog. For example with a methodOnReceiveText()
that you call from your socket whenever a full text line is available:// Add text to end of listbox and remove old text
void CMyDlg::OnReceiveText(const char* szText)
{
m_listbox.AddString(szText);
m_output.SendMessage(WM_VSCROLL, SB_BOTTOM, NULL);
while(m_output.GetCount() > 10000) m_output.DeleteString(0);
}Hope this helps :) /Moak
Webchat in Europe :java: Now with 26% more Twitter