【问题标题】:Doing multiple tasks at once? (combining a GUI related function to carryout some process)同时执行多项任务? (结合一个GUI相关的功能来执行一些过程)
【发布时间】:2010-12-01 09:32:40
【问题描述】:

如果标题听起来“关闭”,我很抱歉,但进一步详细说明,这是我的问题 - 基本上我已经写了一个简单的 Winsock server 在连接的客户端之间传递信息(文本消息)(这是控制台应用程序)。现在对于这个程序,我尝试将我从win32api 学到的知识与client 程序 结合起来。现在有点超前了,我继续写了 UI 的基本外观,但现在我不知道如何将两者结合起来?据我了解( :| ),控制台应用程序从上到下依次运行,而 UI 不断在屏幕上绘制窗口并等待发生某些事情。所以最后要说到点子上了,我该如何结合这些呢???。我对此感到很反感。

【问题讨论】:

    标签: c++ winapi user-interface console-application winsock


    【解决方案1】:

    GUI 通过事件驱动的消息循环工作。该消息循环将传入事件分派给函数调用。因此,如果您按下按钮,则会调用一个函数,然后该函数可以调用例如网络send-函数。如果您需要发送(或接收)大量数据,您应该为网络内容创建一个单独的线程和消息循环,以便 GUI 保持响应。

    【讨论】:

    • 在哪里可以找到有关线程的更多信息?您会向初学者推荐什么?。
    • 如果你只传输少量数据,而且你的网络延迟不太高,你也可以不使用线程。
    • 您可以通过 Win32 API 使用重叠 I/O。根据您的心态,这可能比线程更容易或更难。通过重叠 I/O,Windows 将在数据可用时调用您。另一个解决方案是WSAAsyncSelect,它告诉 Windows 向您的 HWND 发送消息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 2014-03-01
    • 1970-01-01
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多