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

子窗口向父窗口发送消息

方法一:

1.首先要正确设置子窗口的父窗口

2.子窗口发送消息

::PostMessageW(GetParent()->m_hWnd,WM_FIND_STRING_NEXT,WM_FIND_STRING_NEXT_ANSI,(LPARAM)0);

GetParent()->PostMessage(WM_FIND_STRING_NEXT,WM_FIND_STRING_NEXT_UNICODE,(LPARAM)1);

其中WM_FIND_STRING_NEXT为自定义的消息类型,此类型需要和父窗口的消息处理函数关联。

WM_FIND_STRING_NEXT_ANSI,WM_FIND_STRING_NEXT_UNICODE是不同的消息。

自己定义的消息ID

#define  WM_FIND_STRING_NEXT    (WM_USER + 100)
#define WM_FIND_STRING_NEXT_ANSI (WM_USER + 101)
#define WM_FIND_STRING_NEXT_UNICODE (WM_USER + 102)


3.父窗口中,把消息与消息处理函数关联

BEGIN_MESSAGE_MAP(CDiskDlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_MESSAGE(WM_FIND_STRING_NEXT,&CDiskDlg::OnMessageFindString)//把消息与消息处理函数关联,注意添加位置
END_MESSAGE_MAP()


4.在头文件.h中添加函数声明

LRESULT OnMessageFindString(WPARAM wParam, LPARAM lParam);


5.在.cpp中添加消息处理函数的实现

LRESULT CDiskDlg::OnMessageFindString(WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
switch(wParam)
{
case WM_FIND_STRING_NEXT_ANSI:

处理消息1的代码
break;
case WM_FIND_STRING_NEXT_UNICODE:

处理消息2的代码
break;
default: 
;
}
return TRUE;
}

方法二:

1.在父窗口中添加消息处理函数。选中窗口,右击,选Class Wizard,如图

 

选virtual function,找到windowproc,点击右侧按钮add function.会看到overridden virtual functions:下添加成功。若想删除,点击overridden virtual functions:下的windowproc,点击右侧按钮delete function即可删除。

2.在消息处理函数windowproc中处理消息

LRESULT CDiskDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class

  if (message == 你自己的消息ID)
{
处理消息
}
return CDialogEx::WindowProc(message, wParam, lParam);
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值