gpt4 book ai didi

c++ - 每个循环可能会或可能不会运行 CDialog 的无限线程

转载 作者:行者123 更新时间:2023-11-28 08:26:57 24 4
gpt4 key购买 nike

我正在处理一个 MFC 项目,我需要一个单独的循环,该循环将连续运行或每隔几秒运行一次,并且每次它可能需要也可能不需要运行对话框以从用户那里获取一些输入。我正在考虑使用 AfxBeginThread,但据我了解,它并不真正适用于连续循环。

最佳答案

不要这样做。您不能只是在工作线程中撕掉对话。它们只能在主线程中启动,因为它们需要消息泵才能运行。

如果您想要的只是每隔几秒触发的某种信号,那么您需要的是 timer .将定时器设置为您想要的定时器周期,当您的主线程处理了所需的 WM_TIMER 消息时,您可以弹出一个对话框并执行您的操作。

如果你想让你的工作线程做一些工作,这可能包括也可能不包括向用户询问信息,那么你需要考虑让你的线程使用 PostMessage()要向主线程发送消息,通过向用户询问数据来在主线程中处理该消息,然后将信号与输入数据一起发送回工作线程。完成最后一点的一种方法是调用 QueueUserAPC()从带有工作线程句柄的主线程和一个指向对新输入的数据执行某些操作的函数的指针。

关于c++ - 每个循环可能会或可能不会运行 CDialog 的无限线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3703320/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com