通过向父亲窗口发送消息,要求其他窗口对其进行销毁

原创 2005年03月03日 11:27:00
通过向父亲窗口发送消息,要求其他窗口对其进行销毁:首先需要定义一个消息用于进行通知,然后在对话框中映射WM_DESTROY消息,在消息处理函数中调用消息发送函数通知其他窗口。在接收消息的窗口中利用ON_MESSAGE映射处理消息的函数,并在消息处理函数中删除对话框对象。相关代码如下:
/*更改对话框的有关文件*/
CTestDlg2::CTestDlg2(CWnd* pParent /*=NULL*/)
	: CDialog(CTestDlg2::IDD, pParent)
{/*m_pParent为一成员变量,用于保存通知窗口的指针,
所以该指针不能是一个临时指针*/
	ASSERT(pParent);
	m_pParent=pParent;
	//{{AFX_DATA_INIT(CTestDlg2)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}
void CTestDlg2::OnOK()
{
	CDialog::OnOK();
	DestroyWindow();
}

void CTestDlg2::OnCancel()
{
	CDialog::OnCancel();
	DestroyWindow();
}

void CTestDlg2::OnDestroy() 
{
	CDialog::OnDestroy();
	/*向其他窗口发送消息,将自身指针作为一个参数发送*/
	m_pParent->PostMessage(WM_DELETE_DLG,);
}

/*在消息接收窗口中添加消息映射*/
/*在头文件中添加函数定义*/
	
/*添加消息映射代码*/
	
END_MESSAGE_MAP()
/*实现消息处理函数*/
LONG CMy53_s1View::OnDelDlgMsg(WPARAM wP,LPARAM lP)
{
	delete ;
	return 0;
}
/*创建对话框*/
void CMy53_s1View::OnTest2() 
{
	CTestDlg2 *dlg=new CTestDlg2(this);
	dlg->Create(IDD_TEST_DLG_2);
	dlg->ShowWindow(SW_SHOW);
}
在这种方法中我们利用消息来进行通知,在Window系统中利用消息进行通知和传递数据的用法是很多的。

同样无模式对话框的另一个作用还可以用来在用户在对话框中的输入改变时可以及时的反映到其他窗口。下面的代码演示了在对话框中输入一段文字,然后将其更新到视图的显示区域中,这同样也是利用了消息进行通知和数据传递。

/*在对话框中取出数据,并向其他窗口发送消息和数据,将数据指针作为一个参数发送*/
void CTestDlg2::OnCommBtn() 
{
	char szOut[30];
	GetDlgItemText(IDC_OUT,szOut,30);
	
}

/*在消息接收窗口中*/
/*映射消息处理函数*/
	

/*在视图中绘制出字符串 m_szOut*/
void CMy53_s1View::OnDraw(CDC* pDC)
{
	CMy53_s1Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
	pDC->TextOut(0,0,"Display String");
	pDC->TextOut(0,20,m_szOut);
}
/*处理通知消息,保存信息并更新显示*/
LONG CMy53_s1View::OnDlgNotifyMsg(WPARAM wP,LPARAM lP)
{
	
	Invalidate();
	return 0;
}

VC 某窗口向其他窗口发送消息实现步骤

    一个工程中,子窗口需要将不同的状态信息上传给其他窗口,以便出现不同的显示。主要实现过程为:1、将其他窗口的窗口句柄设置为全局,并在初始化时赋值;    HWND  hMainWnd ;    ...
  • perddy
  • perddy
  • 2008年02月17日 23:59
  • 4337

VC 向其他进程窗口发送自定义消息

发送端:
  • w839687571
  • w839687571
  • 2014年07月08日 12:34
  • 2839

借助Spy++向指定的窗口发送消息—1

先说说俺做这个工作的背景吧:        我想找一个单词数据库,里面有每个单词对应的中文翻译,但是网上找了好久没有找到,不知道是不是自己输入的关键词不对。实在没有办法就想自己生成一个单词数据库。如果...
  • qiujiahao
  • qiujiahao
  • 2008年08月19日 12:36
  • 5288

如何向窗口发送消息

CWnd类的SendMessage和PostMessage成员函数. 第一步:在头文件中自定义消息,如: #define WM_USER_MSG (WM_USER +100) 第二步:通过类...
  • flydream0
  • flydream0
  • 2012年08月31日 12:03
  • 4099

借助Spy++向指定的窗口发送消息—3

 在1,2部分我已经实现了向单词输入窗口中发送文本(单词),下面我要向翻译软件发送确认消息,相当于我点击“查询按钮”。要发送点击按钮的消息,首先仍然是通过spy找到这个按钮窗口。将spy瞄准器拖放到确...
  • qiujiahao
  • qiujiahao
  • 2008年08月25日 18:39
  • 2997

AHK 窗口信息工具 by 星雨朝霞

#SingleInstance force Gui, Add, GroupBox, x2 y2 w200 h60 , 窗口信息  Gui, Add, Text, x5 y19 w32 h14 , 标题...
  • liuyukuan
  • liuyukuan
  • 2010年04月18日 21:07
  • 1960

html5web通信-跨文档消息传输

//1.html window.onload=function(){ document.getElementById('title').innerHTML='页面在'+document.l...
  • xyy_933
  • xyy_933
  • 2016年05月12日 19:15
  • 341

不同线程之间向对方的窗口发送消息

   第二次阅读了Jeffrey Richter先生的核心编程>>窗口消息部分后,写了篇读书笔记,相同诸位共享,其中有一些不太明白的地方,望各位指出。下面是正文。  如果A线程向B线程创建的窗口发送消...
  • castmoon
  • castmoon
  • 2008年03月10日 20:49
  • 861

vs2010子窗口向父窗口发送消息

vs2010子窗口怎样向父窗口发送消息
  • liyun123gx
  • liyun123gx
  • 2014年03月12日 18:27
  • 2524

C#给其他程序发消息

帮人忙调试个C#给其他程序发消息的程序,搞定后相关关键点如下: 1、相关声明函数,SendMessage可定义两种格式。[DllImport("User32.DLL", CharSet = CharS...
  • feiwei
  • feiwei
  • 2010年05月17日 16:54
  • 2050
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:通过向父亲窗口发送消息,要求其他窗口对其进行销毁
举报原因:
原因补充:

(最多只允许输入30个字)