这是主对话框类中加入线程回调函数声明:
static UINT CALLBACK ThreadProc(LPVOID);
ThreadProc的函数体为:
UINT CtestDlg::ThreadProc(LPVOID lp)
{
show *dlg=new show;
dlg->Create(IDD_DIALOG1,NULL);
dlg->ShowWindow(TRUE);
return 0;
}
下面是按键响应函数,并创建线程
void CtestDlg::OnBnClickedrun()
{
// TODO: 在此添加控件通知处理程序代码
UINT count=100;
CWinThread* pThread=AfxBeginThread((AFX_THREADPROC)ThreadProc,(LPVOID)count,THREAD_PRIORITY_NORMAL,0,0,0);
}
不知道该加什么才能达到目的,谢谢
把dlg设置为全局变量还是不行啊,怎么回事
我在主对话框CtestDlg.cpp的开头用show *dlg;
把以前的show *dlg=new show;也改为dlg=new show还是不行
首先你现在的修改肯定是正确的。如果这样还不行,其中原因不是很清楚。不过实现你需要的功能还是可以的,因为这种功能我也做过,思路是这样的:show *dlg可以在CtestDlg类中定义,dlg=new show和dlg->Create(IDD_DIALOG1,NULL);放在对话框初始化函数中,然后你定义一结构,里面包含CtestDlg类指针,之后定义该结构变量,把结构变量中的CtestDlg类指针赋值为主窗口对话框指针,最后把定义的结构变量最为参数调用ThreadProc,利用该参数中的dlg调用ShowWindow(TRUE);显示对话框。还有一个问题,ThreadProc函数前面怎么会有CtestDlg::,
ThreadProc函数应该是全局函数呀。
其实楼下的方法不错,还是比较简单,再结合你们以前说的定为全局变量,这样就能实现了...
我用mfc多线程新建对话框,对话框只是闪一下就消失了,该线程就结束了,不...
或,变量dlg要为全局变量 你程序中的是局部变量,生存期showwindow后就结束了
mfc多线程中弹出对话框的问题
由于创建模态对话框的线程是非正常终止,有它构建的对话框没有被销毁,这时,WINDOWS由于将该进程的所有资源必须收回,因此这个窗口也将被迫关闭,并产生一个错误提示框!解决办法:设法不要让主线程返回,可以在主线程要退出的上一行代码处调用:WaitForSingleObject(hThread\/*通过CreateThread得到的其它线程的...
mfc创建一个死循环线程时。对话框会被占用。刚点到对话框编辑控件上...
因为如果工作和界面合用同一个线程的话,一个函数(例如上面的某个事件处理程序)工作量很大,很长时间都运行不完的话会一直占用界面线程,界面会一直是卡死的,不能操作,自然也就没法点击第二个按钮。
如何在MFC程序运行中自动弹出对话框并关闭
一、问题的提出 编写一个耗时的单线程程序:新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下:void CSingleThreadDlg::OnSleepSixSecond(){ Sleep(6000); \/\/延时6秒 } 编译并...
MFC 如何关闭非模态对话框 多线程
线程在工作,和你要关闭窗口有什么关系?你说的是关闭了窗口了,你delete只是针对子窗口对象时new出来的情况,具体问题具体方法。不能单一的看网上的做法。你要在关闭窗口时让线程也停止,必须让线程自己退出或者直接强制结束。
MFC中模态对话框会不会阻断线程的运行?对回调函数有影响吗?
DoModal的对话框只对主线程有影响,对分线程没有影响,但如果涉及线程间通信,会被挂起,也就是回调函数会暂时无响应。追问我做了一下测试,它对主线程也是没有影响的,他只是阻断用户界面交互。对回调函数没有影响(我做了一个触发器),可见它并没有阻断朱线程的消息循环 追答消息循环当然还响应啊,...
VC 创建多线程的问题
还有就是你对话框的 button不要用默认按钮,你要新拖个按钮来弄。对话框创建时自带的2个按钮(‘确定’,‘取消’),都有默认的响应函数了,更改也不难,不过不是这里重点,楼主暂时忽视就行。---以下部分只是补充,可以无视,不是重点--- 暂时理解成mfc是一个单线程程序,只要不是你建立的线程...
MFC CreateThread 显示对话框
由上面我想到一种在工作线程中弹出的对话框的办法:1. 转递视图类句柄给线程函数:HWND HView;…… \/\/ 获取视图类句柄 CreateThread(NULL,0,RecvThread, HView ,0,&dwThreadId);2. 在线程函数中通过句柄获取视图类指针,获取数据给视图类发送自定义消息:DWORD WINAPI RecvThread(LPVOID lpPar...
MFC在其他线程中刷新一个对话框中的EDIT BOX的数据
方法一:直接修改,代码:UINT TestThreadFun( LPVOID pParam ){ \/\/假设你的对话框类叫CMFCTestDlg \/\/把参数传过来的this指针转换成对话框类指针 \/\/然后就可以直接访问类成员了 \/\/当然EditBox的关联变量要是pulic的,也可以专门写个函数来更新 CMFCTestDlg *pDlg = (CMFCTestDlg *)pParam; for ...
如何在一个线程中显示你所建的对话框?
createthread创建的线程没有消息循环,如果要这么用需要自己调用 GetMessage、TranslateMessage、DispatchMessage,不过这样也不能使用DoModal来创建对话框;如果用MFC要自己派生一个CWinThread的类 class CMyThread : public CWinThread { DECLARE_DYNCREATE(CMyThread)...};然后用 AfxBeginThread(RUNTIME_CLASS(...