如何自动关闭模式对话框?不能用SetTimer!!!!,在线等.... 程序先开一个线程A,之后弹出一个模式对话框B,在线程A结束后,要求自动关闭对话框B,我在线程A中使用SendMessage(),发送一个WM_CLOSE消息给B,结果出现非法操作提示(0X.....内存不能为读)!!!,我想实现的是程序的一个安装过程,先弹出一个模式对话框提示用户正在进行文件复制,在复制线程完成后,要自动关闭该对话框,之后继续其他工作. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我认为你发送一个WM_CLOSE消息过去的方式是没错的,出内存错可能是因为你b窗口上的代码问题,最好还是要解决掉,你可以在B上重载CLOSE消息处理函数,看收到这消息后程序做什么了,一般这种错误都是内存越界造成的,你仔细检查下。 部分代码如下,请帮忙看看:单击一个菜单项德执行函数如下:void CMainFrame::OnGo() { // TODO: Add your command handler code herepwork=AfxBeginThread((AFX_THREADPROC)work,this);//开线程CD2 m_dlg;//HWND hh=m_dlg.m_hWnd;m_dlg.DoModal(); 打开一个提示模式对话框//这里需要关闭对话框CD2//继续打开一个新对话框CD1CD1 m_ff;m_ff.DoModal();}#include "stdafx.h"#include "work.h"#include "MainFrm.h"#include "xxz.h"UINT work(LPVOID pParam){CMainFrame *plg=(CMainFrame *)pParam;plg->aa="efg";Sleep(2000);plg->GetActiveWindow()->PostMessage(WM_CLOSE,0,0);//这里出事return 0;}另外我无论如何也不能在线程里使用任意一个对话框对象CD1,CD2,在线程从cpp中#include "D2.h"在线程函数work中,以构建D2对象,即提示对话框标识符IDD_DIALOG2未声明,不解??? 部分代码如下,请帮忙看看:单击一个菜单项的执行函数如下:void CMainFrame::OnGo() { // TODO: Add your command handler code herepwork=AfxBeginThread((AFX_THREADPROC)work,this);//开线程CD2 m_dlg;//HWND hh=m_dlg.m_hWnd;m_dlg.DoModal(); 打开一个提示模式对话框//这里需要关闭对话框CD2//继续打开一个新对话框CD1CD1 m_ff;m_ff.DoModal();}#include "stdafx.h"#include "work.h"#include "MainFrm.h"#include "xxz.h"UINT work(LPVOID pParam){CMainFrame *plg=(CMainFrame *)pParam;plg->aa="efg";Sleep(2000);plg->GetActiveWindow()->PostMessage(WM_CLOSE,0,0);//这里出事return 0;}另外我无论如何也不能在线程里使用任意一个对话框对象CD1,CD2,在线程的.cpp中#include "D2.h"在线程函数work中,一构建D2对象,即提示对话框标识符IDD_DIALOG2未声明,编译不过,不解??? plg->GetActiveWindow()->PostMessage(WM_DESTROY,0,0);// pwork=AfxBeginThread((AFX_THREADPROC)work,this);//开线程CD2 m_dlg; // 这里是个局部的变量,你在线程咋发消息给它啊!!//HWND hh=m_dlg.m_hWnd;m_dlg.DoModal(); plg->GetActiveWindow() 估计你是想获取当前CD2 m_dlg; 的指针吧,它不对的!!!建议你把CD2 m_dlg;做为 CMainFrame的成员,plg->m_dlg.PostMessage(WM_DESTROY,0,0);// http://blog.csdn.net/wanglei5695312/archive/2010/05/31/5635805.aspx 请教各位关于编辑框的一个问题 菜鸟提问,请大家帮我看一个类 想学数据库编程,希望各位大大给介绍本好书! 我是做编译器和IDE的,发展前途在哪里? 如何融合图片? 这段代码有什么问题? 请问高手,在单文档中如何读取ASP文件并在视图中显示出来?在线等! GDI+中,是否有类似于SetWindowRgn的函数?显示不规则区域的时候速度如何? 如何在VC中实现打印文本、超文本以及图象的功能?如果这个做不出来我就要被老板赶走了呀! (200分)问题〈2〉怎样去掉停靠时的闪烁。 如何清除用CClientDC画的线 请问高手,怎样才能把CDC类的LineTo函数画出的线清除?(不是用背景色清除)
单击一个菜单项德执行函数如下:
void CMainFrame::OnGo()
{
// TODO: Add your command handler code here
pwork=AfxBeginThread((AFX_THREADPROC)work,this);//开线程CD2 m_dlg;
//HWND hh=m_dlg.m_hWnd;
m_dlg.DoModal();
打开一个提示模式对话框
//这里需要关闭对话框CD2
//继续打开一个新对话框CD1
CD1 m_ff;
m_ff.DoModal();
}
#include "stdafx.h"
#include "work.h"
#include "MainFrm.h"
#include "xxz.h"
UINT work(LPVOID pParam)
{
CMainFrame *plg=(CMainFrame *)pParam;
plg->aa="efg";
Sleep(2000);
plg->GetActiveWindow()->PostMessage(WM_CLOSE,0,0);//这里出事
return 0;
}另外我无论如何也不能在线程里使用任意一个对话框对象CD1,CD2,
在线程从cpp中#include "D2.h"
在线程函数work中,以构建D2对象,即提示对话框标识符IDD_DIALOG2未声明,不解???
单击一个菜单项的执行函数如下:
void CMainFrame::OnGo()
{
// TODO: Add your command handler code here
pwork=AfxBeginThread((AFX_THREADPROC)work,this);//开线程CD2 m_dlg;
//HWND hh=m_dlg.m_hWnd;
m_dlg.DoModal();
打开一个提示模式对话框
//这里需要关闭对话框CD2
//继续打开一个新对话框CD1
CD1 m_ff;
m_ff.DoModal();
}
#include "stdafx.h"
#include "work.h"
#include "MainFrm.h"
#include "xxz.h"
UINT work(LPVOID pParam)
{
CMainFrame *plg=(CMainFrame *)pParam;
plg->aa="efg";
Sleep(2000);
plg->GetActiveWindow()->PostMessage(WM_CLOSE,0,0);//这里出事
return 0;
}另外我无论如何也不能在线程里使用任意一个对话框对象CD1,CD2,
在线程的.cpp中#include "D2.h"
在线程函数work中,一构建D2对象,即提示对话框标识符IDD_DIALOG2未声明,编译不过,不解???
CD2 m_dlg; // 这里是个局部的变量,你在线程咋发消息给它啊!!
//HWND hh=m_dlg.m_hWnd;
m_dlg.DoModal(); plg->GetActiveWindow() 估计你是想获取当前CD2 m_dlg; 的指针吧,它不对的!!!建议你把CD2 m_dlg;做为 CMainFrame的成员,
plg->m_dlg.PostMessage(WM_DESTROY,0,0);//